{"version":3,"file":"jsts.js","sources":["../src/Array.js","../src/Number.js","../src/Math.js","../src/extend.js","../src/org/locationtech/jts/util/NumberUtil.js","../src/java/lang/IllegalArgumentException.js","../src/java/lang/Long.js","../src/java/lang/Double.js","../src/java/lang/Comparable.js","../src/java/lang/Cloneable.js","../src/java/util/Comparator.js","../src/java/io/Serializable.js","../src/java/lang/RuntimeException.js","../src/inherits.js","../src/org/locationtech/jts/util/AssertionFailedException.js","../src/org/locationtech/jts/util/Assert.js","../src/org/locationtech/jts/geom/Coordinate.js","../src/hasInterface.js","../src/java/util/Iterator.js","../src/java/util/Collection.js","../src/java/util/IndexOutOfBoundsException.js","../src/java/util/List.js","../src/java/util/NoSuchElementException.js","../src/java/util/OperationNotSupported.js","../src/java/util/ArrayList.js","../src/org/locationtech/jts/geom/CoordinateList.js","../src/org/locationtech/jts/geom/Envelope.js","../src/java/lang/Exception.js","../src/org/locationtech/jts/algorithm/NotRepresentableException.js","../src/java/lang/StringBuffer.js","../src/java/lang/Integer.js","../src/java/lang/Character.js","../src/org/locationtech/jts/math/DD.js","../src/org/locationtech/jts/algorithm/CGAlgorithmsDD.js","../src/org/locationtech/jts/algorithm/Orientation.js","../src/java/lang/System.js","../src/org/locationtech/jts/algorithm/HCoordinate.js","../src/org/locationtech/jts/math/MathUtil.js","../src/org/locationtech/jts/algorithm/Distance.js","../src/org/locationtech/jts/geom/CoordinateSequence.js","../src/org/locationtech/jts/geom/CoordinateSequenceFactory.js","../src/org/locationtech/jts/geom/GeometryComponentFilter.js","../src/org/locationtech/jts/geom/Geometry.js","../src/org/locationtech/jts/geom/CoordinateFilter.js","../src/org/locationtech/jts/algorithm/BoundaryNodeRule.js","../src/org/locationtech/jts/geom/CoordinateArrays.js","../src/java/util/Map.js","../src/java/util/SortedMap.js","../src/java/util/Set.js","../src/java/util/HashSet.js","../src/java/util/TreeMap.js","../src/org/locationtech/jts/geom/Lineal.js","../src/java/util/SortedSet.js","../src/java/util/TreeSet.js","../src/java/util/Arrays.js","../src/org/locationtech/jts/geom/Dimension.js","../src/org/locationtech/jts/geom/GeometryFilter.js","../src/org/locationtech/jts/geom/CoordinateSequenceFilter.js","../src/org/locationtech/jts/geom/GeometryCollection.js","../src/org/locationtech/jts/geom/MultiLineString.js","../src/org/locationtech/jts/operation/BoundaryOp.js","../src/org/locationtech/jts/algorithm/Length.js","../src/java/io/PrintStream.js","../src/java/io/StringReader.js","../src/java/text/DecimalFormat.js","../src/java/io/ByteArrayOutputStream.js","../src/java/io/IOException.js","../src/java/io/LineNumberReader.js","../src/org/locationtech/jts/util/StringUtil.js","../src/java/lang/StringBuilder.js","../src/org/locationtech/jts/geom/CoordinateSequences.js","../src/org/locationtech/jts/geom/LineString.js","../src/org/locationtech/jts/geom/Puntal.js","../src/org/locationtech/jts/geom/Point.js","../src/org/locationtech/jts/algorithm/Area.js","../src/org/locationtech/jts/geom/Polygonal.js","../src/org/locationtech/jts/geom/Polygon.js","../src/org/locationtech/jts/geom/MultiPoint.js","../src/org/locationtech/jts/geom/LinearRing.js","../src/org/locationtech/jts/geom/MultiPolygon.js","../src/org/locationtech/jts/geom/util/GeometryEditor.js","../src/org/locationtech/jts/geom/impl/CoordinateArraySequence.js","../src/org/locationtech/jts/geom/impl/CoordinateArraySequenceFactory.js","../src/Map.js","../src/java/util/HashMap.js","../src/org/locationtech/jts/geom/PrecisionModel.js","../src/org/locationtech/jts/geom/GeometryFactory.js","../src/org/locationtech/jts/io/WKTParser.js","../src/org/locationtech/jts/io/WKTWriter.js","../src/org/locationtech/jts/algorithm/LineIntersector.js","../src/org/locationtech/jts/algorithm/RobustLineIntersector.js","../src/org/locationtech/jts/geom/LineSegment.js","../src/org/locationtech/jts/geom/Location.js","../src/org/locationtech/jts/geom/IntersectionMatrix.js","../src/org/locationtech/jts/algorithm/Angle.js","../src/org/locationtech/jts/geom/Triangle.js","../src/org/locationtech/jts/algorithm/distance/PointPairDistance.js","../src/org/locationtech/jts/algorithm/distance/DistanceToPoint.js","../src/org/locationtech/jts/algorithm/distance/DiscreteHausdorffDistance.js","../src/org/locationtech/jts/index/ItemVisitor.js","../src/org/locationtech/jts/algorithm/locate/PointOnGeometryLocator.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeNode.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeLeafNode.js","../src/java/util/Collections.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeBranchNode.js","../src/org/locationtech/jts/index/intervalrtree/SortedPackedIntervalRTree.js","../src/org/locationtech/jts/geom/util/LinearComponentExtracter.js","../src/org/locationtech/jts/index/ArrayListVisitor.js","../src/org/locationtech/jts/algorithm/RayCrossingCounter.js","../src/org/locationtech/jts/algorithm/locate/IndexedPointInAreaLocator.js","../src/org/locationtech/jts/algorithm/PointLocation.js","../src/org/locationtech/jts/geom/GeometryCollectionIterator.js","../src/org/locationtech/jts/algorithm/locate/SimplePointInAreaLocator.js","../src/org/locationtech/jts/algorithm/match/SimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/AreaSimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/HausdorffSimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/SimilarityMeasureCombiner.js","../src/org/locationtech/jts/algorithm/Centroid.js","../src/org/locationtech/jts/algorithm/CGAlgorithms.js","../src/java/util/EmptyStackException.js","../src/java/util/Stack.js","../src/org/locationtech/jts/util/UniqueCoordinateArrayFilter.js","../src/org/locationtech/jts/algorithm/ConvexHull.js","../src/org/locationtech/jts/algorithm/InteriorPointArea.js","../src/org/locationtech/jts/algorithm/InteriorPointLine.js","../src/org/locationtech/jts/algorithm/InteriorPointPoint.js","../src/org/locationtech/jts/index/chain/MonotoneChainSelectAction.js","../src/org/locationtech/jts/index/bintree/NodeBase.js","../src/org/locationtech/jts/index/bintree/Interval.js","../src/org/locationtech/jts/index/quadtree/DoubleBits.js","../src/org/locationtech/jts/index/bintree/Key.js","../src/org/locationtech/jts/index/bintree/Node.js","../src/org/locationtech/jts/index/quadtree/IntervalSize.js","../src/org/locationtech/jts/index/bintree/Root.js","../src/org/locationtech/jts/index/bintree/Bintree.js","../src/org/locationtech/jts/index/chain/MonotoneChain.js","../src/org/locationtech/jts/geomgraph/Quadrant.js","../src/org/locationtech/jts/index/chain/MonotoneChainBuilder.js","../src/org/locationtech/jts/algorithm/RobustDeterminant.js","../src/org/locationtech/jts/algorithm/PointInRing.js","../src/org/locationtech/jts/algorithm/MCPointInRing.js","../src/org/locationtech/jts/algorithm/MinimumBoundingCircle.js","../src/org/locationtech/jts/algorithm/MinimumDiameter.js","../src/org/locationtech/jts/geom/util/GeometryTransformer.js","../src/org/locationtech/jts/densify/Densifier.js","../src/org/locationtech/jts/edgegraph/HalfEdge.js","../src/org/locationtech/jts/edgegraph/MarkHalfEdge.js","../src/org/locationtech/jts/edgegraph/EdgeGraph.js","../src/org/locationtech/jts/dissolve/DissolveHalfEdge.js","../src/org/locationtech/jts/dissolve/DissolveEdgeGraph.js","../src/org/locationtech/jts/dissolve/LineDissolver.js","../src/org/locationtech/jts/algorithm/PointLocator.js","../src/org/locationtech/jts/geomgraph/Position.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChain.js","../src/org/locationtech/jts/geomgraph/index/SweepLineEvent.js","../src/org/locationtech/jts/geomgraph/index/EdgeSetIntersector.js","../src/org/locationtech/jts/geomgraph/index/SegmentIntersector.js","../src/org/locationtech/jts/geomgraph/index/SimpleMCSweepLineIntersector.js","../src/org/locationtech/jts/geomgraph/TopologyLocation.js","../src/org/locationtech/jts/geomgraph/Label.js","../src/org/locationtech/jts/geomgraph/EdgeIntersection.js","../src/org/locationtech/jts/geomgraph/EdgeIntersectionList.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChainIndexer.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChainEdge.js","../src/org/locationtech/jts/geomgraph/Depth.js","../src/org/locationtech/jts/geomgraph/GraphComponent.js","../src/org/locationtech/jts/geomgraph/Edge.js","../src/org/locationtech/jts/geomgraph/Node.js","../src/org/locationtech/jts/geomgraph/NodeMap.js","../src/org/locationtech/jts/geomgraph/EdgeEnd.js","../src/org/locationtech/jts/geom/TopologyException.js","../src/org/locationtech/jts/geomgraph/DirectedEdge.js","../src/org/locationtech/jts/geomgraph/NodeFactory.js","../src/org/locationtech/jts/geomgraph/PlanarGraph.js","../src/org/locationtech/jts/geomgraph/GeometryGraph.js","../src/org/locationtech/jts/index/kdtree/KdNodeVisitor.js","../src/org/locationtech/jts/index/kdtree/KdNode.js","../src/org/locationtech/jts/index/kdtree/KdTree.js","../src/org/locationtech/jts/index/quadtree/NodeBase.js","../src/org/locationtech/jts/index/quadtree/Key.js","../src/org/locationtech/jts/index/quadtree/Node.js","../src/org/locationtech/jts/index/quadtree/Root.js","../src/org/locationtech/jts/index/SpatialIndex.js","../src/org/locationtech/jts/index/quadtree/Quadtree.js","../src/org/locationtech/jts/index/strtree/Boundable.js","../src/org/locationtech/jts/index/strtree/ItemBoundable.js","../src/org/locationtech/jts/util/PriorityQueue.js","../src/org/locationtech/jts/index/strtree/AbstractNode.js","../src/org/locationtech/jts/index/strtree/BoundablePair.js","../src/org/locationtech/jts/index/strtree/AbstractSTRtree.js","../src/org/locationtech/jts/index/strtree/ItemDistance.js","../src/org/locationtech/jts/index/strtree/STRtree.js","../src/org/locationtech/jts/io/GeoJSONParser.js","../src/org/locationtech/jts/io/GeoJSONReader.js","../src/org/locationtech/jts/io/GeoJSONWriter.js","../src/org/locationtech/jts/io/WKTReader.js","../src/org/locationtech/jts/io/OL3Parser.js","../src/org/locationtech/jts/noding/SegmentPointComparator.js","../src/org/locationtech/jts/noding/SegmentNode.js","../src/org/locationtech/jts/noding/SegmentNodeList.js","../src/org/locationtech/jts/noding/Octant.js","../src/org/locationtech/jts/noding/SegmentString.js","../src/org/locationtech/jts/noding/NodableSegmentString.js","../src/org/locationtech/jts/noding/NodedSegmentString.js","../src/org/locationtech/jts/index/chain/MonotoneChainOverlapAction.js","../src/org/locationtech/jts/noding/Noder.js","../src/org/locationtech/jts/noding/SinglePassNoder.js","../src/org/locationtech/jts/noding/MCIndexNoder.js","../src/org/locationtech/jts/noding/ScaledNoder.js","../src/org/locationtech/jts/operation/IsSimpleOp.js","../src/org/locationtech/jts/operation/buffer/BufferParameters.js","../src/org/locationtech/jts/operation/buffer/RightmostEdgeFinder.js","../src/java/util/LinkedList.js","../src/org/locationtech/jts/operation/buffer/BufferSubgraph.js","../src/org/locationtech/jts/geomgraph/EdgeRing.js","../src/org/locationtech/jts/operation/overlay/MinimalEdgeRing.js","../src/org/locationtech/jts/operation/overlay/MaximalEdgeRing.js","../src/org/locationtech/jts/operation/overlay/PolygonBuilder.js","../src/org/locationtech/jts/operation/buffer/BufferInputLineSimplifier.js","../src/org/locationtech/jts/operation/buffer/OffsetSegmentString.js","../src/org/locationtech/jts/operation/buffer/OffsetSegmentGenerator.js","../src/org/locationtech/jts/operation/buffer/OffsetCurveBuilder.js","../src/org/locationtech/jts/operation/buffer/SubgraphDepthLocater.js","../src/org/locationtech/jts/operation/buffer/OffsetCurveSetBuilder.js","../src/org/locationtech/jts/geomgraph/EdgeEndStar.js","../src/org/locationtech/jts/geomgraph/DirectedEdgeStar.js","../src/org/locationtech/jts/operation/overlay/OverlayNodeFactory.js","../src/org/locationtech/jts/noding/OrientedCoordinateArray.js","../src/org/locationtech/jts/geomgraph/EdgeList.js","../src/org/locationtech/jts/noding/SegmentIntersector.js","../src/org/locationtech/jts/noding/IntersectionAdder.js","../src/org/locationtech/jts/operation/buffer/BufferBuilder.js","../src/org/locationtech/jts/noding/NodingValidator.js","../src/org/locationtech/jts/noding/snapround/HotPixel.js","../src/org/locationtech/jts/noding/snapround/MCIndexPointSnapper.js","../src/org/locationtech/jts/noding/InteriorIntersectionFinderAdder.js","../src/org/locationtech/jts/noding/snapround/MCIndexSnapRounder.js","../src/org/locationtech/jts/operation/buffer/BufferOp.js","../src/org/locationtech/jts/geom/util/PolygonExtracter.js","../src/org/locationtech/jts/operation/distance/GeometryLocation.js","../src/org/locationtech/jts/geom/util/PointExtracter.js","../src/org/locationtech/jts/operation/distance/ConnectedElementLocationFilter.js","../src/org/locationtech/jts/operation/distance/DistanceOp.js","../src/org/locationtech/jts/operation/linemerge/EdgeString.js","../src/org/locationtech/jts/planargraph/GraphComponent.js","../src/org/locationtech/jts/planargraph/DirectedEdge.js","../src/org/locationtech/jts/operation/linemerge/LineMergeDirectedEdge.js","../src/org/locationtech/jts/planargraph/Edge.js","../src/org/locationtech/jts/planargraph/DirectedEdgeStar.js","../src/org/locationtech/jts/planargraph/Node.js","../src/org/locationtech/jts/operation/linemerge/LineMergeEdge.js","../src/org/locationtech/jts/planargraph/NodeMap.js","../src/org/locationtech/jts/planargraph/PlanarGraph.js","../src/org/locationtech/jts/operation/linemerge/LineMergeGraph.js","../src/org/locationtech/jts/operation/linemerge/LineMerger.js","../src/org/locationtech/jts/noding/BasicSegmentString.js","../src/org/locationtech/jts/noding/InteriorIntersectionFinder.js","../src/org/locationtech/jts/noding/FastNodingValidator.js","../src/org/locationtech/jts/geomgraph/EdgeNodingValidator.js","../src/org/locationtech/jts/geom/util/GeometryCollectionMapper.js","../src/org/locationtech/jts/operation/overlay/LineBuilder.js","../src/org/locationtech/jts/operation/overlay/PointBuilder.js","../src/org/locationtech/jts/operation/overlay/snap/LineStringSnapper.js","../src/org/locationtech/jts/operation/overlay/snap/GeometrySnapper.js","../src/org/locationtech/jts/precision/CommonBits.js","../src/org/locationtech/jts/precision/CommonBitsRemover.js","../src/org/locationtech/jts/operation/overlay/snap/SnapOverlayOp.js","../src/org/locationtech/jts/operation/overlay/snap/SnapIfNeededOverlayOp.js","../src/org/locationtech/jts/operation/GeometryGraphOperation.js","../src/org/locationtech/jts/operation/overlay/OverlayOp.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeDirectedEdge.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeEdge.js","../src/org/locationtech/jts/operation/polygonize/EdgeRing.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeGraph.js","../src/org/locationtech/jts/operation/polygonize/Polygonizer.js","../src/org/locationtech/jts/operation/relate/EdgeEndBuilder.js","../src/org/locationtech/jts/operation/relate/EdgeEndBundle.js","../src/org/locationtech/jts/operation/relate/EdgeEndBundleStar.js","../src/org/locationtech/jts/operation/relate/RelateNode.js","../src/org/locationtech/jts/operation/relate/RelateNodeFactory.js","../src/org/locationtech/jts/operation/relate/RelateComputer.js","../src/org/locationtech/jts/operation/predicate/RectangleContains.js","../src/org/locationtech/jts/algorithm/RectangleLineIntersector.js","../src/org/locationtech/jts/geom/util/ShortCircuitedGeometryVisitor.js","../src/org/locationtech/jts/operation/predicate/RectangleIntersects.js","../src/org/locationtech/jts/operation/relate/RelateOp.js","../src/org/locationtech/jts/geom/util/GeometryCombiner.js","../src/org/locationtech/jts/operation/union/PointGeometryUnion.js","../src/org/locationtech/jts/geom/util/GeometryExtracter.js","../src/org/locationtech/jts/operation/union/CascadedPolygonUnion.js","../src/org/locationtech/jts/operation/union/UnaryUnionOp.js","../src/org/locationtech/jts/operation/valid/ConnectedInteriorTester.js","../src/org/locationtech/jts/operation/relate/RelateNodeGraph.js","../src/org/locationtech/jts/operation/valid/ConsistentAreaTester.js","../src/org/locationtech/jts/operation/valid/IndexedNestedRingTester.js","../src/org/locationtech/jts/operation/valid/TopologyValidationError.js","../src/org/locationtech/jts/operation/valid/IsValidOp.js","../src/org/locationtech/jts/precision/PrecisionReducerCoordinateOperation.js","../src/org/locationtech/jts/precision/GeometryPrecisionReducer.js","../src/org/locationtech/jts/simplify/DouglasPeuckerLineSimplifier.js","../src/org/locationtech/jts/simplify/DouglasPeuckerSimplifier.js","../src/org/locationtech/jts/simplify/TaggedLineSegment.js","../src/org/locationtech/jts/simplify/TaggedLineString.js","../src/org/locationtech/jts/simplify/LineSegmentIndex.js","../src/org/locationtech/jts/simplify/TaggedLineStringSimplifier.js","../src/org/locationtech/jts/simplify/TaggedLinesSimplifier.js","../src/org/locationtech/jts/simplify/TopologyPreservingSimplifier.js","../src/org/locationtech/jts/triangulate/SplitSegment.js","../src/org/locationtech/jts/triangulate/ConstraintSplitPointFinder.js","../src/org/locationtech/jts/triangulate/NonEncroachingSplitPointFinder.js","../src/org/locationtech/jts/triangulate/quadedge/TrianglePredicate.js","../src/org/locationtech/jts/triangulate/quadedge/Vertex.js","../src/org/locationtech/jts/triangulate/ConstraintVertex.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdge.js","../src/org/locationtech/jts/triangulate/IncrementalDelaunayTriangulator.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdgeLocator.js","../src/org/locationtech/jts/triangulate/quadedge/LastFoundQuadEdgeLocator.js","../src/org/locationtech/jts/triangulate/quadedge/LocateFailureException.js","../src/org/locationtech/jts/triangulate/quadedge/TriangleVisitor.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdgeSubdivision.js","../src/org/locationtech/jts/triangulate/Segment.js","../src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulator.js","../src/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.js","../src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulationBuilder.js","../src/org/locationtech/jts/triangulate/VoronoiDiagramBuilder.js","../src/org/locationtech/jts/linearref/LinearLocation.js","../src/org/locationtech/jts/linearref/LinearIterator.js","../src/org/locationtech/jts/linearref/LocationIndexOfPoint.js","../src/org/locationtech/jts/linearref/LocationIndexOfLine.js","../src/org/locationtech/jts/linearref/LinearGeometryBuilder.js","../src/org/locationtech/jts/linearref/ExtractLineByLocation.js","../src/org/locationtech/jts/linearref/LocationIndexedLine.js","../src/org/locationtech/jts/linearref/LengthIndexOfPoint.js","../src/org/locationtech/jts/linearref/LengthLocationMap.js","../src/org/locationtech/jts/linearref/LengthIndexedLine.js","../src/org/locationtech/jts/operation/union/UnionOp.js","../src/org/locationtech/jts/monkey.js","../src/jsts.js"],"sourcesContent":["/* Polyfill service v3.13.0\n * For detailed credits and licence information see http://github.com/financial-times/polyfill-service\n *\n * - Array.prototype.fill, License: CC0 */\n\nif (!('fill' in Array.prototype)) {\n Object.defineProperty(Array.prototype, 'fill', {\n configurable: true,\n value: function fill(value) {\n if (this === undefined || this === null) {\n throw new TypeError(this + ' is not an object');\n }\n\n var arrayLike = Object(this);\n\n var length = Math.max(Math.min(arrayLike.length, 9007199254740991), 0) || 0;\n\n var relativeStart = 1 in arguments ? parseInt(Number(arguments[1]), 10) || 0 : 0;\n\n relativeStart = relativeStart < 0 ? Math.max(length + relativeStart, 0) : Math.min(relativeStart, length);\n\n var relativeEnd = 2 in arguments && arguments[2] !== undefined ? parseInt(Number(arguments[2]), 10) || 0 : length;\n\n relativeEnd = relativeEnd < 0 ? Math.max(length + arguments[2], 0) : Math.min(relativeEnd, length);\n\n while (relativeStart < relativeEnd) {\n arrayLike[relativeStart] = value;\n\n ++relativeStart;\n }\n\n return arrayLike;\n },\n writable: true\n });\n}\n","Number.isFinite = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value)\n}\n\nNumber.isInteger = Number.isInteger || function (val) {\n return typeof val === 'number' &&\n isFinite(val) &&\n Math.floor(val) === val\n}\n\nNumber.parseFloat = Number.parseFloat || parseFloat\n\nNumber.isNaN = Number.isNaN || function (value) {\n return value !== value // eslint-disable-line\n}\n","Math.trunc = Math.trunc || function(x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x)\n}\n\nMath.log2 = Math.log2 || function(x) {\n return Math.log(x) * Math.LOG2E\n}\n","export default function (target, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) target[key] = source[key]\n }\n}\n","import extend from '../../../../extend';\nexport default function NumberUtil() {}\nextend(NumberUtil.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn NumberUtil;\n\t}\n});\nNumberUtil.equalsWithTolerance = function (x1, x2, tolerance) {\n\treturn Math.abs(x1 - x2) <= tolerance;\n};\n","export default function IllegalArgumentException () {}\n","export default function Long(high, low) {\n this.low = low | 0\n this.high = high | 0\n}\n\nLong.toBinaryString = function (i) {\n var result = ''\n for (var mask = 0x80000000; mask > 0; mask >>>= 1)\n result += (i.high & mask) === mask ? '1' : '0'\n for (var mask = 0x80000000; mask > 0; mask >>>= 1)\n result += (i.low & mask) === mask ? '1' : '0'\n return result\n}","import Long from './Long';\n\nexport default function Double () {}\n\nDouble.isNaN = n => Number.isNaN(n)\nDouble.isInfinite = n => !Number.isFinite(n)\nDouble.MAX_VALUE = Number.MAX_VALUE\n\nif (typeof Float64Array == 'function' &&\n\t typeof Int32Array == 'function') {\n\t// Simple and fast conversion between double and long bits\n\t// using TypedArrays and ArrayViewBuffers.\n\t(function() {\n\t\tvar EXP_BIT_MASK = 0x7ff00000;\n\t\tvar SIGNIF_BIT_MASK = 0xFFFFF;\n\t\tvar f64buf = new Float64Array(1);\n\t\tvar i32buf = new Int32Array(f64buf.buffer);\n\t\tDouble.doubleToLongBits = function (value) {\n\t\t\tf64buf[0] = value;\n\t\t\tvar low = i32buf[0] | 0;\n\t\t\tvar high = i32buf[1] | 0;\n\t\t\t// Check for NaN based on values of bit fields, maximum\n\t\t\t// exponent and nonzero significand.\n\t\t\tif (((high & EXP_BIT_MASK) === EXP_BIT_MASK) &&\n\t\t\t\t((high & SIGNIF_BIT_MASK) !== 0) &&\n\t\t\t\t(low !== 0)) {\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = 0x7ff80000 | 0;\n\t\t\t}\n\t\t\treturn new Long(high, low);\n\t\t};\n\t\tDouble.longBitsToDouble = function (bits) {\n\t\t\ti32buf[0] = bits.low;\n\t\t\ti32buf[1] = bits.high;\n\t\t\treturn f64buf[0];\n\t\t};\n\t})();\n} else {\n\t// More complex and slower fallback implementation using \n\t// math and the divide-by-two and multiply-by-two algorithms.\n\t(function() {\n\t\tvar BIAS = 1023;\n\t\tvar log2 = Math.log2;\n\t\tvar floor = Math.floor;\n\t\tvar pow = Math.pow;\n\t\tvar MAX_REL_BITS_INTEGER = (function () {\n\t\t\tfor (var i = 53; i > 0; i--) {\n\t\t\t\tvar bits = pow(2, i) - 1;\n\t\t\t\tif (floor(log2(bits)) + 1 === i) {\n\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t})();\n\t\tDouble.doubleToLongBits = function (value) {\n\t\t\tvar x, y, f, bits, skip;\n\t\t\tvar sign, exp, high, low;\n\t\n\t\t\t// Get the sign bit and absolute value.\n\t\t\tif (value < 0 || 1 / value === Number.NEGATIVE_INFINITY) {\n\t\t\t\tsign = (1 << 31);\n\t\t\t\tvalue = (-value);\n\t\t\t} else {\n\t\t\t\tsign = 0;\n\t\t\t}\n\t\n\t\t\t// Handle some special values.\n\t\t\tif (value === 0) {\n\t\t\t\t// Handle zeros (+/-0).\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = sign; // exponent: 00..00, significand: 00..00\n\t\t\t\treturn new Long(high, low);\n\t\t\t}\n\t\n\t\t\tif (value === Infinity) {\n\t\t\t\t// Handle infinity (only positive values for value possible).\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = sign | 0x7ff00000; // exponent: 11..11, significand: 00..00\n\t\t\t\treturn new Long(high, low);\n\t\t\t}\n\t\n\t\t\tif (value !== value) {\n\t\t\t\t// Handle NaNs (boiled down to only one distinct NaN).\n\t\t\t\tlow = 0 | 0;\n\t\t\t\thigh = 0x7ff80000; // exponent: 11..11, significand: 10..00\n\t\t\t\treturn new Long(high, low);\n\t\t\t}\n\t\n\t\t\t// Preinitialize variables, that are not neccessarily set by\n\t\t\t// the algorithm.\n\t\t\tbits = 0;\n\t\t\tlow = 0 | 0;\n\t\n\t\t\t// Get the (always positive) integer part of value.\n\t\t\tx = floor(value);\n\t\n\t\t\t// Process the integer part if it's greater than 1. Zero requires\n\t\t\t// no bits at all, 1 represents the implicit (hidden) leading bit,\n\t\t\t// which must not be written as well.\n\t\t\tif (x > 1) {\n\t\t\t\t// If we can reliably determine the number of bits required for\n\t\t\t\t// the integer part,\n\t\t\t\tif (x <= MAX_REL_BITS_INTEGER) {\n\t\t\t\t\t// get the number of bits required to represent it minus 1\n\t\t\t\t\tbits = floor(log2(x)) /* + 1 - 1*/ ;\n\t\t\t\t\t// and simply copy/shift the integer bits into low and high.\n\t\t\t\t\t// That's much faster than the divide-by-two algorithm (saves\n\t\t\t\t\t// up to ~60%).\n\t\t\t\t\t// We always need to mask out the most significant bit, which\n\t\t\t\t\t// is the implicit (aka hidden) bit.\n\t\t\t\t\tif (bits <= 20) {\n\t\t\t\t\t\t// The simple case in which the integer fits into the\n\t\t\t\t\t\t// lower 20 bits of the high word is worth to be handled\n\t\t\t\t\t\t// separately (saves ~25%).\n\t\t\t\t\t\tlow = 0 | 0;\n\t\t\t\t\t\thigh = (x << (20 - bits)) & 0xfffff;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Here, the integer part is split into low and high.\n\t\t\t\t\t\t// Since its value may require more than 32 bits, we\n\t\t\t\t\t\t// cannot use bitwise operators (which implicitly cast\n\t\t\t\t\t\t// to Int32), but use arithmetic operators % and / to\n\t\t\t\t\t\t// get low and high parts. The uppper 20 bits go to high,\n\t\t\t\t\t\t// the remaining bits (in f) to low.\n\t\t\t\t\t\tf = bits - 20;\n\t\t\t\t\t\t// Like (1 << f) but safe with even more than 32 bits.\n\t\t\t\t\t\ty = pow(2, f);\n\t\t\t\t\t\tlow = (x % y) << (32 - f);\n\t\t\t\t\t\thigh = (x / y) & 0xfffff;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// For greater values, we must use the much slower divide-by-two\n\t\t\t\t\t// algorithm. Bits are generated from right to left, that is from\n\t\t\t\t\t// least to most significant bit. For each bit, we left-shift both\n\t\t\t\t\t// low and high by one and carry bit #0 from high to #31 in low.\n\t\t\t\t\t// The next bit is then copied into bit #19 in high, the leftmost\n\t\t\t\t\t// bit of the double's significand.\n\t\n\t\t\t\t\t// Preserve x for later user, so work with f.\n\t\t\t\t\tf = x;\n\t\t\t\t\tlow = 0 | 0;\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\ty = f / 2;\n\t\t\t\t\t\tf = floor(y);\n\t\t\t\t\t\tif (f === 0) {\n\t\t\t\t\t\t\t// We just found the most signigicant (1-)bit, which\n\t\t\t\t\t\t\t// is the implicit bit and so, not stored in the double\n\t\t\t\t\t\t\t// value. So, it's time to leave the loop.\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Count this bit, shift low and carry bit #0 from high.\n\t\t\t\t\t\tbits++;\n\t\t\t\t\t\tlow >>>= 1;\n\t\t\t\t\t\tlow |= (high & 0x1) << 31;\n\t\t\t\t\t\t// Shift high.\n\t\t\t\t\t\thigh >>>= 1;\n\t\t\t\t\t\tif (y !== f) {\n\t\t\t\t\t\t\t// Copy the new bit into bit #19 in high (only required if 1).\n\t\t\t\t\t\t\thigh |= 0x80000;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Bias the exponent.\n\t\t\texp = bits + BIAS;\n\t\n\t\t\t// If the integer part is zero, we've not yet seen the implicit\n\t\t\t// leading bit. Variable skip is later used while processing the \n\t\t\t// fractional part (if any).\n\t\t\tskip = (x === 0);\n\t\n\t\t\t// Get fraction only into x.\n\t\t\tx = value - x;\n\t\n\t\t\t// If some significand bits are still left to be filled and\n\t\t\t// the fractional part is not zero, convert the fraction using\n\t\t\t// the multiply-by-2 algorithm.\n\t\t\tif (bits < 52 && x !== 0) {\n\t\n\t\t\t\t// Initialize 'buffer' f, into which newly created bits get\n\t\t\t\t// shifted from right to left.\n\t\t\t\tf = 0;\n\t\n\t\t\t\twhile (true) {\n\t\t\t\t\ty = x * 2;\n\t\t\t\t\tif (y >= 1) {\n\t\t\t\t\t\t// This is a new 1-bit. Add and count this bit, if not\n\t\t\t\t\t\t// prohibited by skip.\n\t\t\t\t\t\tx = y - 1;\n\t\t\t\t\t\tif (!skip) {\n\t\t\t\t\t\t\tf <<= 1;\n\t\t\t\t\t\t\tf |= 1;\n\t\t\t\t\t\t\tbits++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Otherwise, decrement the exponent and unset\n\t\t\t\t\t\t\t// skip, so that all following bits get written.\n\t\t\t\t\t\t\texp--;\n\t\t\t\t\t\t\tskip = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// This is a new 0-bit. Add and count this bit, if not\n\t\t\t\t\t\t// prohibited by skip.\n\t\t\t\t\t\tx = y;\n\t\t\t\t\t\tif (!skip) {\n\t\t\t\t\t\t\tf <<= 1;\n\t\t\t\t\t\t\tbits++;\n\t\t\t\t\t\t} else if (--exp === 0) {\n\t\t\t\t\t\t\t// Otherwise we've just decremented the exponent. If the\n\t\t\t\t\t\t\t// biased exponent is zero now (-1023), we process a\n\t\t\t\t\t\t\t// subnormal number, which has no impled leading 1-bit.\n\t\t\t\t\t\t\t// So, count this 0-bit and unset skip to write out\n\t\t\t\t\t\t\t// all the following bits.\n\t\t\t\t\t\t\tbits++;\n\t\t\t\t\t\t\tskip = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (bits === 20) {\n\t\t\t\t\t\t// When 20 bits have been created in total, we're done with\n\t\t\t\t\t\t// the high word. Copy the bits from 'buffer' f into high\n\t\t\t\t\t\t// and reset 'buffer' f. Following bits will end up in the\n\t\t\t\t\t\t// low word.\n\t\t\t\t\t\thigh |= f;\n\t\t\t\t\t\tf = 0;\n\t\t\t\t\t} else if (bits === 52) {\n\t\t\t\t\t\t// When 52 bits have been created in total, we're done with\n\t\t\t\t\t\t// low word as well. Copy the bits from 'buffer' f into low\n\t\t\t\t\t\t// and exit the loop.\n\t\t\t\t\t\tlow |= f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (y === 1) {\n\t\t\t\t\t\t// When y is exactly 1, there is no remainder and the process\n\t\t\t\t\t\t// is complete (the number is finite). Copy the bits from\n\t\t\t\t\t\t// 'buffer' f into either low or high and exit the loop.\n\t\t\t\t\t\tif (bits < 20) {\n\t\t\t\t\t\t\thigh |= (f << (20 - bits));\n\t\t\t\t\t\t} else if (bits < 52) {\n\t\t\t\t\t\t\tlow |= (f << (52 - bits));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Copy/shift the exponent and sign bits into the high word.\n\t\t\thigh |= (exp << 20);\n\t\t\thigh |= sign;\n\t\n\t\t\treturn new Long(high, low);\n\t\t};\n\t\tDouble.longBitsToDouble = function (bits) {\n\t\t\tvar x, sign, exp, fract;\n\t\t\tvar high = bits.high;\n\t\t\tvar low = bits.low;\n\t\n\t\t\t// Extract the sign.\n\t\t\tsign = (high & (1 << 31)) ? -1 : 1;\n\t\n\t\t\t// Extract the unbiased exponent.\n\t\t\texp = ((high & 0x7ff00000) >> 20) - BIAS;\n\t\n\t\t\t// Calculate the fraction from left to right. Start\n\t\t\t// off with the 20 lower bits from the high word.\n\t\t\tfract = 0;\n\t\t\tx = (1 << 19);\n\t\t\tfor (var i = 1; i <= 20; i++) {\n\t\t\t\tif (high & x) {\n\t\t\t\t\tfract += pow(2, -i);\n\t\t\t\t}\n\t\t\t\tx >>>= 1;\n\t\t\t}\n\t\t\t// Continue with all 32 bits from the low word.\n\t\t\tx = (1 << 31);\n\t\t\tfor (var i = 21; i <= 52; i++) {\n\t\t\t\tif (low & x) {\n\t\t\t\t\tfract += pow(2, -i);\n\t\t\t\t}\n\t\t\t\tx >>>= 1;\n\t\t\t}\n\t\n\t\t\t// Handle special values.\n\t\t\t// Check for zero and subnormal values.\n\t\t\tif (exp === -BIAS) {\n\t\t\t\tif (fract === 0) {\n\t\t\t\t\t// +/-1.0 * 0.0 => +/-0.0\n\t\t\t\t\treturn sign * 0;\n\t\t\t\t}\n\t\t\t\texp = -1022;\n\t\t\t}\n\t\t\t// Check for +/-Infinity or NaN.\n\t\t\telse if (exp === BIAS + 1) {\n\t\t\t\tif (fract === 0) {\n\t\t\t\t\t// +/-1.0 / 0.0 => +/-Infinity\n\t\t\t\t\treturn sign / 0;\n\t\t\t\t}\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// Nothing special? Seems to be a normal number.\n\t\t\telse {\n\t\t\t\t// Add the implicit leading bit (1*2^0).\n\t\t\t\tfract += 1;\n\t\t\t}\n\t\n\t\t\treturn sign * fract * pow(2, exp);\n\t\t};\n\t})();\n}","export default function Comparable () {}\n","export default function Clonable () {}\n","export default function Comparator () {}\n","export default function Serializable () {}\n","export default function RuntimeException (message) {\n this.name = 'RuntimeException'\n this.message = message\n this.stack = (new Error()).stack\n Error.call(this, message)\n}\n\nRuntimeException.prototype = Object.create(Error.prototype)\nRuntimeException.prototype.constructor = Error\n","export default function (c, p) {\n c.prototype = Object.create(p.prototype)\n c.prototype.constructor = c\n}\n","import extend from '../../../../extend';\nimport RuntimeException from '../../../../java/lang/RuntimeException';\nimport inherits from '../../../../inherits';\nexport default function AssertionFailedException() {\n\tif (arguments.length === 0) {\n\t\tRuntimeException.call(this);\n\t} else if (arguments.length === 1) {\n\t\tlet message = arguments[0];\n\t\tRuntimeException.call(this, message);\n\t}\n}\ninherits(AssertionFailedException, RuntimeException);\nextend(AssertionFailedException.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn AssertionFailedException;\n\t}\n});\n","import extend from '../../../../extend';\nimport AssertionFailedException from './AssertionFailedException';\nexport default function Assert() {}\nextend(Assert.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Assert;\n\t}\n});\nAssert.shouldNeverReachHere = function () {\n\tif (arguments.length === 0) {\n\t\tAssert.shouldNeverReachHere(null);\n\t} else if (arguments.length === 1) {\n\t\tlet message = arguments[0];\n\t\tthrow new AssertionFailedException(\"Should never reach here\" + (message !== null ? \": \" + message : \"\"));\n\t}\n};\nAssert.isTrue = function () {\n\tif (arguments.length === 1) {\n\t\tlet assertion = arguments[0];\n\t\tAssert.isTrue(assertion, null);\n\t} else if (arguments.length === 2) {\n\t\tlet assertion = arguments[0], message = arguments[1];\n\t\tif (!assertion) {\n\t\t\tif (message === null) {\n\t\t\t\tthrow new AssertionFailedException();\n\t\t\t} else {\n\t\t\t\tthrow new AssertionFailedException(message);\n\t\t\t}\n\t\t}\n\t}\n};\nAssert.equals = function () {\n\tif (arguments.length === 2) {\n\t\tlet expectedValue = arguments[0], actualValue = arguments[1];\n\t\tAssert.equals(expectedValue, actualValue, null);\n\t} else if (arguments.length === 3) {\n\t\tlet expectedValue = arguments[0], actualValue = arguments[1], message = arguments[2];\n\t\tif (!actualValue.equals(expectedValue)) {\n\t\t\tthrow new AssertionFailedException(\"Expected \" + expectedValue + \" but encountered \" + actualValue + (message !== null ? \": \" + message : \"\"));\n\t\t}\n\t}\n};\n","import NumberUtil from '../util/NumberUtil';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Cloneable from '../../../../java/lang/Cloneable';\nimport Comparator from '../../../../java/util/Comparator';\nimport Serializable from '../../../../java/io/Serializable';\nimport Assert from '../util/Assert';\nexport default function Coordinate() {\n\tthis.x = null;\n\tthis.y = null;\n\tthis.z = null;\n\tif (arguments.length === 0) {\n\t\tCoordinate.call(this, 0.0, 0.0);\n\t} else if (arguments.length === 1) {\n\t\tlet c = arguments[0];\n\t\tCoordinate.call(this, c.x, c.y, c.z);\n\t} else if (arguments.length === 2) {\n\t\tlet x = arguments[0], y = arguments[1];\n\t\tCoordinate.call(this, x, y, Coordinate.NULL_ORDINATE);\n\t} else if (arguments.length === 3) {\n\t\tlet x = arguments[0], y = arguments[1], z = arguments[2];\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t}\n}\nextend(Coordinate.prototype, {\n\tsetOrdinate: function (ordinateIndex, value) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase Coordinate.X:\n\t\t\t\tthis.x = value;\n\t\t\t\tbreak;\n\t\t\tcase Coordinate.Y:\n\t\t\t\tthis.y = value;\n\t\t\t\tbreak;\n\t\t\tcase Coordinate.Z:\n\t\t\t\tthis.z = value;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new IllegalArgumentException(\"Invalid ordinate index: \" + ordinateIndex);\n\t\t}\n\t},\n\tequals2D: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet other = arguments[0];\n\t\t\tif (this.x !== other.x) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.y !== other.y) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet c = arguments[0], tolerance = arguments[1];\n\t\t\tif (!NumberUtil.equalsWithTolerance(this.x, c.x, tolerance)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (!NumberUtil.equalsWithTolerance(this.y, c.y, tolerance)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t},\n\tgetOrdinate: function (ordinateIndex) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase Coordinate.X:\n\t\t\t\treturn this.x;\n\t\t\tcase Coordinate.Y:\n\t\t\t\treturn this.y;\n\t\t\tcase Coordinate.Z:\n\t\t\t\treturn this.z;\n\t\t}\n\t\tthrow new IllegalArgumentException(\"Invalid ordinate index: \" + ordinateIndex);\n\t},\n\tequals3D: function (other) {\n\t\treturn this.x === other.x && this.y === other.y && (this.z === other.z || Double.isNaN(this.z) && Double.isNaN(other.z));\n\t},\n\tequals: function (other) {\n\t\tif (!(other instanceof Coordinate)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.equals2D(other);\n\t},\n\tequalInZ: function (c, tolerance) {\n\t\treturn NumberUtil.equalsWithTolerance(this.z, c.z, tolerance);\n\t},\n\tcompareTo: function (o) {\n\t\tvar other = o;\n\t\tif (this.x < other.x) return -1;\n\t\tif (this.x > other.x) return 1;\n\t\tif (this.y < other.y) return -1;\n\t\tif (this.y > other.y) return 1;\n\t\treturn 0;\n\t},\n\tclone: function () {\n\t\ttry {\n\t\t\tvar coord = null;\n\t\t\treturn coord;\n\t\t} catch (e) {\n\t\t\tif (e instanceof CloneNotSupportedException) {\n\t\t\t\tAssert.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\");\n\t\t\t\treturn null;\n\t\t\t} else throw e;\n\t\t} finally {}\n\t},\n\tcopy: function () {\n\t\treturn new Coordinate(this);\n\t},\n\ttoString: function () {\n\t\treturn \"(\" + this.x + \", \" + this.y + \", \" + this.z + \")\";\n\t},\n\tdistance3D: function (c) {\n\t\tvar dx = this.x - c.x;\n\t\tvar dy = this.y - c.y;\n\t\tvar dz = this.z - c.z;\n\t\treturn Math.sqrt(dx * dx + dy * dy + dz * dz);\n\t},\n\tdistance: function (c) {\n\t\tvar dx = this.x - c.x;\n\t\tvar dy = this.y - c.y;\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t},\n\thashCode: function () {\n\t\tvar result = 17;\n\t\tresult = 37 * result + Coordinate.hashCode(this.x);\n\t\tresult = 37 * result + Coordinate.hashCode(this.y);\n\t\treturn result;\n\t},\n\tsetCoordinate: function (other) {\n\t\tthis.x = other.x;\n\t\tthis.y = other.y;\n\t\tthis.z = other.z;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable, Cloneable, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn Coordinate;\n\t}\n});\nCoordinate.hashCode = function () {\n\tif (arguments.length === 1 && typeof arguments[0] === \"number\") {\n\t\tlet x = arguments[0];\n\t\tvar f = Double.doubleToLongBits(x);\n\t\treturn Math.trunc(f ^ f >>> 32);\n\t}\n};\nfunction DimensionalComparator() {\n\tthis._dimensionsToTest = 2;\n\tif (arguments.length === 0) {\n\t\tDimensionalComparator.call(this, 2);\n\t} else if (arguments.length === 1) {\n\t\tlet dimensionsToTest = arguments[0];\n\t\tif (dimensionsToTest !== 2 && dimensionsToTest !== 3) throw new IllegalArgumentException(\"only 2 or 3 dimensions may be specified\");\n\t\tthis._dimensionsToTest = dimensionsToTest;\n\t}\n}\nextend(DimensionalComparator.prototype, {\n\tcompare: function (o1, o2) {\n\t\tvar c1 = o1;\n\t\tvar c2 = o2;\n\t\tvar compX = DimensionalComparator.compare(c1.x, c2.x);\n\t\tif (compX !== 0) return compX;\n\t\tvar compY = DimensionalComparator.compare(c1.y, c2.y);\n\t\tif (compY !== 0) return compY;\n\t\tif (this._dimensionsToTest <= 2) return 0;\n\t\tvar compZ = DimensionalComparator.compare(c1.z, c2.z);\n\t\treturn compZ;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tgetClass: function () {\n\t\treturn DimensionalComparator;\n\t}\n});\nDimensionalComparator.compare = function (a, b) {\n\tif (a < b) return -1;\n\tif (a > b) return 1;\n\tif (Double.isNaN(a)) {\n\t\tif (Double.isNaN(b)) return 0;\n\t\treturn -1;\n\t}\n\tif (Double.isNaN(b)) return 1;\n\treturn 0;\n};\nCoordinate.DimensionalComparator = DimensionalComparator;\nCoordinate.serialVersionUID = 6683108902428366910;\nCoordinate.NULL_ORDINATE = Double.NaN;\nCoordinate.X = 0;\nCoordinate.Y = 1;\nCoordinate.Z = 2;\n","export default function (o, i) {\n return o.interfaces_ && o.interfaces_().indexOf(i) > -1\n}\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html\n * @constructor\n * @private\n */\nexport default function Iterator() {};\n\n/**\n * Returns true if the iteration has more elements.\n * @return {boolean}\n */\nIterator.prototype.hasNext = function() {};\n\n/**\n * Returns the next element in the iteration.\n * @return {Object}\n */\nIterator.prototype.next = function() {};\n\n/**\n * Removes from the underlying collection the last element returned by the\n * iterator (optional operation).\n */\nIterator.prototype.remove = function() {};\n","import Iterator from './Iterator'\n\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Collection.html\n *\n * @constructor\n * @private\n */\nexport default function Collection() {};\n\n/**\n * Ensures that this collection contains the specified element (optional\n * operation).\n * @param {Object} e\n * @return {boolean}\n */\nCollection.prototype.add = function() {};\n\n\n/**\n * Appends all of the elements in the specified collection to the end of this\n * list, in the order that they are returned by the specified collection's\n * iterator (optional operation).\n * @param {javascript.util.Collection} c\n * @return {boolean}\n */\nCollection.prototype.addAll = function() {};\n\n\n/**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\nCollection.prototype.isEmpty = function() {};\n\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {javascript.util.Iterator}\n */\nCollection.prototype.iterator = function() {};\n\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {number}\n */\nCollection.prototype.size = function() {};\n\n\n/**\n * Returns an array containing all of the elements in this collection.\n * @return {Array}\n */\nCollection.prototype.toArray = function() {};\n\n\n/**\n * Removes a single instance of the specified element from this collection if it\n * is present. (optional)\n * @param {Object} e\n * @return {boolean}\n */\nCollection.prototype.remove = function() {};\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function IndexOutOfBoundsException(message) {\n this.message = message || '';\n};\nIndexOutOfBoundsException.prototype = new Error();\n\n/**\n * @type {string}\n */\nIndexOutOfBoundsException.prototype.name = 'IndexOutOfBoundsException';\n","import Collection from './Collection'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/List.html\n *\n * @extends {javascript.util.Collection}\n * @constructor\n * @private\n */\nexport default function List() { };\nList.prototype = Object.create(Collection.prototype);\nList.prototype.constructor = List\n\n/**\n * Returns the element at the specified position in this list.\n * @param {number} index\n * @return {Object}\n */\nList.prototype.get = function() { };\n\n\n/**\n * Replaces the element at the specified position in this list with the\n * specified element (optional operation).\n * @param {number} index\n * @param {Object} e\n * @return {Object}\n */\nList.prototype.set = function() { };\n\n\n/**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\nList.prototype.isEmpty = function() { };\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function NoSuchElementException(message) {\n this.message = message || '';\n};\nNoSuchElementException.prototype = new Error();\n\n\n/**\n * @type {string}\n */\nNoSuchElementException.prototype.name = 'NoSuchElementException';\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function OperationNotSupported(message) {\n this.message = message || '';\n};\nOperationNotSupported.prototype = new Error();\n\n\n/**\n * @type {string}\n */\nOperationNotSupported.prototype.name = 'OperationNotSupported';\n","import Collection from './Collection'\nimport IndexOutOfBoundsException from './IndexOutOfBoundsException'\nimport Iterator from './Iterator'\nimport List from './List'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html\n *\n * @extends List\n * @private\n */\nexport default function ArrayList () {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n};\nArrayList.prototype = Object.create(List.prototype)\nArrayList.prototype.constructor = ArrayList;\n\nArrayList.prototype.ensureCapacity = function () {}\nArrayList.prototype.interfaces_ = function () { return [List, Collection] }\n\n/**\n * @override\n */\nArrayList.prototype.add = function(e) {\n if (arguments.length === 1) {\n this.array_.push(e)\n } else {\n this.array_.splice(arguments[0], 0, arguments[1])\n }\n return true\n};\n\nArrayList.prototype.clear = function() {\n this.array_ = []\n}\n\n/**\n * @override\n */\nArrayList.prototype.addAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.add(i.next());\n }\n return true;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.set = function(index, element) {\n var oldElement = this.array_[index];\n this.array_[index] = element;\n return oldElement;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.iterator = function() {\n return new Iterator_(this);\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.get = function(index) {\n if (index < 0 || index >= this.size()) {\n throw new IndexOutOfBoundsException();\n }\n\n return this.array_[index];\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.isEmpty = function() {\n return this.array_.length === 0;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.size = function() {\n return this.array_.length;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.toArray = function() {\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i]);\n }\n\n return array;\n};\n\n\n/**\n * @override\n */\nArrayList.prototype.remove = function(o) {\n var found = false;\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n if (this.array_[i] === o) {\n this.array_.splice(i, 1);\n found = true;\n break;\n }\n }\n\n return found;\n};\n\n\nArrayList.prototype.removeAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.remove(i.next());\n }\n return true;\n};\n\n\n\n/**\n * @extends {Iterator}\n * @param {ArrayList} arrayList\n * @constructor\n * @private\n */\nvar Iterator_ = function(arrayList) {\n /**\n * @type {ArrayList}\n * @private\n */\n this.arrayList_ = arrayList;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.next = function() {\n if (this.position_ === this.arrayList_.size()) {\n throw new NoSuchElementException();\n }\n return this.arrayList_.get(this.position_++);\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function() {\n if (this.position_ < this.arrayList_.size()) {\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * TODO: should be in ListIterator\n * @override\n */\nIterator_.prototype.set = function(element) {\n return this.arrayList_.set(this.position_ - 1, element);\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.remove = function() {\n this.arrayList_.remove(this.arrayList_.get(this.position_));\n};\n","import hasInterface from '../../../../hasInterface';\nimport Collection from '../../../../java/util/Collection';\nimport Coordinate from './Coordinate';\nimport extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport inherits from '../../../../inherits';\nexport default function CoordinateList() {\n\tArrayList.apply(this);\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet coord = arguments[0];\n\t\tthis.ensureCapacity(coord.length);\n\t\tthis.add(coord, true);\n\t} else if (arguments.length === 2) {\n\t\tlet coord = arguments[0], allowRepeated = arguments[1];\n\t\tthis.ensureCapacity(coord.length);\n\t\tthis.add(coord, allowRepeated);\n\t}\n}\ninherits(CoordinateList, ArrayList);\nextend(CoordinateList.prototype, {\n\tgetCoordinate: function (i) {\n\t\treturn this.get(i);\n\t},\n\taddAll: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"boolean\" && hasInterface(arguments[0], Collection))) {\n\t\t\tlet coll = arguments[0], allowRepeated = arguments[1];\n\t\t\tvar isChanged = false;\n\t\t\tfor (var i = coll.iterator(); i.hasNext(); ) {\n\t\t\t\tthis.add(i.next(), allowRepeated);\n\t\t\t\tisChanged = true;\n\t\t\t}\n\t\t\treturn isChanged;\n\t\t} else return ArrayList.prototype.addAll.apply(this, arguments);\n\t},\n\tclone: function () {\n\t\tvar clone = ArrayList.prototype.clone.call(this);\n\t\tfor (var i = 0; i < this.size(); i++) {\n\t\t\tclone.add(i, this.get(i).clone());\n\t\t}\n\t\treturn clone;\n\t},\n\ttoCoordinateArray: function () {\n\t\treturn this.toArray(CoordinateList.coordArrayType);\n\t},\n\tadd: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet coord = arguments[0];\n\t\t\tArrayList.prototype.add.call(this, coord);\n\t\t} else if (arguments.length === 2) {\n\t\t\tif (arguments[0] instanceof Array && typeof arguments[1] === \"boolean\") {\n\t\t\t\tlet coord = arguments[0], allowRepeated = arguments[1];\n\t\t\t\tthis.add(coord, allowRepeated, true);\n\t\t\t\treturn true;\n\t\t\t} else if (arguments[0] instanceof Coordinate && typeof arguments[1] === \"boolean\") {\n\t\t\t\tlet coord = arguments[0], allowRepeated = arguments[1];\n\t\t\t\tif (!allowRepeated) {\n\t\t\t\t\tif (this.size() >= 1) {\n\t\t\t\t\t\tvar last = this.get(this.size() - 1);\n\t\t\t\t\t\tif (last.equals2D(coord)) return null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tArrayList.prototype.add.call(this, coord);\n\t\t\t} else if (arguments[0] instanceof Object && typeof arguments[1] === \"boolean\") {\n\t\t\t\tlet obj = arguments[0], allowRepeated = arguments[1];\n\t\t\t\tthis.add(obj, allowRepeated);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (typeof arguments[2] === \"boolean\" && (arguments[0] instanceof Array && typeof arguments[1] === \"boolean\")) {\n\t\t\t\tlet coord = arguments[0], allowRepeated = arguments[1], direction = arguments[2];\n\t\t\t\tif (direction) {\n\t\t\t\t\tfor (var i = 0; i < coord.length; i++) {\n\t\t\t\t\t\tthis.add(coord[i], allowRepeated);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = coord.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tthis.add(coord[i], allowRepeated);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} else if (typeof arguments[2] === \"boolean\" && (Number.isInteger(arguments[0]) && arguments[1] instanceof Coordinate)) {\n\t\t\t\tlet i = arguments[0], coord = arguments[1], allowRepeated = arguments[2];\n\t\t\t\tif (!allowRepeated) {\n\t\t\t\t\tvar size = this.size();\n\t\t\t\t\tif (size > 0) {\n\t\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t\tvar prev = this.get(i - 1);\n\t\t\t\t\t\t\tif (prev.equals2D(coord)) return null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < size) {\n\t\t\t\t\t\t\tvar next = this.get(i);\n\t\t\t\t\t\t\tif (next.equals2D(coord)) return null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tArrayList.prototype.add.call(this, i, coord);\n\t\t\t}\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet coord = arguments[0], allowRepeated = arguments[1], start = arguments[2], end = arguments[3];\n\t\t\tvar inc = 1;\n\t\t\tif (start > end) inc = -1;\n\t\t\tfor (var i = start; i !== end; i += inc) {\n\t\t\t\tthis.add(coord[i], allowRepeated);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t},\n\tcloseRing: function () {\n\t\tif (this.size() > 0) this.add(new Coordinate(this.get(0)), false);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateList;\n\t}\n});\nCoordinateList.coordArrayType = new Array(0).fill(null);\n","import Coordinate from './Coordinate';\nimport extend from '../../../../extend';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Serializable from '../../../../java/io/Serializable';\nexport default function Envelope() {\n\tthis._minx = null;\n\tthis._maxx = null;\n\tthis._miny = null;\n\tthis._maxy = null;\n\tif (arguments.length === 0) {\n\t\tthis.init();\n\t} else if (arguments.length === 1) {\n\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\tlet p = arguments[0];\n\t\t\tthis.init(p.x, p.x, p.y, p.y);\n\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\tlet env = arguments[0];\n\t\t\tthis.init(env);\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\tthis.init(p1.x, p2.x, p1.y, p2.y);\n\t} else if (arguments.length === 4) {\n\t\tlet x1 = arguments[0], x2 = arguments[1], y1 = arguments[2], y2 = arguments[3];\n\t\tthis.init(x1, x2, y1, y2);\n\t}\n}\nextend(Envelope.prototype, {\n\tgetArea: function () {\n\t\treturn this.getWidth() * this.getHeight();\n\t},\n\tequals: function (other) {\n\t\tif (!(other instanceof Envelope)) {\n\t\t\treturn false;\n\t\t}\n\t\tvar otherEnvelope = other;\n\t\tif (this.isNull()) {\n\t\t\treturn otherEnvelope.isNull();\n\t\t}\n\t\treturn this._maxx === otherEnvelope.getMaxX() && this._maxy === otherEnvelope.getMaxY() && this._minx === otherEnvelope.getMinX() && this._miny === otherEnvelope.getMinY();\n\t},\n\tintersection: function (env) {\n\t\tif (this.isNull() || env.isNull() || !this.intersects(env)) return new Envelope();\n\t\tvar intMinX = this._minx > env._minx ? this._minx : env._minx;\n\t\tvar intMinY = this._miny > env._miny ? this._miny : env._miny;\n\t\tvar intMaxX = this._maxx < env._maxx ? this._maxx : env._maxx;\n\t\tvar intMaxY = this._maxy < env._maxy ? this._maxy : env._maxy;\n\t\treturn new Envelope(intMinX, intMaxX, intMinY, intMaxY);\n\t},\n\tisNull: function () {\n\t\treturn this._maxx < this._minx;\n\t},\n\tgetMaxX: function () {\n\t\treturn this._maxx;\n\t},\n\tcovers: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this.covers(p.x, p.y);\n\t\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\tif (this.isNull() || other.isNull()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn other.getMinX() >= this._minx && other.getMaxX() <= this._maxx && other.getMinY() >= this._miny && other.getMaxY() <= this._maxy;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\tif (this.isNull()) return false;\n\t\t\treturn x >= this._minx && x <= this._maxx && y >= this._miny && y <= this._maxy;\n\t\t}\n\t},\n\tintersects: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\tif (this.isNull() || other.isNull()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn !(other._minx > this._maxx || other._maxx < this._minx || other._miny > this._maxy || other._maxy < this._miny);\n\t\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this.intersects(p.x, p.y);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tif (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n\t\t\t\tlet a = arguments[0], b = arguments[1];\n\t\t\t\tif (this.isNull()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar envminx = a.x < b.x ? a.x : b.x;\n\t\t\t\tif (envminx > this._maxx) return false;\n\t\t\t\tvar envmaxx = a.x > b.x ? a.x : b.x;\n\t\t\t\tif (envmaxx < this._minx) return false;\n\t\t\t\tvar envminy = a.y < b.y ? a.y : b.y;\n\t\t\t\tif (envminy > this._maxy) return false;\n\t\t\t\tvar envmaxy = a.y > b.y ? a.y : b.y;\n\t\t\t\tif (envmaxy < this._miny) return false;\n\t\t\t\treturn true;\n\t\t\t} else if (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\") {\n\t\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\t\tif (this.isNull()) return false;\n\t\t\t\treturn !(x > this._maxx || x < this._minx || y > this._maxy || y < this._miny);\n\t\t\t}\n\t\t}\n\t},\n\tgetMinY: function () {\n\t\treturn this._miny;\n\t},\n\tgetMinX: function () {\n\t\treturn this._minx;\n\t},\n\texpandToInclude: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\tthis.expandToInclude(p.x, p.y);\n\t\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\tif (other.isNull()) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (this.isNull()) {\n\t\t\t\t\tthis._minx = other.getMinX();\n\t\t\t\t\tthis._maxx = other.getMaxX();\n\t\t\t\t\tthis._miny = other.getMinY();\n\t\t\t\t\tthis._maxy = other.getMaxY();\n\t\t\t\t} else {\n\t\t\t\t\tif (other._minx < this._minx) {\n\t\t\t\t\t\tthis._minx = other._minx;\n\t\t\t\t\t}\n\t\t\t\t\tif (other._maxx > this._maxx) {\n\t\t\t\t\t\tthis._maxx = other._maxx;\n\t\t\t\t\t}\n\t\t\t\t\tif (other._miny < this._miny) {\n\t\t\t\t\t\tthis._miny = other._miny;\n\t\t\t\t\t}\n\t\t\t\t\tif (other._maxy > this._maxy) {\n\t\t\t\t\t\tthis._maxy = other._maxy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\tif (this.isNull()) {\n\t\t\t\tthis._minx = x;\n\t\t\t\tthis._maxx = x;\n\t\t\t\tthis._miny = y;\n\t\t\t\tthis._maxy = y;\n\t\t\t} else {\n\t\t\t\tif (x < this._minx) {\n\t\t\t\t\tthis._minx = x;\n\t\t\t\t}\n\t\t\t\tif (x > this._maxx) {\n\t\t\t\t\tthis._maxx = x;\n\t\t\t\t}\n\t\t\t\tif (y < this._miny) {\n\t\t\t\t\tthis._miny = y;\n\t\t\t\t}\n\t\t\t\tif (y > this._maxy) {\n\t\t\t\t\tthis._maxy = y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tminExtent: function () {\n\t\tif (this.isNull()) return 0.0;\n\t\tvar w = this.getWidth();\n\t\tvar h = this.getHeight();\n\t\tif (w < h) return w;\n\t\treturn h;\n\t},\n\tgetWidth: function () {\n\t\tif (this.isNull()) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this._maxx - this._minx;\n\t},\n\tcompareTo: function (o) {\n\t\tvar env = o;\n\t\tif (this.isNull()) {\n\t\t\tif (env.isNull()) return 0;\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif (env.isNull()) return 1;\n\t\t}\n\t\tif (this._minx < env._minx) return -1;\n\t\tif (this._minx > env._minx) return 1;\n\t\tif (this._miny < env._miny) return -1;\n\t\tif (this._miny > env._miny) return 1;\n\t\tif (this._maxx < env._maxx) return -1;\n\t\tif (this._maxx > env._maxx) return 1;\n\t\tif (this._maxy < env._maxy) return -1;\n\t\tif (this._maxy > env._maxy) return 1;\n\t\treturn 0;\n\t},\n\ttranslate: function (transX, transY) {\n\t\tif (this.isNull()) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.init(this.getMinX() + transX, this.getMaxX() + transX, this.getMinY() + transY, this.getMaxY() + transY);\n\t},\n\ttoString: function () {\n\t\treturn \"Env[\" + this._minx + \" : \" + this._maxx + \", \" + this._miny + \" : \" + this._maxy + \"]\";\n\t},\n\tsetToNull: function () {\n\t\tthis._minx = 0;\n\t\tthis._maxx = -1;\n\t\tthis._miny = 0;\n\t\tthis._maxy = -1;\n\t},\n\tgetHeight: function () {\n\t\tif (this.isNull()) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this._maxy - this._miny;\n\t},\n\tmaxExtent: function () {\n\t\tif (this.isNull()) return 0.0;\n\t\tvar w = this.getWidth();\n\t\tvar h = this.getHeight();\n\t\tif (w > h) return w;\n\t\treturn h;\n\t},\n\texpandBy: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet distance = arguments[0];\n\t\t\tthis.expandBy(distance, distance);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet deltaX = arguments[0], deltaY = arguments[1];\n\t\t\tif (this.isNull()) return null;\n\t\t\tthis._minx -= deltaX;\n\t\t\tthis._maxx += deltaX;\n\t\t\tthis._miny -= deltaY;\n\t\t\tthis._maxy += deltaY;\n\t\t\tif (this._minx > this._maxx || this._miny > this._maxy) this.setToNull();\n\t\t}\n\t},\n\tcontains: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Envelope) {\n\t\t\t\tlet other = arguments[0];\n\t\t\t\treturn this.covers(other);\n\t\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this.covers(p);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet x = arguments[0], y = arguments[1];\n\t\t\treturn this.covers(x, y);\n\t\t}\n\t},\n\tcentre: function () {\n\t\tif (this.isNull()) return null;\n\t\treturn new Coordinate((this.getMinX() + this.getMaxX()) / 2.0, (this.getMinY() + this.getMaxY()) / 2.0);\n\t},\n\tinit: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tthis.setToNull();\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\tthis.init(p.x, p.x, p.y, p.y);\n\t\t\t} else if (arguments[0] instanceof Envelope) {\n\t\t\t\tlet env = arguments[0];\n\t\t\t\tthis._minx = env._minx;\n\t\t\t\tthis._maxx = env._maxx;\n\t\t\t\tthis._miny = env._miny;\n\t\t\t\tthis._maxy = env._maxy;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\t\tthis.init(p1.x, p2.x, p1.y, p2.y);\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet x1 = arguments[0], x2 = arguments[1], y1 = arguments[2], y2 = arguments[3];\n\t\t\tif (x1 < x2) {\n\t\t\t\tthis._minx = x1;\n\t\t\t\tthis._maxx = x2;\n\t\t\t} else {\n\t\t\t\tthis._minx = x2;\n\t\t\t\tthis._maxx = x1;\n\t\t\t}\n\t\t\tif (y1 < y2) {\n\t\t\t\tthis._miny = y1;\n\t\t\t\tthis._maxy = y2;\n\t\t\t} else {\n\t\t\t\tthis._miny = y2;\n\t\t\t\tthis._maxy = y1;\n\t\t\t}\n\t\t}\n\t},\n\tgetMaxY: function () {\n\t\treturn this._maxy;\n\t},\n\tdistance: function (env) {\n\t\tif (this.intersects(env)) return 0;\n\t\tvar dx = 0.0;\n\t\tif (this._maxx < env._minx) dx = env._minx - this._maxx; else if (this._minx > env._maxx) dx = this._minx - env._maxx;\n\t\tvar dy = 0.0;\n\t\tif (this._maxy < env._miny) dy = env._miny - this._maxy; else if (this._miny > env._maxy) dy = this._miny - env._maxy;\n\t\tif (dx === 0.0) return dy;\n\t\tif (dy === 0.0) return dx;\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t},\n\thashCode: function () {\n\t\tvar result = 17;\n\t\tresult = 37 * result + Coordinate.hashCode(this._minx);\n\t\tresult = 37 * result + Coordinate.hashCode(this._maxx);\n\t\tresult = 37 * result + Coordinate.hashCode(this._miny);\n\t\tresult = 37 * result + Coordinate.hashCode(this._maxy);\n\t\treturn result;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn Envelope;\n\t}\n});\nEnvelope.intersects = function () {\n\tif (arguments.length === 3) {\n\t\tlet p1 = arguments[0], p2 = arguments[1], q = arguments[2];\n\t\tif (q.x >= (p1.x < p2.x ? p1.x : p2.x) && q.x <= (p1.x > p2.x ? p1.x : p2.x) && (q.y >= (p1.y < p2.y ? p1.y : p2.y) && q.y <= (p1.y > p2.y ? p1.y : p2.y))) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t} else if (arguments.length === 4) {\n\t\tlet p1 = arguments[0], p2 = arguments[1], q1 = arguments[2], q2 = arguments[3];\n\t\tvar minq = Math.min(q1.x, q2.x);\n\t\tvar maxq = Math.max(q1.x, q2.x);\n\t\tvar minp = Math.min(p1.x, p2.x);\n\t\tvar maxp = Math.max(p1.x, p2.x);\n\t\tif (minp > maxq) return false;\n\t\tif (maxp < minq) return false;\n\t\tminq = Math.min(q1.y, q2.y);\n\t\tmaxq = Math.max(q1.y, q2.y);\n\t\tminp = Math.min(p1.y, p2.y);\n\t\tmaxp = Math.max(p1.y, p2.y);\n\t\tif (minp > maxq) return false;\n\t\tif (maxp < minq) return false;\n\t\treturn true;\n\t}\n};\nEnvelope.serialVersionUID = 5873921885273102420;\n","export default function Exception () {}\n","import extend from '../../../../extend';\nimport Exception from '../../../../java/lang/Exception';\nimport inherits from '../../../../inherits';\nexport default function NotRepresentableException() {\n\tException.call(this, \"Projective point not representable on the Cartesian plane.\");\n}\ninherits(NotRepresentableException, Exception);\nextend(NotRepresentableException.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn NotRepresentableException;\n\t}\n});\n","export default function StringBuffer (str) {\n this.str = str\n}\n\nStringBuffer.prototype.append = function (e) {\n this.str += e\n}\n\nStringBuffer.prototype.setCharAt = function (i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n}\n\nStringBuffer.prototype.toString = function (e) {\n return this.str\n}\n","export default function Integer (value) {\n this.value = value\n}\n\nInteger.prototype.intValue = function () {\n return this.value\n}\nInteger.prototype.compareTo = function (o) {\n if (this.value < o) return -1\n if (this.value > o) return 1\n return 0\n}\n\nInteger.isNaN = n => Number.isNaN(n)\n","export default function Character () {}\nCharacter.isWhitespace = c => ((c <= 32 && c >= 0) || c == 127)\nCharacter.toUpperCase = c => c.toUpperCase()\n","import StringBuffer from '../../../../java/lang/StringBuffer';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport Integer from '../../../../java/lang/Integer';\nimport Character from '../../../../java/lang/Character';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Cloneable from '../../../../java/lang/Cloneable';\nimport Serializable from '../../../../java/io/Serializable';\nexport default function DD() {\n\tthis._hi = 0.0;\n\tthis._lo = 0.0;\n\tif (arguments.length === 0) {\n\t\tthis.init(0.0);\n\t} else if (arguments.length === 1) {\n\t\tif (typeof arguments[0] === \"number\") {\n\t\t\tlet x = arguments[0];\n\t\t\tthis.init(x);\n\t\t} else if (arguments[0] instanceof DD) {\n\t\t\tlet dd = arguments[0];\n\t\t\tthis.init(dd);\n\t\t} else if (typeof arguments[0] === \"string\") {\n\t\t\tlet str = arguments[0];\n\t\t\tDD.call(this, DD.parse(str));\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet hi = arguments[0], lo = arguments[1];\n\t\tthis.init(hi, lo);\n\t}\n}\nextend(DD.prototype, {\n\tle: function (y) {\n\t\treturn this._hi < y._hi || this._hi === y._hi && this._lo <= y._lo;\n\t},\n\textractSignificantDigits: function (insertDecimalPoint, magnitude) {\n\t\tvar y = this.abs();\n\t\tvar mag = DD.magnitude(y._hi);\n\t\tvar scale = DD.TEN.pow(mag);\n\t\ty = y.divide(scale);\n\t\tif (y.gt(DD.TEN)) {\n\t\t\ty = y.divide(DD.TEN);\n\t\t\tmag += 1;\n\t\t} else if (y.lt(DD.ONE)) {\n\t\t\ty = y.multiply(DD.TEN);\n\t\t\tmag -= 1;\n\t\t}\n\t\tvar decimalPointPos = mag + 1;\n\t\tvar buf = new StringBuffer();\n\t\tvar numDigits = DD.MAX_PRINT_DIGITS - 1;\n\t\tfor (var i = 0; i <= numDigits; i++) {\n\t\t\tif (insertDecimalPoint && i === decimalPointPos) {\n\t\t\t\tbuf.append('.');\n\t\t\t}\n\t\t\tvar digit = Math.trunc(y._hi);\n\t\t\tif (digit < 0 || digit > 9) {}\n\t\t\tif (digit < 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar rebiasBy10 = false;\n\t\t\tvar digitChar = 0;\n\t\t\tif (digit > 9) {\n\t\t\t\trebiasBy10 = true;\n\t\t\t\tdigitChar = '9';\n\t\t\t} else {\n\t\t\t\tdigitChar = '0' + digit;\n\t\t\t}\n\t\t\tbuf.append(digitChar);\n\t\t\ty = y.subtract(DD.valueOf(digit)).multiply(DD.TEN);\n\t\t\tif (rebiasBy10) y.selfAdd(DD.TEN);\n\t\t\tvar continueExtractingDigits = true;\n\t\t\tvar remMag = DD.magnitude(y._hi);\n\t\t\tif (remMag < 0 && Math.abs(remMag) >= numDigits - i) continueExtractingDigits = false;\n\t\t\tif (!continueExtractingDigits) break;\n\t\t}\n\t\tmagnitude[0] = mag;\n\t\treturn buf.toString();\n\t},\n\tsqr: function () {\n\t\treturn this.multiply(this);\n\t},\n\tdoubleValue: function () {\n\t\treturn this._hi + this._lo;\n\t},\n\tsubtract: function () {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\treturn this.add(y.negate());\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\treturn this.add(-y);\n\t\t}\n\t},\n\tequals: function () {\n\t\tif (arguments.length === 1 && arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\treturn this._hi === y._hi && this._lo === y._lo;\n\t\t}\n\t},\n\tisZero: function () {\n\t\treturn this._hi === 0.0 && this._lo === 0.0;\n\t},\n\tselfSubtract: function () {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\tif (this.isNaN()) return this;\n\t\t\treturn this.selfAdd(-y._hi, -y._lo);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\tif (this.isNaN()) return this;\n\t\t\treturn this.selfAdd(-y, 0.0);\n\t\t}\n\t},\n\tgetSpecialNumberString: function () {\n\t\tif (this.isZero()) return \"0.0\";\n\t\tif (this.isNaN()) return \"NaN \";\n\t\treturn null;\n\t},\n\tmin: function (x) {\n\t\tif (this.le(x)) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\treturn x;\n\t\t}\n\t},\n\tselfDivide: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof DD) {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfDivide(y._hi, y._lo);\n\t\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfDivide(y, 0.0);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet yhi = arguments[0], ylo = arguments[1];\n\t\t\tvar hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null;\n\t\t\tC = this._hi / yhi;\n\t\t\tc = DD.SPLIT * C;\n\t\t\thc = c - C;\n\t\t\tu = DD.SPLIT * yhi;\n\t\t\thc = c - hc;\n\t\t\ttc = C - hc;\n\t\t\thy = u - yhi;\n\t\t\tU = C * yhi;\n\t\t\thy = u - hy;\n\t\t\tty = yhi - hy;\n\t\t\tu = hc * hy - U + hc * ty + tc * hy + tc * ty;\n\t\t\tc = (this._hi - U - u + this._lo - C * ylo) / yhi;\n\t\t\tu = C + c;\n\t\t\tthis._hi = u;\n\t\t\tthis._lo = C - u + c;\n\t\t\treturn this;\n\t\t}\n\t},\n\tdump: function () {\n\t\treturn \"DD<\" + this._hi + \", \" + this._lo + \">\";\n\t},\n\tdivide: function () {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\tvar hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null;\n\t\t\tC = this._hi / y._hi;\n\t\t\tc = DD.SPLIT * C;\n\t\t\thc = c - C;\n\t\t\tu = DD.SPLIT * y._hi;\n\t\t\thc = c - hc;\n\t\t\ttc = C - hc;\n\t\t\thy = u - y._hi;\n\t\t\tU = C * y._hi;\n\t\t\thy = u - hy;\n\t\t\tty = y._hi - hy;\n\t\t\tu = hc * hy - U + hc * ty + tc * hy + tc * ty;\n\t\t\tc = (this._hi - U - u + this._lo - C * y._lo) / y._hi;\n\t\t\tu = C + c;\n\t\t\tvar zhi = u;\n\t\t\tvar zlo = C - u + c;\n\t\t\treturn new DD(zhi, zlo);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\tif (Double.isNaN(y)) return DD.createNaN();\n\t\t\treturn DD.copy(this).selfDivide(y, 0.0);\n\t\t}\n\t},\n\tge: function (y) {\n\t\treturn this._hi > y._hi || this._hi === y._hi && this._lo >= y._lo;\n\t},\n\tpow: function (exp) {\n\t\tif (exp === 0.0) return DD.valueOf(1.0);\n\t\tvar r = new DD(this);\n\t\tvar s = DD.valueOf(1.0);\n\t\tvar n = Math.abs(exp);\n\t\tif (n > 1) {\n\t\t\twhile (n > 0) {\n\t\t\t\tif (n % 2 === 1) {\n\t\t\t\t\ts.selfMultiply(r);\n\t\t\t\t}\n\t\t\t\tn /= 2;\n\t\t\t\tif (n > 0) r = r.sqr();\n\t\t\t}\n\t\t} else {\n\t\t\ts = r;\n\t\t}\n\t\tif (exp < 0) return s.reciprocal();\n\t\treturn s;\n\t},\n\tceil: function () {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tvar fhi = Math.ceil(this._hi);\n\t\tvar flo = 0.0;\n\t\tif (fhi === this._hi) {\n\t\t\tflo = Math.ceil(this._lo);\n\t\t}\n\t\treturn new DD(fhi, flo);\n\t},\n\tcompareTo: function (o) {\n\t\tvar other = o;\n\t\tif (this._hi < other._hi) return -1;\n\t\tif (this._hi > other._hi) return 1;\n\t\tif (this._lo < other._lo) return -1;\n\t\tif (this._lo > other._lo) return 1;\n\t\treturn 0;\n\t},\n\trint: function () {\n\t\tif (this.isNaN()) return this;\n\t\tvar plus5 = this.add(0.5);\n\t\treturn plus5.floor();\n\t},\n\tsetValue: function () {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet value = arguments[0];\n\t\t\tthis.init(value);\n\t\t\treturn this;\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet value = arguments[0];\n\t\t\tthis.init(value);\n\t\t\treturn this;\n\t\t}\n\t},\n\tmax: function (x) {\n\t\tif (this.ge(x)) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\treturn x;\n\t\t}\n\t},\n\tsqrt: function () {\n\t\tif (this.isZero()) return DD.valueOf(0.0);\n\t\tif (this.isNegative()) {\n\t\t\treturn DD.NaN;\n\t\t}\n\t\tvar x = 1.0 / Math.sqrt(this._hi);\n\t\tvar ax = this._hi * x;\n\t\tvar axdd = DD.valueOf(ax);\n\t\tvar diffSq = this.subtract(axdd.sqr());\n\t\tvar d2 = diffSq._hi * (x * 0.5);\n\t\treturn axdd.add(d2);\n\t},\n\tselfAdd: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof DD) {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfAdd(y._hi, y._lo);\n\t\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\tvar H = null, h = null, S = null, s = null, e = null, f = null;\n\t\t\t\tS = this._hi + y;\n\t\t\t\te = S - this._hi;\n\t\t\t\ts = S - e;\n\t\t\t\ts = y - e + (this._hi - s);\n\t\t\t\tf = s + this._lo;\n\t\t\t\tH = S + f;\n\t\t\t\th = f + (S - H);\n\t\t\t\tthis._hi = H + h;\n\t\t\t\tthis._lo = h + (H - this._hi);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet yhi = arguments[0], ylo = arguments[1];\n\t\t\tvar H = null, h = null, T = null, t = null, S = null, s = null, e = null, f = null;\n\t\t\tS = this._hi + yhi;\n\t\t\tT = this._lo + ylo;\n\t\t\te = S - this._hi;\n\t\t\tf = T - this._lo;\n\t\t\ts = S - e;\n\t\t\tt = T - f;\n\t\t\ts = yhi - e + (this._hi - s);\n\t\t\tt = ylo - f + (this._lo - t);\n\t\t\te = s + T;\n\t\t\tH = S + e;\n\t\t\th = e + (S - H);\n\t\t\te = t + h;\n\t\t\tvar zhi = H + e;\n\t\t\tvar zlo = e + (H - zhi);\n\t\t\tthis._hi = zhi;\n\t\t\tthis._lo = zlo;\n\t\t\treturn this;\n\t\t}\n\t},\n\tselfMultiply: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof DD) {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfMultiply(y._hi, y._lo);\n\t\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\t\tlet y = arguments[0];\n\t\t\t\treturn this.selfMultiply(y, 0.0);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet yhi = arguments[0], ylo = arguments[1];\n\t\t\tvar hx = null, tx = null, hy = null, ty = null, C = null, c = null;\n\t\t\tC = DD.SPLIT * this._hi;\n\t\t\thx = C - this._hi;\n\t\t\tc = DD.SPLIT * yhi;\n\t\t\thx = C - hx;\n\t\t\ttx = this._hi - hx;\n\t\t\thy = c - yhi;\n\t\t\tC = this._hi * yhi;\n\t\t\thy = c - hy;\n\t\t\tty = yhi - hy;\n\t\t\tc = hx * hy - C + hx * ty + tx * hy + tx * ty + (this._hi * ylo + this._lo * yhi);\n\t\t\tvar zhi = C + c;\n\t\t\thx = C - zhi;\n\t\t\tvar zlo = c + hx;\n\t\t\tthis._hi = zhi;\n\t\t\tthis._lo = zlo;\n\t\t\treturn this;\n\t\t}\n\t},\n\tselfSqr: function () {\n\t\treturn this.selfMultiply(this);\n\t},\n\tfloor: function () {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tvar fhi = Math.floor(this._hi);\n\t\tvar flo = 0.0;\n\t\tif (fhi === this._hi) {\n\t\t\tflo = Math.floor(this._lo);\n\t\t}\n\t\treturn new DD(fhi, flo);\n\t},\n\tnegate: function () {\n\t\tif (this.isNaN()) return this;\n\t\treturn new DD(-this._hi, -this._lo);\n\t},\n\tclone: function () {\n\t\ttry {\n\t\t\treturn null;\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof CloneNotSupportedException) {\n\t\t\t\treturn null;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t},\n\tmultiply: function () {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\tif (y.isNaN()) return DD.createNaN();\n\t\t\treturn DD.copy(this).selfMultiply(y);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\tif (Double.isNaN(y)) return DD.createNaN();\n\t\t\treturn DD.copy(this).selfMultiply(y, 0.0);\n\t\t}\n\t},\n\tisNaN: function () {\n\t\treturn Double.isNaN(this._hi);\n\t},\n\tintValue: function () {\n\t\treturn Math.trunc(this._hi);\n\t},\n\ttoString: function () {\n\t\tvar mag = DD.magnitude(this._hi);\n\t\tif (mag >= -3 && mag <= 20) return this.toStandardNotation();\n\t\treturn this.toSciNotation();\n\t},\n\ttoStandardNotation: function () {\n\t\tvar specialStr = this.getSpecialNumberString();\n\t\tif (specialStr !== null) return specialStr;\n\t\tvar magnitude = new Array(1).fill(null);\n\t\tvar sigDigits = this.extractSignificantDigits(true, magnitude);\n\t\tvar decimalPointPos = magnitude[0] + 1;\n\t\tvar num = sigDigits;\n\t\tif (sigDigits.charAt(0) === '.') {\n\t\t\tnum = \"0\" + sigDigits;\n\t\t} else if (decimalPointPos < 0) {\n\t\t\tnum = \"0.\" + DD.stringOfChar('0', -decimalPointPos) + sigDigits;\n\t\t} else if (sigDigits.indexOf('.') === -1) {\n\t\t\tvar numZeroes = decimalPointPos - sigDigits.length;\n\t\t\tvar zeroes = DD.stringOfChar('0', numZeroes);\n\t\t\tnum = sigDigits + zeroes + \".0\";\n\t\t}\n\t\tif (this.isNegative()) return \"-\" + num;\n\t\treturn num;\n\t},\n\treciprocal: function () {\n\t\tvar hc = null, tc = null, hy = null, ty = null, C = null, c = null, U = null, u = null;\n\t\tC = 1.0 / this._hi;\n\t\tc = DD.SPLIT * C;\n\t\thc = c - C;\n\t\tu = DD.SPLIT * this._hi;\n\t\thc = c - hc;\n\t\ttc = C - hc;\n\t\thy = u - this._hi;\n\t\tU = C * this._hi;\n\t\thy = u - hy;\n\t\tty = this._hi - hy;\n\t\tu = hc * hy - U + hc * ty + tc * hy + tc * ty;\n\t\tc = (1.0 - U - u - C * this._lo) / this._hi;\n\t\tvar zhi = C + c;\n\t\tvar zlo = C - zhi + c;\n\t\treturn new DD(zhi, zlo);\n\t},\n\ttoSciNotation: function () {\n\t\tif (this.isZero()) return DD.SCI_NOT_ZERO;\n\t\tvar specialStr = this.getSpecialNumberString();\n\t\tif (specialStr !== null) return specialStr;\n\t\tvar magnitude = new Array(1).fill(null);\n\t\tvar digits = this.extractSignificantDigits(false, magnitude);\n\t\tvar expStr = DD.SCI_NOT_EXPONENT_CHAR + magnitude[0];\n\t\tif (digits.charAt(0) === '0') {\n\t\t\tthrow new IllegalStateException(\"Found leading zero: \" + digits);\n\t\t}\n\t\tvar trailingDigits = \"\";\n\t\tif (digits.length > 1) trailingDigits = digits.substring(1);\n\t\tvar digitsWithDecimal = digits.charAt(0) + \".\" + trailingDigits;\n\t\tif (this.isNegative()) return \"-\" + digitsWithDecimal + expStr;\n\t\treturn digitsWithDecimal + expStr;\n\t},\n\tabs: function () {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tif (this.isNegative()) return this.negate();\n\t\treturn new DD(this);\n\t},\n\tisPositive: function () {\n\t\treturn this._hi > 0.0 || this._hi === 0.0 && this._lo > 0.0;\n\t},\n\tlt: function (y) {\n\t\treturn this._hi < y._hi || this._hi === y._hi && this._lo < y._lo;\n\t},\n\tadd: function () {\n\t\tif (arguments[0] instanceof DD) {\n\t\t\tlet y = arguments[0];\n\t\t\treturn DD.copy(this).selfAdd(y);\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet y = arguments[0];\n\t\t\treturn DD.copy(this).selfAdd(y);\n\t\t}\n\t},\n\tinit: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (typeof arguments[0] === \"number\") {\n\t\t\t\tlet x = arguments[0];\n\t\t\t\tthis._hi = x;\n\t\t\t\tthis._lo = 0.0;\n\t\t\t} else if (arguments[0] instanceof DD) {\n\t\t\t\tlet dd = arguments[0];\n\t\t\t\tthis._hi = dd._hi;\n\t\t\t\tthis._lo = dd._lo;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet hi = arguments[0], lo = arguments[1];\n\t\t\tthis._hi = hi;\n\t\t\tthis._lo = lo;\n\t\t}\n\t},\n\tgt: function (y) {\n\t\treturn this._hi > y._hi || this._hi === y._hi && this._lo > y._lo;\n\t},\n\tisNegative: function () {\n\t\treturn this._hi < 0.0 || this._hi === 0.0 && this._lo < 0.0;\n\t},\n\ttrunc: function () {\n\t\tif (this.isNaN()) return DD.NaN;\n\t\tif (this.isPositive()) return this.floor(); else return this.ceil();\n\t},\n\tsignum: function () {\n\t\tif (this._hi > 0) return 1;\n\t\tif (this._hi < 0) return -1;\n\t\tif (this._lo > 0) return 1;\n\t\tif (this._lo < 0) return -1;\n\t\treturn 0;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Serializable, Comparable, Cloneable];\n\t},\n\tgetClass: function () {\n\t\treturn DD;\n\t}\n});\nDD.sqr = function (x) {\n\treturn DD.valueOf(x).selfMultiply(x);\n};\nDD.valueOf = function () {\n\tif (typeof arguments[0] === \"string\") {\n\t\tlet str = arguments[0];\n\t\treturn DD.parse(str);\n\t} else if (typeof arguments[0] === \"number\") {\n\t\tlet x = arguments[0];\n\t\treturn new DD(x);\n\t}\n};\nDD.sqrt = function (x) {\n\treturn DD.valueOf(x).sqrt();\n};\nDD.parse = function (str) {\n\tvar i = 0;\n\tvar strlen = str.length;\n\twhile (Character.isWhitespace(str.charAt(i))) i++;\n\tvar isNegative = false;\n\tif (i < strlen) {\n\t\tvar signCh = str.charAt(i);\n\t\tif (signCh === '-' || signCh === '+') {\n\t\t\ti++;\n\t\t\tif (signCh === '-') isNegative = true;\n\t\t}\n\t}\n\tvar val = new DD();\n\tvar numDigits = 0;\n\tvar numBeforeDec = 0;\n\tvar exp = 0;\n\twhile (true) {\n\t\tif (i >= strlen) break;\n\t\tvar ch = str.charAt(i);\n\t\ti++;\n\t\tif (Character.isDigit(ch)) {\n\t\t\tvar d = ch - '0';\n\t\t\tval.selfMultiply(DD.TEN);\n\t\t\tval.selfAdd(d);\n\t\t\tnumDigits++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '.') {\n\t\t\tnumBeforeDec = numDigits;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === 'e' || ch === 'E') {\n\t\t\tvar expStr = str.substring(i);\n\t\t\ttry {\n\t\t\t\texp = Integer.parseInt(expStr);\n\t\t\t} catch (ex) {\n\t\t\t\tif (ex instanceof NumberFormatException) {\n\t\t\t\t\tthrow new NumberFormatException(\"Invalid exponent \" + expStr + \" in string \" + str);\n\t\t\t\t} else throw ex;\n\t\t\t} finally {}\n\t\t\tbreak;\n\t\t}\n\t\tthrow new NumberFormatException(\"Unexpected character '\" + ch + \"' at position \" + i + \" in string \" + str);\n\t}\n\tvar val2 = val;\n\tvar numDecPlaces = numDigits - numBeforeDec - exp;\n\tif (numDecPlaces === 0) {\n\t\tval2 = val;\n\t} else if (numDecPlaces > 0) {\n\t\tvar scale = DD.TEN.pow(numDecPlaces);\n\t\tval2 = val.divide(scale);\n\t} else if (numDecPlaces < 0) {\n\t\tvar scale = DD.TEN.pow(-numDecPlaces);\n\t\tval2 = val.multiply(scale);\n\t}\n\tif (isNegative) {\n\t\treturn val2.negate();\n\t}\n\treturn val2;\n};\nDD.createNaN = function () {\n\treturn new DD(Double.NaN, Double.NaN);\n};\nDD.copy = function (dd) {\n\treturn new DD(dd);\n};\nDD.magnitude = function (x) {\n\tvar xAbs = Math.abs(x);\n\tvar xLog10 = Math.log(xAbs) / Math.log(10);\n\tvar xMag = Math.trunc(Math.floor(xLog10));\n\tvar xApprox = Math.pow(10, xMag);\n\tif (xApprox * 10 <= xAbs) xMag += 1;\n\treturn xMag;\n};\nDD.stringOfChar = function (ch, len) {\n\tvar buf = new StringBuffer();\n\tfor (var i = 0; i < len; i++) {\n\t\tbuf.append(ch);\n\t}\n\treturn buf.toString();\n};\nDD.PI = new DD(3.141592653589793116e+00, 1.224646799147353207e-16);\nDD.TWO_PI = new DD(6.283185307179586232e+00, 2.449293598294706414e-16);\nDD.PI_2 = new DD(1.570796326794896558e+00, 6.123233995736766036e-17);\nDD.E = new DD(2.718281828459045091e+00, 1.445646891729250158e-16);\nDD.NaN = new DD(Double.NaN, Double.NaN);\nDD.EPS = 1.23259516440783e-32;\nDD.SPLIT = 134217729.0;\nDD.MAX_PRINT_DIGITS = 32;\nDD.TEN = DD.valueOf(10.0);\nDD.ONE = DD.valueOf(1.0);\nDD.SCI_NOT_EXPONENT_CHAR = \"E\";\nDD.SCI_NOT_ZERO = \"0.0E0\";\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport DD from '../math/DD';\nexport default function CGAlgorithmsDD() {}\nextend(CGAlgorithmsDD.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CGAlgorithmsDD;\n\t}\n});\nCGAlgorithmsDD.orientationIndex = function (p1, p2, q) {\n\tvar index = CGAlgorithmsDD.orientationIndexFilter(p1, p2, q);\n\tif (index <= 1) return index;\n\tvar dx1 = DD.valueOf(p2.x).selfAdd(-p1.x);\n\tvar dy1 = DD.valueOf(p2.y).selfAdd(-p1.y);\n\tvar dx2 = DD.valueOf(q.x).selfAdd(-p2.x);\n\tvar dy2 = DD.valueOf(q.y).selfAdd(-p2.y);\n\treturn dx1.selfMultiply(dy2).selfSubtract(dy1.selfMultiply(dx2)).signum();\n};\nCGAlgorithmsDD.signOfDet2x2 = function () {\n\tif (arguments[0] instanceof DD) {\n\t\tlet x1 = arguments[0], y1 = arguments[1], x2 = arguments[2], y2 = arguments[3];\n\t\tvar det = x1.multiply(y2).selfSubtract(y1.multiply(x2));\n\t\treturn det.signum();\n\t} else if (typeof arguments[0] === \"number\") {\n\t\tlet dx1 = arguments[0], dy1 = arguments[1], dx2 = arguments[2], dy2 = arguments[3];\n\t\tvar x1 = DD.valueOf(dx1);\n\t\tvar y1 = DD.valueOf(dy1);\n\t\tvar x2 = DD.valueOf(dx2);\n\t\tvar y2 = DD.valueOf(dy2);\n\t\tvar det = x1.multiply(y2).selfSubtract(y1.multiply(x2));\n\t\treturn det.signum();\n\t}\n};\nCGAlgorithmsDD.intersection = function (p1, p2, q1, q2) {\n\tvar denom1 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p2.x).selfSubtract(p1.x));\n\tvar denom2 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p2.y).selfSubtract(p1.y));\n\tvar denom = denom1.subtract(denom2);\n\tvar numx1 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y));\n\tvar numx2 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x));\n\tvar numx = numx1.subtract(numx2);\n\tvar fracP = numx.selfDivide(denom).doubleValue();\n\tvar x = DD.valueOf(p1.x).selfAdd(DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(fracP)).doubleValue();\n\tvar numy1 = DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y));\n\tvar numy2 = DD.valueOf(p2.y).selfSubtract(p1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x));\n\tvar numy = numy1.subtract(numy2);\n\tvar fracQ = numy.selfDivide(denom).doubleValue();\n\tvar y = DD.valueOf(q1.y).selfAdd(DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(fracQ)).doubleValue();\n\treturn new Coordinate(x, y);\n};\nCGAlgorithmsDD.orientationIndexFilter = function (pa, pb, pc) {\n\tvar detsum = null;\n\tvar detleft = (pa.x - pc.x) * (pb.y - pc.y);\n\tvar detright = (pa.y - pc.y) * (pb.x - pc.x);\n\tvar det = detleft - detright;\n\tif (detleft > 0.0) {\n\t\tif (detright <= 0.0) {\n\t\t\treturn CGAlgorithmsDD.signum(det);\n\t\t} else {\n\t\t\tdetsum = detleft + detright;\n\t\t}\n\t} else if (detleft < 0.0) {\n\t\tif (detright >= 0.0) {\n\t\t\treturn CGAlgorithmsDD.signum(det);\n\t\t} else {\n\t\t\tdetsum = -detleft - detright;\n\t\t}\n\t} else {\n\t\treturn CGAlgorithmsDD.signum(det);\n\t}\n\tvar errbound = CGAlgorithmsDD.DP_SAFE_EPSILON * detsum;\n\tif (det >= errbound || -det >= errbound) {\n\t\treturn CGAlgorithmsDD.signum(det);\n\t}\n\treturn 2;\n};\nCGAlgorithmsDD.signum = function (x) {\n\tif (x > 0) return 1;\n\tif (x < 0) return -1;\n\treturn 0;\n};\nCGAlgorithmsDD.DP_SAFE_EPSILON = 1e-15;\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport CGAlgorithmsDD from './CGAlgorithmsDD';\nexport default function Orientation() {}\nextend(Orientation.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Orientation;\n\t}\n});\nOrientation.index = function (p1, p2, q) {\n\treturn CGAlgorithmsDD.orientationIndex(p1, p2, q);\n};\nOrientation.isCCW = function (ring) {\n\tvar nPts = ring.length - 1;\n\tif (nPts < 3) throw new IllegalArgumentException(\"Ring has fewer than 4 points, so orientation cannot be determined\");\n\tvar hiPt = ring[0];\n\tvar hiIndex = 0;\n\tfor (var i = 1; i <= nPts; i++) {\n\t\tvar p = ring[i];\n\t\tif (p.y > hiPt.y) {\n\t\t\thiPt = p;\n\t\t\thiIndex = i;\n\t\t}\n\t}\n\tvar iPrev = hiIndex;\n\tdo {\n\t\tiPrev = iPrev - 1;\n\t\tif (iPrev < 0) iPrev = nPts;\n\t} while (ring[iPrev].equals2D(hiPt) && iPrev !== hiIndex);\n\tvar iNext = hiIndex;\n\tdo {\n\t\tiNext = (iNext + 1) % nPts;\n\t} while (ring[iNext].equals2D(hiPt) && iNext !== hiIndex);\n\tvar prev = ring[iPrev];\n\tvar next = ring[iNext];\n\tif (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next)) return false;\n\tvar disc = Orientation.index(prev, hiPt, next);\n\tvar isCCW = null;\n\tif (disc === 0) {\n\t\tisCCW = prev.x > next.x;\n\t} else {\n\t\tisCCW = disc > 0;\n\t}\n\treturn isCCW;\n};\nOrientation.CLOCKWISE = -1;\nOrientation.RIGHT = Orientation.CLOCKWISE;\nOrientation.COUNTERCLOCKWISE = 1;\nOrientation.LEFT = Orientation.COUNTERCLOCKWISE;\nOrientation.COLLINEAR = 0;\nOrientation.STRAIGHT = Orientation.COLLINEAR;\n","export default function System () { }\n\nSystem.arraycopy = (src, srcPos, dest, destPos, len) => {\n let c = 0\n for (let i = srcPos; i < srcPos + len; i++) {\n dest[destPos + c] = src[i]\n c++\n }\n}\n\nSystem.getProperty = (name) => {\n return {\n 'line.separator': '\\n'\n }[name]\n}\n","import NotRepresentableException from './NotRepresentableException';\nimport Coordinate from '../geom/Coordinate';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nexport default function HCoordinate() {\n\tthis.x = null;\n\tthis.y = null;\n\tthis.w = null;\n\tif (arguments.length === 0) {\n\t\tthis.x = 0.0;\n\t\tthis.y = 0.0;\n\t\tthis.w = 1.0;\n\t} else if (arguments.length === 1) {\n\t\tlet p = arguments[0];\n\t\tthis.x = p.x;\n\t\tthis.y = p.y;\n\t\tthis.w = 1.0;\n\t} else if (arguments.length === 2) {\n\t\tif (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\") {\n\t\t\tlet _x = arguments[0], _y = arguments[1];\n\t\t\tthis.x = _x;\n\t\t\tthis.y = _y;\n\t\t\tthis.w = 1.0;\n\t\t} else if (arguments[0] instanceof HCoordinate && arguments[1] instanceof HCoordinate) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\t\tthis.x = p1.y * p2.w - p2.y * p1.w;\n\t\t\tthis.y = p2.x * p1.w - p1.x * p2.w;\n\t\t\tthis.w = p1.x * p2.y - p2.x * p1.y;\n\t\t} else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n\t\t\tlet p1 = arguments[0], p2 = arguments[1];\n\t\t\tthis.x = p1.y - p2.y;\n\t\t\tthis.y = p2.x - p1.x;\n\t\t\tthis.w = p1.x * p2.y - p2.x * p1.y;\n\t\t}\n\t} else if (arguments.length === 3) {\n\t\tlet _x = arguments[0], _y = arguments[1], _w = arguments[2];\n\t\tthis.x = _x;\n\t\tthis.y = _y;\n\t\tthis.w = _w;\n\t} else if (arguments.length === 4) {\n\t\tlet p1 = arguments[0], p2 = arguments[1], q1 = arguments[2], q2 = arguments[3];\n\t\tvar px = p1.y - p2.y;\n\t\tvar py = p2.x - p1.x;\n\t\tvar pw = p1.x * p2.y - p2.x * p1.y;\n\t\tvar qx = q1.y - q2.y;\n\t\tvar qy = q2.x - q1.x;\n\t\tvar qw = q1.x * q2.y - q2.x * q1.y;\n\t\tthis.x = py * qw - qy * pw;\n\t\tthis.y = qx * pw - px * qw;\n\t\tthis.w = px * qy - qx * py;\n\t}\n}\nextend(HCoordinate.prototype, {\n\tgetY: function () {\n\t\tvar a = this.y / this.w;\n\t\tif (Double.isNaN(a) || Double.isInfinite(a)) {\n\t\t\tthrow new NotRepresentableException();\n\t\t}\n\t\treturn a;\n\t},\n\tgetX: function () {\n\t\tvar a = this.x / this.w;\n\t\tif (Double.isNaN(a) || Double.isInfinite(a)) {\n\t\t\tthrow new NotRepresentableException();\n\t\t}\n\t\treturn a;\n\t},\n\tgetCoordinate: function () {\n\t\tvar p = new Coordinate();\n\t\tp.x = this.getX();\n\t\tp.y = this.getY();\n\t\treturn p;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn HCoordinate;\n\t}\n});\nHCoordinate.intersection = function (p1, p2, q1, q2) {\n\tvar px = p1.y - p2.y;\n\tvar py = p2.x - p1.x;\n\tvar pw = p1.x * p2.y - p2.x * p1.y;\n\tvar qx = q1.y - q2.y;\n\tvar qy = q2.x - q1.x;\n\tvar qw = q1.x * q2.y - q2.x * q1.y;\n\tvar x = py * qw - qy * pw;\n\tvar y = qx * pw - px * qw;\n\tvar w = px * qy - qx * py;\n\tvar xInt = x / w;\n\tvar yInt = y / w;\n\tif (Double.isNaN(xInt) || (Double.isInfinite(xInt) || Double.isNaN(yInt)) || Double.isInfinite(yInt)) {\n\t\tthrow new NotRepresentableException();\n\t}\n\treturn new Coordinate(xInt, yInt);\n};\n","import Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nexport default function MathUtil() {}\nextend(MathUtil.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MathUtil;\n\t}\n});\nMathUtil.log10 = function (x) {\n\tvar ln = Math.log(x);\n\tif (Double.isInfinite(ln)) return ln;\n\tif (Double.isNaN(ln)) return ln;\n\treturn ln / MathUtil.LOG_10;\n};\nMathUtil.min = function (v1, v2, v3, v4) {\n\tvar min = v1;\n\tif (v2 < min) min = v2;\n\tif (v3 < min) min = v3;\n\tif (v4 < min) min = v4;\n\treturn min;\n};\nMathUtil.clamp = function () {\n\tif (typeof arguments[2] === \"number\" && (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\")) {\n\t\tlet x = arguments[0], min = arguments[1], max = arguments[2];\n\t\tif (x < min) return min;\n\t\tif (x > max) return max;\n\t\treturn x;\n\t} else if (Number.isInteger(arguments[2]) && (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1]))) {\n\t\tlet x = arguments[0], min = arguments[1], max = arguments[2];\n\t\tif (x < min) return min;\n\t\tif (x > max) return max;\n\t\treturn x;\n\t}\n};\nMathUtil.wrap = function (index, max) {\n\tif (index < 0) {\n\t\treturn max - -index % max;\n\t}\n\treturn index % max;\n};\nMathUtil.max = function () {\n\tif (arguments.length === 3) {\n\t\tlet v1 = arguments[0], v2 = arguments[1], v3 = arguments[2];\n\t\tvar max = v1;\n\t\tif (v2 > max) max = v2;\n\t\tif (v3 > max) max = v3;\n\t\treturn max;\n\t} else if (arguments.length === 4) {\n\t\tlet v1 = arguments[0], v2 = arguments[1], v3 = arguments[2], v4 = arguments[3];\n\t\tvar max = v1;\n\t\tif (v2 > max) max = v2;\n\t\tif (v3 > max) max = v3;\n\t\tif (v4 > max) max = v4;\n\t\treturn max;\n\t}\n};\nMathUtil.average = function (x1, x2) {\n\treturn (x1 + x2) / 2.0;\n};\nMathUtil.LOG_10 = Math.log(10);\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport MathUtil from '../math/MathUtil';\nimport Envelope from '../geom/Envelope';\nexport default function Distance() {}\nextend(Distance.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Distance;\n\t}\n});\nDistance.segmentToSegment = function (A, B, C, D) {\n\tif (A.equals(B)) return Distance.pointToSegment(A, C, D);\n\tif (C.equals(D)) return Distance.pointToSegment(D, A, B);\n\tvar noIntersection = false;\n\tif (!Envelope.intersects(A, B, C, D)) {\n\t\tnoIntersection = true;\n\t} else {\n\t\tvar denom = (B.x - A.x) * (D.y - C.y) - (B.y - A.y) * (D.x - C.x);\n\t\tif (denom === 0) {\n\t\t\tnoIntersection = true;\n\t\t} else {\n\t\t\tvar r_num = (A.y - C.y) * (D.x - C.x) - (A.x - C.x) * (D.y - C.y);\n\t\t\tvar s_num = (A.y - C.y) * (B.x - A.x) - (A.x - C.x) * (B.y - A.y);\n\t\t\tvar s = s_num / denom;\n\t\t\tvar r = r_num / denom;\n\t\t\tif (r < 0 || r > 1 || s < 0 || s > 1) {\n\t\t\t\tnoIntersection = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (noIntersection) {\n\t\treturn MathUtil.min(Distance.pointToSegment(A, C, D), Distance.pointToSegment(B, C, D), Distance.pointToSegment(C, A, B), Distance.pointToSegment(D, A, B));\n\t}\n\treturn 0.0;\n};\nDistance.pointToSegment = function (p, A, B) {\n\tif (A.x === B.x && A.y === B.y) return p.distance(A);\n\tvar len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n\tvar r = ((p.x - A.x) * (B.x - A.x) + (p.y - A.y) * (B.y - A.y)) / len2;\n\tif (r <= 0.0) return p.distance(A);\n\tif (r >= 1.0) return p.distance(B);\n\tvar s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2;\n\treturn Math.abs(s) * Math.sqrt(len2);\n};\nDistance.pointToLinePerpendicular = function (p, A, B) {\n\tvar len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n\tvar s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2;\n\treturn Math.abs(s) * Math.sqrt(len2);\n};\nDistance.pointToSegmentString = function (p, line) {\n\tif (line.length === 0) throw new IllegalArgumentException(\"Line array must contain at least one vertex\");\n\tvar minDistance = p.distance(line[0]);\n\tfor (var i = 0; i < line.length - 1; i++) {\n\t\tvar dist = Distance.pointToSegment(p, line[i], line[i + 1]);\n\t\tif (dist < minDistance) {\n\t\t\tminDistance = dist;\n\t\t}\n\t}\n\treturn minDistance;\n};\n","import extend from '../../../../extend';\nimport Cloneable from '../../../../java/lang/Cloneable';\nexport default function CoordinateSequence() {}\nextend(CoordinateSequence.prototype, {\n\tsetOrdinate: function (index, ordinateIndex, value) {},\n\tsize: function () {},\n\tgetOrdinate: function (index, ordinateIndex) {},\n\tgetCoordinate: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet i = arguments[0];\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], coord = arguments[1];\n\t\t}\n\t},\n\tgetCoordinateCopy: function (i) {},\n\tgetDimension: function () {},\n\tgetX: function (index) {},\n\texpandEnvelope: function (env) {},\n\tcopy: function () {},\n\tgetY: function (index) {},\n\ttoCoordinateArray: function () {},\n\tinterfaces_: function () {\n\t\treturn [Cloneable];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateSequence;\n\t}\n});\nCoordinateSequence.X = 0;\nCoordinateSequence.Y = 1;\nCoordinateSequence.Z = 2;\nCoordinateSequence.M = 3;\n","import hasInterface from '../../../../hasInterface';\nimport extend from '../../../../extend';\nimport CoordinateSequence from './CoordinateSequence';\nexport default function CoordinateSequenceFactory() {}\nextend(CoordinateSequenceFactory.prototype, {\n\tcreate: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordSeq = arguments[0];\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet size = arguments[0], dimension = arguments[1];\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateSequenceFactory;\n\t}\n});\n","import extend from '../../../../extend';\nexport default function GeometryComponentFilter() {}\nextend(GeometryComponentFilter.prototype, {\n\tfilter: function (geom) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryComponentFilter;\n\t}\n});\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Cloneable from '../../../../java/lang/Cloneable';\nimport Serializable from '../../../../java/io/Serializable';\nimport Envelope from './Envelope';\nimport Assert from '../util/Assert';\nexport default function Geometry() {\n\tthis._envelope = null;\n\tthis._factory = null;\n\tthis._SRID = null;\n\tthis._userData = null;\n\tlet factory = arguments[0];\n\tthis._factory = factory;\n\tthis._SRID = factory.getSRID();\n}\nextend(Geometry.prototype, {\n\tisGeometryCollection: function () {\n\t\treturn this.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION;\n\t},\n\tgetFactory: function () {\n\t\treturn this._factory;\n\t},\n\tgetGeometryN: function (n) {\n\t\treturn this;\n\t},\n\tgetArea: function () {\n\t\treturn 0.0;\n\t},\n\tisRectangle: function () {\n\t\treturn false;\n\t},\n\tequals: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet g = arguments[0];\n\t\t\tif (g === null) return false;\n\t\t\treturn this.equalsTopo(g);\n\t\t} else if (arguments[0] instanceof Object) {\n\t\t\tlet o = arguments[0];\n\t\t\tif (!(o instanceof Geometry)) return false;\n\t\t\tvar g = o;\n\t\t\treturn this.equalsExact(g);\n\t\t}\n\t},\n\tequalsExact: function (other) {\n\t\treturn this === other || this.equalsExact(other, 0);\n\t},\n\tgeometryChanged: function () {\n\t\tthis.apply(Geometry.geometryChangedFilter);\n\t},\n\tgeometryChangedAction: function () {\n\t\tthis._envelope = null;\n\t},\n\tequalsNorm: function (g) {\n\t\tif (g === null) return false;\n\t\treturn this.norm().equalsExact(g.norm());\n\t},\n\tgetLength: function () {\n\t\treturn 0.0;\n\t},\n\tgetNumGeometries: function () {\n\t\treturn 1;\n\t},\n\tcompareTo: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar other = o;\n\t\t\tif (this.getTypeCode() !== other.getTypeCode()) {\n\t\t\t\treturn this.getTypeCode() - other.getTypeCode();\n\t\t\t}\n\t\t\tif (this.isEmpty() && other.isEmpty()) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (other.isEmpty()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn this.compareToSameClass(o);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar other = o;\n\t\t\tif (this.getTypeCode() !== other.getTypeCode()) {\n\t\t\t\treturn this.getTypeCode() - other.getTypeCode();\n\t\t\t}\n\t\t\tif (this.isEmpty() && other.isEmpty()) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (other.isEmpty()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn this.compareToSameClass(o, comp);\n\t\t}\n\t},\n\tgetUserData: function () {\n\t\treturn this._userData;\n\t},\n\tgetSRID: function () {\n\t\treturn this._SRID;\n\t},\n\tgetEnvelope: function () {\n\t\treturn this.getFactory().toGeometry(this.getEnvelopeInternal());\n\t},\n\tcheckNotGeometryCollection: function (g) {\n\t\tif (g.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION) {\n\t\t\tthrow new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\t\t}\n\t},\n\tequal: function (a, b, tolerance) {\n\t\tif (tolerance === 0) {\n\t\t\treturn a.equals(b);\n\t\t}\n\t\treturn a.distance(b) <= tolerance;\n\t},\n\tnorm: function () {\n\t\tvar copy = this.copy();\n\t\tcopy.normalize();\n\t\treturn copy;\n\t},\n\tgetPrecisionModel: function () {\n\t\treturn this._factory.getPrecisionModel();\n\t},\n\tgetEnvelopeInternal: function () {\n\t\tif (this._envelope === null) {\n\t\t\tthis._envelope = this.computeEnvelopeInternal();\n\t\t}\n\t\treturn new Envelope(this._envelope);\n\t},\n\tsetSRID: function (SRID) {\n\t\tthis._SRID = SRID;\n\t},\n\tsetUserData: function (userData) {\n\t\tthis._userData = userData;\n\t},\n\tcompare: function (a, b) {\n\t\tvar i = a.iterator();\n\t\tvar j = b.iterator();\n\t\twhile (i.hasNext() && j.hasNext()) {\n\t\t\tvar aElement = i.next();\n\t\t\tvar bElement = j.next();\n\t\t\tvar comparison = aElement.compareTo(bElement);\n\t\t\tif (comparison !== 0) {\n\t\t\t\treturn comparison;\n\t\t\t}\n\t\t}\n\t\tif (i.hasNext()) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (j.hasNext()) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t},\n\thashCode: function () {\n\t\treturn this.getEnvelopeInternal().hashCode();\n\t},\n\tisGeometryCollectionOrDerived: function () {\n\t\tif (this.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION || this.getTypeCode() === Geometry.TYPECODE_MULTIPOINT || this.getTypeCode() === Geometry.TYPECODE_MULTILINESTRING || this.getTypeCode() === Geometry.TYPECODE_MULTIPOLYGON) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Cloneable, Comparable, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn Geometry;\n\t}\n});\nGeometry.hasNonEmptyElements = function (geometries) {\n\tfor (var i = 0; i < geometries.length; i++) {\n\t\tif (!geometries[i].isEmpty()) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\nGeometry.hasNullElements = function (array) {\n\tfor (var i = 0; i < array.length; i++) {\n\t\tif (array[i] === null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\nGeometry.serialVersionUID = 8763622679187376702;\nGeometry.TYPECODE_POINT = 0;\nGeometry.TYPECODE_MULTIPOINT = 1;\nGeometry.TYPECODE_LINESTRING = 2;\nGeometry.TYPECODE_LINEARRING = 3;\nGeometry.TYPECODE_MULTILINESTRING = 4;\nGeometry.TYPECODE_POLYGON = 5;\nGeometry.TYPECODE_MULTIPOLYGON = 6;\nGeometry.TYPECODE_GEOMETRYCOLLECTION = 7;\nGeometry.TYPENAME_POINT = \"Point\";\nGeometry.TYPENAME_MULTIPOINT = \"MultiPoint\";\nGeometry.TYPENAME_LINESTRING = \"LineString\";\nGeometry.TYPENAME_LINEARRING = \"LinearRing\";\nGeometry.TYPENAME_MULTILINESTRING = \"MultiLineString\";\nGeometry.TYPENAME_POLYGON = \"Polygon\";\nGeometry.TYPENAME_MULTIPOLYGON = \"MultiPolygon\";\nGeometry.TYPENAME_GEOMETRYCOLLECTION = \"GeometryCollection\";\nGeometry.geometryChangedFilter = {\n\tinterfaces_: function () {\n\t\treturn [GeometryComponentFilter];\n\t},\n\tfilter: function (geom) {\n\t\tgeom.geometryChangedAction();\n\t}\n};\n","import extend from '../../../../extend';\nexport default function CoordinateFilter() {}\nextend(CoordinateFilter.prototype, {\n\tfilter: function (coord) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateFilter;\n\t}\n});\n","import extend from '../../../../extend';\nexport default function BoundaryNodeRule() {}\nextend(BoundaryNodeRule.prototype, {\n\tisInBoundary: function (boundaryCount) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn BoundaryNodeRule;\n\t}\n});\nfunction Mod2BoundaryNodeRule() {}\nextend(Mod2BoundaryNodeRule.prototype, {\n\tisInBoundary: function (boundaryCount) {\n\t\treturn boundaryCount % 2 === 1;\n\t},\n\tinterfaces_: function () {\n\t\treturn [BoundaryNodeRule];\n\t},\n\tgetClass: function () {\n\t\treturn Mod2BoundaryNodeRule;\n\t}\n});\nfunction EndPointBoundaryNodeRule() {}\nextend(EndPointBoundaryNodeRule.prototype, {\n\tisInBoundary: function (boundaryCount) {\n\t\treturn boundaryCount > 0;\n\t},\n\tinterfaces_: function () {\n\t\treturn [BoundaryNodeRule];\n\t},\n\tgetClass: function () {\n\t\treturn EndPointBoundaryNodeRule;\n\t}\n});\nfunction MultiValentEndPointBoundaryNodeRule() {}\nextend(MultiValentEndPointBoundaryNodeRule.prototype, {\n\tisInBoundary: function (boundaryCount) {\n\t\treturn boundaryCount > 1;\n\t},\n\tinterfaces_: function () {\n\t\treturn [BoundaryNodeRule];\n\t},\n\tgetClass: function () {\n\t\treturn MultiValentEndPointBoundaryNodeRule;\n\t}\n});\nfunction MonoValentEndPointBoundaryNodeRule() {}\nextend(MonoValentEndPointBoundaryNodeRule.prototype, {\n\tisInBoundary: function (boundaryCount) {\n\t\treturn boundaryCount === 1;\n\t},\n\tinterfaces_: function () {\n\t\treturn [BoundaryNodeRule];\n\t},\n\tgetClass: function () {\n\t\treturn MonoValentEndPointBoundaryNodeRule;\n\t}\n});\nBoundaryNodeRule.Mod2BoundaryNodeRule = Mod2BoundaryNodeRule;\nBoundaryNodeRule.EndPointBoundaryNodeRule = EndPointBoundaryNodeRule;\nBoundaryNodeRule.MultiValentEndPointBoundaryNodeRule = MultiValentEndPointBoundaryNodeRule;\nBoundaryNodeRule.MonoValentEndPointBoundaryNodeRule = MonoValentEndPointBoundaryNodeRule;\nBoundaryNodeRule.MOD2_BOUNDARY_RULE = new Mod2BoundaryNodeRule();\nBoundaryNodeRule.ENDPOINT_BOUNDARY_RULE = new EndPointBoundaryNodeRule();\nBoundaryNodeRule.MULTIVALENT_ENDPOINT_BOUNDARY_RULE = new MultiValentEndPointBoundaryNodeRule();\nBoundaryNodeRule.MONOVALENT_ENDPOINT_BOUNDARY_RULE = new MonoValentEndPointBoundaryNodeRule();\nBoundaryNodeRule.OGC_SFS_BOUNDARY_RULE = BoundaryNodeRule.MOD2_BOUNDARY_RULE;\n","import CoordinateList from './CoordinateList';\nimport Coordinate from './Coordinate';\nimport extend from '../../../../extend';\nimport MathUtil from '../math/MathUtil';\nimport System from '../../../../java/lang/System';\nimport Comparator from '../../../../java/util/Comparator';\nimport Envelope from './Envelope';\nexport default function CoordinateArrays() {}\nextend(CoordinateArrays.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateArrays;\n\t}\n});\nCoordinateArrays.isRing = function (pts) {\n\tif (pts.length < 4) return false;\n\tif (!pts[0].equals2D(pts[pts.length - 1])) return false;\n\treturn true;\n};\nCoordinateArrays.ptNotInList = function (testPts, pts) {\n\tfor (var i = 0; i < testPts.length; i++) {\n\t\tvar testPt = testPts[i];\n\t\tif (CoordinateArrays.indexOf(testPt, pts) < 0) return testPt;\n\t}\n\treturn null;\n};\nCoordinateArrays.scroll = function (coordinates, firstCoordinate) {\n\tvar i = CoordinateArrays.indexOf(firstCoordinate, coordinates);\n\tif (i < 0) return null;\n\tvar newCoordinates = new Array(coordinates.length).fill(null);\n\tSystem.arraycopy(coordinates, i, newCoordinates, 0, coordinates.length - i);\n\tSystem.arraycopy(coordinates, 0, newCoordinates, coordinates.length - i, i);\n\tSystem.arraycopy(newCoordinates, 0, coordinates, 0, coordinates.length);\n};\nCoordinateArrays.equals = function () {\n\tif (arguments.length === 2) {\n\t\tlet coord1 = arguments[0], coord2 = arguments[1];\n\t\tif (coord1 === coord2) return true;\n\t\tif (coord1 === null || coord2 === null) return false;\n\t\tif (coord1.length !== coord2.length) return false;\n\t\tfor (var i = 0; i < coord1.length; i++) {\n\t\t\tif (!coord1[i].equals(coord2[i])) return false;\n\t\t}\n\t\treturn true;\n\t} else if (arguments.length === 3) {\n\t\tlet coord1 = arguments[0], coord2 = arguments[1], coordinateComparator = arguments[2];\n\t\tif (coord1 === coord2) return true;\n\t\tif (coord1 === null || coord2 === null) return false;\n\t\tif (coord1.length !== coord2.length) return false;\n\t\tfor (var i = 0; i < coord1.length; i++) {\n\t\t\tif (coordinateComparator.compare(coord1[i], coord2[i]) !== 0) return false;\n\t\t}\n\t\treturn true;\n\t}\n};\nCoordinateArrays.intersection = function (coordinates, env) {\n\tvar coordList = new CoordinateList();\n\tfor (var i = 0; i < coordinates.length; i++) {\n\t\tif (env.intersects(coordinates[i])) coordList.add(coordinates[i], true);\n\t}\n\treturn coordList.toCoordinateArray();\n};\nCoordinateArrays.hasRepeatedPoints = function (coord) {\n\tfor (var i = 1; i < coord.length; i++) {\n\t\tif (coord[i - 1].equals(coord[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\nCoordinateArrays.removeRepeatedPoints = function (coord) {\n\tif (!CoordinateArrays.hasRepeatedPoints(coord)) return coord;\n\tvar coordList = new CoordinateList(coord, false);\n\treturn coordList.toCoordinateArray();\n};\nCoordinateArrays.reverse = function (coord) {\n\tvar last = coord.length - 1;\n\tvar mid = Math.trunc(last / 2);\n\tfor (var i = 0; i <= mid; i++) {\n\t\tvar tmp = coord[i];\n\t\tcoord[i] = coord[last - i];\n\t\tcoord[last - i] = tmp;\n\t}\n};\nCoordinateArrays.removeNull = function (coord) {\n\tvar nonNull = 0;\n\tfor (var i = 0; i < coord.length; i++) {\n\t\tif (coord[i] !== null) nonNull++;\n\t}\n\tvar newCoord = new Array(nonNull).fill(null);\n\tif (nonNull === 0) return newCoord;\n\tvar j = 0;\n\tfor (var i = 0; i < coord.length; i++) {\n\t\tif (coord[i] !== null) newCoord[j++] = coord[i];\n\t}\n\treturn newCoord;\n};\nCoordinateArrays.copyDeep = function () {\n\tif (arguments.length === 1) {\n\t\tlet coordinates = arguments[0];\n\t\tvar copy = new Array(coordinates.length).fill(null);\n\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\tcopy[i] = new Coordinate(coordinates[i]);\n\t\t}\n\t\treturn copy;\n\t} else if (arguments.length === 5) {\n\t\tlet src = arguments[0], srcStart = arguments[1], dest = arguments[2], destStart = arguments[3], length = arguments[4];\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tdest[destStart + i] = new Coordinate(src[srcStart + i]);\n\t\t}\n\t}\n};\nCoordinateArrays.isEqualReversed = function (pts1, pts2) {\n\tfor (var i = 0; i < pts1.length; i++) {\n\t\tvar p1 = pts1[i];\n\t\tvar p2 = pts2[pts1.length - i - 1];\n\t\tif (p1.compareTo(p2) !== 0) return false;\n\t}\n\treturn true;\n};\nCoordinateArrays.envelope = function (coordinates) {\n\tvar env = new Envelope();\n\tfor (var i = 0; i < coordinates.length; i++) {\n\t\tenv.expandToInclude(coordinates[i]);\n\t}\n\treturn env;\n};\nCoordinateArrays.toCoordinateArray = function (coordList) {\n\treturn coordList.toArray(CoordinateArrays.coordArrayType);\n};\nCoordinateArrays.atLeastNCoordinatesOrNothing = function (n, c) {\n\treturn c.length >= n ? c : [];\n};\nCoordinateArrays.indexOf = function (coordinate, coordinates) {\n\tfor (var i = 0; i < coordinates.length; i++) {\n\t\tif (coordinate.equals(coordinates[i])) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nCoordinateArrays.increasingDirection = function (pts) {\n\tfor (var i = 0; i < Math.trunc(pts.length / 2); i++) {\n\t\tvar j = pts.length - 1 - i;\n\t\tvar comp = pts[i].compareTo(pts[j]);\n\t\tif (comp !== 0) return comp;\n\t}\n\treturn 1;\n};\nCoordinateArrays.compare = function (pts1, pts2) {\n\tvar i = 0;\n\twhile (i < pts1.length && i < pts2.length) {\n\t\tvar compare = pts1[i].compareTo(pts2[i]);\n\t\tif (compare !== 0) return compare;\n\t\ti++;\n\t}\n\tif (i < pts2.length) return -1;\n\tif (i < pts1.length) return 1;\n\treturn 0;\n};\nCoordinateArrays.minCoordinate = function (coordinates) {\n\tvar minCoord = null;\n\tfor (var i = 0; i < coordinates.length; i++) {\n\t\tif (minCoord === null || minCoord.compareTo(coordinates[i]) > 0) {\n\t\t\tminCoord = coordinates[i];\n\t\t}\n\t}\n\treturn minCoord;\n};\nCoordinateArrays.extract = function (pts, start, end) {\n\tstart = MathUtil.clamp(start, 0, pts.length);\n\tend = MathUtil.clamp(end, -1, pts.length);\n\tvar npts = end - start + 1;\n\tif (end < 0) npts = 0;\n\tif (start >= pts.length) npts = 0;\n\tif (end < start) npts = 0;\n\tvar extractPts = new Array(npts).fill(null);\n\tif (npts === 0) return extractPts;\n\tvar iPts = 0;\n\tfor (var i = start; i <= end; i++) {\n\t\textractPts[iPts++] = pts[i];\n\t}\n\treturn extractPts;\n};\nfunction ForwardComparator() {}\nextend(ForwardComparator.prototype, {\n\tcompare: function (o1, o2) {\n\t\tvar pts1 = o1;\n\t\tvar pts2 = o2;\n\t\treturn CoordinateArrays.compare(pts1, pts2);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tgetClass: function () {\n\t\treturn ForwardComparator;\n\t}\n});\nfunction BidirectionalComparator() {}\nextend(BidirectionalComparator.prototype, {\n\tcompare: function (o1, o2) {\n\t\tvar pts1 = o1;\n\t\tvar pts2 = o2;\n\t\tif (pts1.length < pts2.length) return -1;\n\t\tif (pts1.length > pts2.length) return 1;\n\t\tif (pts1.length === 0) return 0;\n\t\tvar forwardComp = CoordinateArrays.compare(pts1, pts2);\n\t\tvar isEqualRev = CoordinateArrays.isEqualReversed(pts1, pts2);\n\t\tif (isEqualRev) return 0;\n\t\treturn forwardComp;\n\t},\n\tOLDcompare: function (o1, o2) {\n\t\tvar pts1 = o1;\n\t\tvar pts2 = o2;\n\t\tif (pts1.length < pts2.length) return -1;\n\t\tif (pts1.length > pts2.length) return 1;\n\t\tif (pts1.length === 0) return 0;\n\t\tvar dir1 = CoordinateArrays.increasingDirection(pts1);\n\t\tvar dir2 = CoordinateArrays.increasingDirection(pts2);\n\t\tvar i1 = dir1 > 0 ? 0 : pts1.length - 1;\n\t\tvar i2 = dir2 > 0 ? 0 : pts1.length - 1;\n\t\tfor (var i = 0; i < pts1.length; i++) {\n\t\t\tvar comparePt = pts1[i1].compareTo(pts2[i2]);\n\t\t\tif (comparePt !== 0) return comparePt;\n\t\t\ti1 += dir1;\n\t\t\ti2 += dir2;\n\t\t}\n\t\treturn 0;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tgetClass: function () {\n\t\treturn BidirectionalComparator;\n\t}\n});\nCoordinateArrays.ForwardComparator = ForwardComparator;\nCoordinateArrays.BidirectionalComparator = BidirectionalComparator;\nCoordinateArrays.coordArrayType = new Array(0).fill(null);\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Map.html\n *\n * @constructor\n * @private\n */\nexport default function Map() {};\n\n\n/**\n * Returns the value to which the specified key is mapped, or null if this map\n * contains no mapping for the key.\n * @param {Object} key\n * @return {Object}\n */\nMap.prototype.get = function() {};\n\n\n/**\n * Associates the specified value with the specified key in this map (optional\n * operation).\n * @param {Object} key\n * @param {Object} value\n * @return {Object}\n */\nMap.prototype.put = function() {};\n\n\n/**\n * Returns the number of key-value mappings in this map.\n * @return {number}\n */\nMap.prototype.size = function() {};\n\n\n/**\n * Returns a Collection view of the values contained in this map.\n * @return {javascript.util.Collection}\n */\nMap.prototype.values = function() {};\n\n/**\n * Returns a {@link Set} view of the mappings contained in this map.\n * The set is backed by the map, so changes to the map are\n * reflected in the set, and vice-versa. If the map is modified\n * while an iteration over the set is in progress (except through\n * the iterator's own remove operation, or through the\n * setValue operation on a map entry returned by the\n * iterator) the results of the iteration are undefined. The set\n * supports element removal, which removes the corresponding\n * mapping from the map, via the Iterator.remove,\n * Set.remove, removeAll, retainAll and\n * clear operations. It does not support the\n * add or addAll operations.\n *\n * @return {Set} a set view of the mappings contained in this map\n */\nMap.prototype.entrySet = function() {};\n","import Map from './Map'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedMap.html\n *\n * @extends {Map}\n * @constructor\n * @private\n */\nexport default function SortedMap() {};\nSortedMap.prototype = new Map();\n","import Collection from './Collection'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Set.html\n *\n * @extends {Collection}\n * @constructor\n * @private\n */\nexport default function Set() {};\nSet.prototype = new Collection();\n\n\n/**\n * Returns true if this set contains the specified element. More formally,\n * returns true if and only if this set contains an element e such that (o==null ?\n * e==null : o.equals(e)).\n * @param {Object} e\n * @return {boolean}\n */\nSet.prototype.contains = function() {};\n","import Collection from './Collection'\nimport Iterator from './Iterator'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\nimport Set from './Set'\n\n/**\n * @see http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html\n *\n * @extends {javascript.util.Set}\n * @constructor\n * @private\n */\nexport default function HashSet() {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n};\nHashSet.prototype = new Set();\n\n\n/**\n * @override\n */\nHashSet.prototype.contains = function(o) {\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this.array_[i];\n if (e === o) {\n return true;\n }\n }\n return false;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.add = function(o) {\n if (this.contains(o)) {\n return false;\n }\n\n this.array_.push(o);\n\n return true;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.addAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.add(i.next());\n }\n return true;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.remove = function(o) {\n throw new javascript.util.OperationNotSupported();\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.size = function() {\n return this.array_.length;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.isEmpty = function() {\n return this.array_.length === 0;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.toArray = function() {\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i]);\n }\n\n return array;\n};\n\n\n/**\n * @override\n */\nHashSet.prototype.iterator = function() {\n return new Iterator_(this);\n};\n\n\n\n/**\n * @extends {Iterator}\n * @param {HashSet} hashSet\n * @constructor\n * @private\n */\nvar Iterator_ = function(hashSet) {\n /**\n * @type {HashSet}\n * @private\n */\n this.hashSet_ = hashSet;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.next = function() {\n if (this.position_ === this.hashSet_.size()) {\n throw new NoSuchElementException();\n }\n return this.hashSet_.array_[this.position_++];\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function() {\n if (this.position_ < this.hashSet_.size()) {\n return true;\n } else {\n return false;\n }\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.remove = function() {\n throw new OperationNotSupported();\n};\n","import ArrayList from './ArrayList'\nimport SortedMap from './SortedMap'\nimport HashSet from './HashSet'\n\nconst BLACK = 0\nconst RED = 1\nfunction colorOf (p) { return (p == null ? BLACK : p.color) }\nfunction parentOf (p) { return (p == null ? null : p.parent) }\nfunction setColor (p, c) { if (p !== null) p.color = c }\nfunction leftOf (p) { return (p == null ? null : p.left) }\nfunction rightOf (p) { return (p == null ? null : p.right) }\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html\n *\n * @extends {SortedMap}\n * @constructor\n * @private\n */\nexport default function TreeMap() {\n /**\n * @type {Object}\n * @private\n */\n this.root_ = null;\n /**\n * @type {number}\n * @private\n */\n this.size_ = 0;\n};\nTreeMap.prototype = new SortedMap();\n\n\n/**\n * @override\n */\nTreeMap.prototype.get = function(key) {\n var p = this.root_;\n while (p !== null) {\n var cmp = key['compareTo'](p.key);\n if (cmp < 0) {\n p = p.left;\n } else if (cmp > 0) {\n p = p.right;\n } else {\n return p.value;\n }\n }\n return null;\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.put = function(key, value) {\n if (this.root_ === null) {\n this.root_ = {\n key: key,\n value: value,\n left: null,\n right: null,\n parent: null,\n color: BLACK,\n getValue() { return this.value },\n getKey() { return this.key }\n };\n this.size_ = 1;\n return null;\n }\n var t = this.root_, parent, cmp;\n do {\n parent = t;\n cmp = key['compareTo'](t.key);\n if (cmp < 0) {\n t = t.left;\n } else if (cmp > 0) {\n t = t.right;\n } else {\n var oldValue = t.value;\n t.value = value;\n return oldValue;\n }\n } while (t !== null);\n var e = {\n key: key,\n left: null,\n right: null,\n value: value,\n parent: parent,\n color: BLACK,\n getValue() { return this.value },\n getKey() { return this.key }\n };\n if (cmp < 0) {\n parent.left = e;\n } else {\n parent.right = e;\n }\n this.fixAfterInsertion(e);\n this.size_++;\n return null;\n};\n\n\n/**\n * @param {Object} x\n */\nTreeMap.prototype.fixAfterInsertion = function(x) {\n x.color = RED;\n while (x != null && x != this.root_ && x.parent.color == RED) {\n if (parentOf(x) == leftOf(parentOf(parentOf(x)))) {\n var y = rightOf(parentOf(parentOf(x)));\n if (colorOf(y) == RED) {\n setColor(parentOf(x), BLACK);\n setColor(y, BLACK);\n setColor(parentOf(parentOf(x)), RED);\n x = parentOf(parentOf(x));\n } else {\n if (x == rightOf(parentOf(x))) {\n x = parentOf(x);\n this.rotateLeft(x);\n }\n setColor(parentOf(x), BLACK);\n setColor(parentOf(parentOf(x)), RED);\n this.rotateRight(parentOf(parentOf(x)));\n }\n } else {\n var y = leftOf(parentOf(parentOf(x)));\n if (colorOf(y) == RED) {\n setColor(parentOf(x), BLACK);\n setColor(y, BLACK);\n setColor(parentOf(parentOf(x)), RED);\n x = parentOf(parentOf(x));\n } else {\n if (x == leftOf(parentOf(x))) {\n x = parentOf(x);\n this.rotateRight(x);\n }\n setColor(parentOf(x), BLACK);\n setColor(parentOf(parentOf(x)), RED);\n this.rotateLeft(parentOf(parentOf(x)));\n }\n }\n }\n this.root_.color = BLACK;\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.values = function() {\n var arrayList = new ArrayList();\n var p = this.getFirstEntry();\n if (p !== null) {\n arrayList.add(p.value);\n while ((p = TreeMap.successor(p)) !== null) {\n arrayList.add(p.value);\n }\n }\n return arrayList;\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.entrySet = function() {\n var hashSet = new HashSet();\n var p = this.getFirstEntry();\n if (p !== null) {\n hashSet.add(p);\n while ((p = TreeMap.successor(p)) !== null) {\n hashSet.add(p);\n }\n }\n return hashSet;\n};\n\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateLeft = function(p) {\n if (p != null) {\n var r = p.right;\n p.right = r.left;\n if (r.left != null)\n r.left.parent = p;\n r.parent = p.parent;\n if (p.parent == null)\n this.root_ = r;\n else if (p.parent.left == p)\n p.parent.left = r;\n else\n p.parent.right = r;\n r.left = p;\n p.parent = r;\n }\n};\n\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateRight = function(p) {\n if (p != null) {\n var l = p.left;\n p.left = l.right;\n if (l.right != null) l.right.parent = p;\n l.parent = p.parent;\n if (p.parent == null)\n this.root_ = l;\n else if (p.parent.right == p)\n p.parent.right = l;\n else p.parent.left = l;\n l.right = p;\n p.parent = l;\n }\n};\n\n\n/**\n * @return {Object}\n */\nTreeMap.prototype.getFirstEntry = function() {\n var p = this.root_;\n if (p != null) {\n while (p.left != null) {\n p = p.left;\n }\n }\n return p;\n};\n\n\n/**\n * @param {Object} t\n * @return {Object}\n * @private\n */\nTreeMap.successor = function(t) {\n if (t === null)\n return null;\n else if (t.right !== null) {\n var p = t.right;\n while (p.left !== null) {\n p = p.left;\n }\n return p;\n } else {\n var p = t.parent;\n var ch = t;\n while (p !== null && ch === p.right) {\n ch = p;\n p = p.parent;\n }\n return p;\n }\n};\n\n\n/**\n * @override\n */\nTreeMap.prototype.size = function() {\n return this.size_;\n};\n\n\nTreeMap.prototype.containsKey = function(key) {\n var p = this.root_;\n while (p !== null) {\n var cmp = key['compareTo'](p.key);\n if (cmp < 0) {\n p = p.left;\n } else if (cmp > 0) {\n p = p.right;\n } else {\n return true;\n }\n }\n return false;\n};\n","import extend from '../../../../extend';\nexport default function Lineal() {}\nextend(Lineal.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Lineal;\n\t}\n});\n","import Set from './Set'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html\n *\n * @extends {Set}\n * @constructor\n * @private\n */\nexport default function SortedSet() {};\nSortedSet.prototype = new Set();\n","import Collection from './Collection'\nimport Iterator from './Iterator'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\nimport SortedSet from './SortedSet'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html\n *\n * @extends {SortedSet}\n * @constructor\n * @private\n */\nexport default function TreeSet() {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n};\nTreeSet.prototype = new SortedSet();\n\n\n/**\n * @override\n */\nTreeSet.prototype.contains = function(o) {\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this.array_[i];\n if (e['compareTo'](o) === 0) {\n return true;\n }\n }\n return false;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.add = function(o) {\n if (this.contains(o)) {\n return false;\n }\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this.array_[i];\n if (e['compareTo'](o) === 1) {\n this.array_.splice(i, 0, o);\n return true;\n }\n }\n\n this.array_.push(o);\n\n return true;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.addAll = function(c) {\n for (var i = c.iterator(); i.hasNext();) {\n this.add(i.next());\n }\n return true;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.remove = function(e) {\n throw new OperationNotSupported();\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.size = function() {\n return this.array_.length;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.isEmpty = function() {\n return this.array_.length === 0;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.toArray = function() {\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i]);\n }\n\n return array;\n};\n\n\n/**\n * @override\n */\nTreeSet.prototype.iterator = function() {\n return new Iterator_(this);\n};\n\n\n\n/**\n * @extends {javascript.util.Iterator}\n * @param {javascript.util.TreeSet} treeSet\n * @constructor\n * @private\n */\nvar Iterator_ = function(treeSet) {\n /**\n * @type {javascript.util.TreeSet}\n * @private\n */\n this.treeSet_ = treeSet;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.next = function() {\n if (this.position_ === this.treeSet_.size()) {\n throw new NoSuchElementException();\n }\n return this.treeSet_.array_[this.position_++];\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function() {\n if (this.position_ < this.treeSet_.size()) {\n return true;\n } else {\n return false;\n }\n};\n\n\n/**\n * @override\n */\nIterator_.prototype.remove = function() {\n throw new OperationNotSupported();\n};\n","import ArrayList from './ArrayList'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html\n *\n * @constructor\n * @private\n */\nexport default function Arrays() {};\n\n/**\n */\nArrays.sort = function() {\n var a = arguments[0], i, t, comparator, compare;\n if (arguments.length === 1) {\n compare = function(a, b) {\n return a.compareTo(b);\n }\n a.sort(compare);\n return;\n } else if (arguments.length === 2) {\n comparator = arguments[1];\n compare = function(a, b) {\n return comparator['compare'](a, b);\n };\n a.sort(compare);\n } else if (arguments.length === 3) {\n t = a.slice(arguments[1], arguments[2]);\n t.sort();\n var r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length));\n a.splice(0, a.length);\n for (i = 0; i < r.length; i++) {\n a.push(r[i]);\n }\n return;\n } else if (arguments.length === 4) {\n t = a.slice(arguments[1], arguments[2]);\n comparator = arguments[3];\n compare = function(a, b) {\n return comparator['compare'](a, b);\n };\n t.sort(compare);\n r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length));\n a.splice(0, a.length);\n for (i = 0; i < r.length; i++) {\n a.push(r[i]);\n }\n return;\n }\n};\n\n\n/**\n * @param {Array} array\n * @return {ArrayList}\n */\nArrays.asList = function(array) {\n var arrayList = new ArrayList();\n for (var i = 0, len = array.length; i < len; i++) {\n arrayList.add(array[i]);\n }\n return arrayList;\n};\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport Character from '../../../../java/lang/Character';\nexport default function Dimension() {}\nextend(Dimension.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Dimension;\n\t}\n});\nDimension.toDimensionSymbol = function (dimensionValue) {\n\tswitch (dimensionValue) {\n\t\tcase Dimension.FALSE:\n\t\t\treturn Dimension.SYM_FALSE;\n\t\tcase Dimension.TRUE:\n\t\t\treturn Dimension.SYM_TRUE;\n\t\tcase Dimension.DONTCARE:\n\t\t\treturn Dimension.SYM_DONTCARE;\n\t\tcase Dimension.P:\n\t\t\treturn Dimension.SYM_P;\n\t\tcase Dimension.L:\n\t\t\treturn Dimension.SYM_L;\n\t\tcase Dimension.A:\n\t\t\treturn Dimension.SYM_A;\n\t}\n\tthrow new IllegalArgumentException(\"Unknown dimension value: \" + dimensionValue);\n};\nDimension.toDimensionValue = function (dimensionSymbol) {\n\tswitch (Character.toUpperCase(dimensionSymbol)) {\n\t\tcase Dimension.SYM_FALSE:\n\t\t\treturn Dimension.FALSE;\n\t\tcase Dimension.SYM_TRUE:\n\t\t\treturn Dimension.TRUE;\n\t\tcase Dimension.SYM_DONTCARE:\n\t\t\treturn Dimension.DONTCARE;\n\t\tcase Dimension.SYM_P:\n\t\t\treturn Dimension.P;\n\t\tcase Dimension.SYM_L:\n\t\t\treturn Dimension.L;\n\t\tcase Dimension.SYM_A:\n\t\t\treturn Dimension.A;\n\t}\n\tthrow new IllegalArgumentException(\"Unknown dimension symbol: \" + dimensionSymbol);\n};\nDimension.P = 0;\nDimension.L = 1;\nDimension.A = 2;\nDimension.FALSE = -1;\nDimension.TRUE = -2;\nDimension.DONTCARE = -3;\nDimension.SYM_FALSE = 'F';\nDimension.SYM_TRUE = 'T';\nDimension.SYM_DONTCARE = '*';\nDimension.SYM_P = '0';\nDimension.SYM_L = '1';\nDimension.SYM_A = '2';\n","import extend from '../../../../extend';\nexport default function GeometryFilter() {}\nextend(GeometryFilter.prototype, {\n\tfilter: function (geom) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryFilter;\n\t}\n});\n","import extend from '../../../../extend';\nexport default function CoordinateSequenceFilter() {}\nextend(CoordinateSequenceFilter.prototype, {\n\tfilter: function (seq, i) {},\n\tisDone: function () {},\n\tisGeometryChanged: function () {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateSequenceFilter;\n\t}\n});\n","import TreeSet from '../../../../java/util/TreeSet';\nimport Geometry from './Geometry';\nimport Arrays from '../../../../java/util/Arrays';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Dimension from './Dimension';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nimport Envelope from './Envelope';\nimport Assert from '../util/Assert';\nimport inherits from '../../../../inherits';\nexport default function GeometryCollection() {\n\tthis._geometries = null;\n\tlet geometries = arguments[0], factory = arguments[1];\n\tGeometry.call(this, factory);\n\tif (geometries === null) {\n\t\tgeometries = [];\n\t}\n\tif (Geometry.hasNullElements(geometries)) {\n\t\tthrow new IllegalArgumentException(\"geometries must not contain null elements\");\n\t}\n\tthis._geometries = geometries;\n}\ninherits(GeometryCollection, Geometry);\nextend(GeometryCollection.prototype, {\n\tcomputeEnvelopeInternal: function () {\n\t\tvar envelope = new Envelope();\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tenvelope.expandToInclude(this._geometries[i].getEnvelopeInternal());\n\t\t}\n\t\treturn envelope;\n\t},\n\tgetGeometryN: function (n) {\n\t\treturn this._geometries[n];\n\t},\n\tgetCoordinates: function () {\n\t\tvar coordinates = new Array(this.getNumPoints()).fill(null);\n\t\tvar k = -1;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tvar childCoordinates = this._geometries[i].getCoordinates();\n\t\t\tfor (var j = 0; j < childCoordinates.length; j++) {\n\t\t\t\tk++;\n\t\t\t\tcoordinates[k] = childCoordinates[j];\n\t\t\t}\n\t\t}\n\t\treturn coordinates;\n\t},\n\tgetArea: function () {\n\t\tvar area = 0.0;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tarea += this._geometries[i].getArea();\n\t\t}\n\t\treturn area;\n\t},\n\tequalsExact: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar otherCollection = other;\n\t\t\tif (this._geometries.length !== otherCollection._geometries.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tif (!this._geometries[i].equalsExact(otherCollection._geometries[i], tolerance)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else return Geometry.prototype.equalsExact.apply(this, arguments);\n\t},\n\tnormalize: function () {\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tthis._geometries[i].normalize();\n\t\t}\n\t\tArrays.sort(this._geometries);\n\t},\n\tgetCoordinate: function () {\n\t\tif (this.isEmpty()) return null;\n\t\treturn this._geometries[0].getCoordinate();\n\t},\n\tgetBoundaryDimension: function () {\n\t\tvar dimension = Dimension.FALSE;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tdimension = Math.max(dimension, this._geometries[i].getBoundaryDimension());\n\t\t}\n\t\treturn dimension;\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_GEOMETRYCOLLECTION;\n\t},\n\tgetDimension: function () {\n\t\tvar dimension = Dimension.FALSE;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tdimension = Math.max(dimension, this._geometries[i].getDimension());\n\t\t}\n\t\treturn dimension;\n\t},\n\tgetLength: function () {\n\t\tvar sum = 0.0;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tsum += this._geometries[i].getLength();\n\t\t}\n\t\treturn sum;\n\t},\n\tgetNumPoints: function () {\n\t\tvar numPoints = 0;\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tnumPoints += this._geometries[i].getNumPoints();\n\t\t}\n\t\treturn numPoints;\n\t},\n\tgetNumGeometries: function () {\n\t\treturn this._geometries.length;\n\t},\n\treverse: function () {\n\t\tvar n = this._geometries.length;\n\t\tvar revGeoms = new Array(n).fill(null);\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\trevGeoms[i] = this._geometries[i].reverse();\n\t\t}\n\t\treturn this.getFactory().createGeometryCollection(revGeoms);\n\t},\n\tcompareToSameClass: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar theseElements = new TreeSet(Arrays.asList(this._geometries));\n\t\t\tvar otherElements = new TreeSet(Arrays.asList(o._geometries));\n\t\t\treturn this.compare(theseElements, otherElements);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar gc = o;\n\t\t\tvar n1 = this.getNumGeometries();\n\t\t\tvar n2 = gc.getNumGeometries();\n\t\t\tvar i = 0;\n\t\t\twhile (i < n1 && i < n2) {\n\t\t\t\tvar thisGeom = this.getGeometryN(i);\n\t\t\t\tvar otherGeom = gc.getGeometryN(i);\n\t\t\t\tvar holeComp = thisGeom.compareToSameClass(otherGeom, comp);\n\t\t\t\tif (holeComp !== 0) return holeComp;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < n1) return 1;\n\t\t\tif (i < n2) return -1;\n\t\t\treturn 0;\n\t\t}\n\t},\n\tapply: function () {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this._geometries.length === 0) return null;\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t\tif (filter.isDone()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\t\tthis._geometries[i].apply(filter);\n\t\t\t}\n\t\t}\n\t},\n\tgetBoundary: function () {\n\t\tthis.checkNotGeometryCollection(this);\n\t\tAssert.shouldNeverReachHere();\n\t\treturn null;\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_GEOMETRYCOLLECTION;\n\t},\n\tcopy: function () {\n\t\tvar geometries = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < geometries.length; i++) {\n\t\t\tgeometries[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new GeometryCollection(geometries, this._factory);\n\t},\n\tisEmpty: function () {\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tif (!this._geometries[i].isEmpty()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryCollection;\n\t}\n});\nGeometryCollection.serialVersionUID = -5694727726395021467;\n","import Geometry from './Geometry';\nimport BoundaryOp from '../operation/BoundaryOp';\nimport extend from '../../../../extend';\nimport Lineal from './Lineal';\nimport GeometryCollection from './GeometryCollection';\nimport Dimension from './Dimension';\nimport inherits from '../../../../inherits';\nexport default function MultiLineString() {\n\tlet lineStrings = arguments[0], factory = arguments[1];\n\tGeometryCollection.call(this, lineStrings, factory);\n}\ninherits(MultiLineString, GeometryCollection);\nextend(MultiLineString.prototype, {\n\tequalsExact: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn GeometryCollection.prototype.equalsExact.call(this, other, tolerance);\n\t\t} else return GeometryCollection.prototype.equalsExact.apply(this, arguments);\n\t},\n\tgetBoundaryDimension: function () {\n\t\tif (this.isClosed()) {\n\t\t\treturn Dimension.FALSE;\n\t\t}\n\t\treturn 0;\n\t},\n\tisClosed: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tif (!this._geometries[i].isClosed()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_MULTILINESTRING;\n\t},\n\tgetDimension: function () {\n\t\treturn 1;\n\t},\n\treverse: function () {\n\t\tvar nLines = this._geometries.length;\n\t\tvar revLines = new Array(nLines).fill(null);\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\trevLines[nLines - 1 - i] = this._geometries[i].reverse();\n\t\t}\n\t\treturn this.getFactory().createMultiLineString(revLines);\n\t},\n\tgetBoundary: function () {\n\t\treturn new BoundaryOp(this).getBoundary();\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_MULTILINESTRING;\n\t},\n\tcopy: function () {\n\t\tvar lineStrings = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < lineStrings.length; i++) {\n\t\t\tlineStrings[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new MultiLineString(lineStrings, this._factory);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Lineal];\n\t},\n\tgetClass: function () {\n\t\treturn MultiLineString;\n\t}\n});\nMultiLineString.serialVersionUID = 8166665132445433741;\n","import LineString from '../geom/LineString';\nimport BoundaryNodeRule from '../algorithm/BoundaryNodeRule';\nimport extend from '../../../../extend';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport TreeMap from '../../../../java/util/TreeMap';\nimport MultiLineString from '../geom/MultiLineString';\nexport default function BoundaryOp() {\n\tthis._geom = null;\n\tthis._geomFact = null;\n\tthis._bnRule = null;\n\tthis._endpointMap = null;\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\tBoundaryOp.call(this, geom, BoundaryNodeRule.MOD2_BOUNDARY_RULE);\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], bnRule = arguments[1];\n\t\tthis._geom = geom;\n\t\tthis._geomFact = geom.getFactory();\n\t\tthis._bnRule = bnRule;\n\t}\n}\nextend(BoundaryOp.prototype, {\n\tboundaryMultiLineString: function (mLine) {\n\t\tif (this._geom.isEmpty()) {\n\t\t\treturn this.getEmptyMultiPoint();\n\t\t}\n\t\tvar bdyPts = this.computeBoundaryCoordinates(mLine);\n\t\tif (bdyPts.length === 1) {\n\t\t\treturn this._geomFact.createPoint(bdyPts[0]);\n\t\t}\n\t\treturn this._geomFact.createMultiPointFromCoords(bdyPts);\n\t},\n\tgetBoundary: function () {\n\t\tif (this._geom instanceof LineString) return this.boundaryLineString(this._geom);\n\t\tif (this._geom instanceof MultiLineString) return this.boundaryMultiLineString(this._geom);\n\t\treturn this._geom.getBoundary();\n\t},\n\tboundaryLineString: function (line) {\n\t\tif (this._geom.isEmpty()) {\n\t\t\treturn this.getEmptyMultiPoint();\n\t\t}\n\t\tif (line.isClosed()) {\n\t\t\tvar closedEndpointOnBoundary = this._bnRule.isInBoundary(2);\n\t\t\tif (closedEndpointOnBoundary) {\n\t\t\t\treturn line.getStartPoint();\n\t\t\t} else {\n\t\t\t\treturn this._geomFact.createMultiPoint();\n\t\t\t}\n\t\t}\n\t\treturn this._geomFact.createMultiPoint([line.getStartPoint(), line.getEndPoint()]);\n\t},\n\tgetEmptyMultiPoint: function () {\n\t\treturn this._geomFact.createMultiPoint();\n\t},\n\tcomputeBoundaryCoordinates: function (mLine) {\n\t\tvar bdyPts = new ArrayList();\n\t\tthis._endpointMap = new TreeMap();\n\t\tfor (var i = 0; i < mLine.getNumGeometries(); i++) {\n\t\t\tvar line = mLine.getGeometryN(i);\n\t\t\tif (line.getNumPoints() === 0) continue;\n\t\t\tthis.addEndpoint(line.getCoordinateN(0));\n\t\t\tthis.addEndpoint(line.getCoordinateN(line.getNumPoints() - 1));\n\t\t}\n\t\tfor (var it = this._endpointMap.entrySet().iterator(); it.hasNext(); ) {\n\t\t\tvar entry = it.next();\n\t\t\tvar counter = entry.getValue();\n\t\t\tvar valence = counter.count;\n\t\t\tif (this._bnRule.isInBoundary(valence)) {\n\t\t\t\tbdyPts.add(entry.getKey());\n\t\t\t}\n\t\t}\n\t\treturn CoordinateArrays.toCoordinateArray(bdyPts);\n\t},\n\taddEndpoint: function (pt) {\n\t\tvar counter = this._endpointMap.get(pt);\n\t\tif (counter === null) {\n\t\t\tcounter = new Counter();\n\t\t\tthis._endpointMap.put(pt, counter);\n\t\t}\n\t\tcounter.count++;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn BoundaryOp;\n\t}\n});\nBoundaryOp.getBoundary = function () {\n\tif (arguments.length === 1) {\n\t\tlet g = arguments[0];\n\t\tvar bop = new BoundaryOp(g);\n\t\treturn bop.getBoundary();\n\t} else if (arguments.length === 2) {\n\t\tlet g = arguments[0], bnRule = arguments[1];\n\t\tvar bop = new BoundaryOp(g, bnRule);\n\t\treturn bop.getBoundary();\n\t}\n};\nfunction Counter() {\n\tthis.count = null;\n}\nextend(Counter.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Counter;\n\t}\n});\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nexport default function Length() {}\nextend(Length.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Length;\n\t}\n});\nLength.ofLine = function (pts) {\n\tvar n = pts.size();\n\tif (n <= 1) return 0.0;\n\tvar len = 0.0;\n\tvar p = new Coordinate();\n\tpts.getCoordinate(0, p);\n\tvar x0 = p.x;\n\tvar y0 = p.y;\n\tfor (var i = 1; i < n; i++) {\n\t\tpts.getCoordinate(i, p);\n\t\tvar x1 = p.x;\n\t\tvar y1 = p.y;\n\t\tvar dx = x1 - x0;\n\t\tvar dy = y1 - y0;\n\t\tlen += Math.sqrt(dx * dx + dy * dy);\n\t\tx0 = x1;\n\t\ty0 = y1;\n\t}\n\treturn len;\n};\n","export default function PrintStream () {}\n","export default function StringReader () {}\n","export default function DecimalFormat () {}\n","export default function ByteArrayOutputStream () {}\n","export default function IOException () {}\n","export default function LineNumberReader () {}\n","import PrintStream from '../../../../java/io/PrintStream';\nimport StringReader from '../../../../java/io/StringReader';\nimport DecimalFormat from '../../../../java/text/DecimalFormat';\nimport extend from '../../../../extend';\nimport System from '../../../../java/lang/System';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport ByteArrayOutputStream from '../../../../java/io/ByteArrayOutputStream';\nimport Assert from './Assert';\nimport IOException from '../../../../java/io/IOException';\nimport LineNumberReader from '../../../../java/io/LineNumberReader';\nexport default function StringUtil() {}\nextend(StringUtil.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn StringUtil;\n\t}\n});\nStringUtil.chars = function (c, n) {\n\tvar ch = new Array(n).fill(null);\n\tfor (var i = 0; i < n; i++) {\n\t\tch[i] = c;\n\t}\n\treturn new String(ch);\n};\nStringUtil.getStackTrace = function () {\n\tif (arguments.length === 1) {\n\t\tlet t = arguments[0];\n\t\tvar os = new ByteArrayOutputStream();\n\t\tvar ps = new PrintStream(os);\n\t\tt.printStackTrace(ps);\n\t\treturn os.toString();\n\t} else if (arguments.length === 2) {\n\t\tlet t = arguments[0], depth = arguments[1];\n\t\tvar stackTrace = \"\";\n\t\tvar stringReader = new StringReader(StringUtil.getStackTrace(t));\n\t\tvar lineNumberReader = new LineNumberReader(stringReader);\n\t\tfor (var i = 0; i < depth; i++) {\n\t\t\ttry {\n\t\t\t\tstackTrace += lineNumberReader.readLine() + StringUtil.NEWLINE;\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof IOException) {\n\t\t\t\t\tAssert.shouldNeverReachHere();\n\t\t\t\t} else throw e;\n\t\t\t} finally {}\n\t\t}\n\t\treturn stackTrace;\n\t}\n};\nStringUtil.split = function (s, separator) {\n\tvar separatorlen = separator.length;\n\tvar tokenList = new ArrayList();\n\tvar tmpString = \"\" + s;\n\tvar pos = tmpString.indexOf(separator);\n\twhile (pos >= 0) {\n\t\tvar token = tmpString.substring(0, pos);\n\t\ttokenList.add(token);\n\t\ttmpString = tmpString.substring(pos + separatorlen);\n\t\tpos = tmpString.indexOf(separator);\n\t}\n\tif (tmpString.length > 0) tokenList.add(tmpString);\n\tvar res = new Array(tokenList.size()).fill(null);\n\tfor (var i = 0; i < res.length; i++) {\n\t\tres[i] = tokenList.get(i);\n\t}\n\treturn res;\n};\nStringUtil.toString = function () {\n\tif (arguments.length === 1 && typeof arguments[0] === \"number\") {\n\t\tlet d = arguments[0];\n\t\treturn StringUtil.SIMPLE_ORDINATE_FORMAT.format(d);\n\t}\n};\nStringUtil.spaces = function (n) {\n\treturn StringUtil.chars(' ', n);\n};\nStringUtil.NEWLINE = System.getProperty(\"line.separator\");\nStringUtil.SIMPLE_ORDINATE_FORMAT = new DecimalFormat(\"0.#\");\n","export default function StringBuilder (str) {\n this.str = str\n }\n \n StringBuilder.prototype.append = function (e) {\n this.str += e\n }\n \n StringBuilder.prototype.setCharAt = function (i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n }\n \n StringBuilder.prototype.toString = function (e) {\n return this.str\n }\n ","import hasInterface from '../../../../hasInterface';\nimport StringUtil from '../util/StringUtil';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport CoordinateSequence from './CoordinateSequence';\nimport StringBuilder from '../../../../java/lang/StringBuilder';\nexport default function CoordinateSequences() {}\nextend(CoordinateSequences.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateSequences;\n\t}\n});\nCoordinateSequences.copyCoord = function (src, srcPos, dest, destPos) {\n\tvar minDim = Math.min(src.getDimension(), dest.getDimension());\n\tfor (var dim = 0; dim < minDim; dim++) {\n\t\tdest.setOrdinate(destPos, dim, src.getOrdinate(srcPos, dim));\n\t}\n};\nCoordinateSequences.isRing = function (seq) {\n\tvar n = seq.size();\n\tif (n === 0) return true;\n\tif (n <= 3) return false;\n\treturn seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y);\n};\nCoordinateSequences.isEqual = function (cs1, cs2) {\n\tvar cs1Size = cs1.size();\n\tvar cs2Size = cs2.size();\n\tif (cs1Size !== cs2Size) return false;\n\tvar dim = Math.min(cs1.getDimension(), cs2.getDimension());\n\tfor (var i = 0; i < cs1Size; i++) {\n\t\tfor (var d = 0; d < dim; d++) {\n\t\t\tvar v1 = cs1.getOrdinate(i, d);\n\t\t\tvar v2 = cs2.getOrdinate(i, d);\n\t\t\tif (cs1.getOrdinate(i, d) === cs2.getOrdinate(i, d)) continue;\n\t\t\tif (Double.isNaN(v1) && Double.isNaN(v2)) continue;\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\nCoordinateSequences.extend = function (fact, seq, size) {\n\tvar newseq = fact.create(size, seq.getDimension());\n\tvar n = seq.size();\n\tCoordinateSequences.copy(seq, 0, newseq, 0, n);\n\tif (n > 0) {\n\t\tfor (var i = n; i < size; i++) CoordinateSequences.copy(seq, n - 1, newseq, i, 1);\n\t}\n\treturn newseq;\n};\nCoordinateSequences.reverse = function (seq) {\n\tvar last = seq.size() - 1;\n\tvar mid = Math.trunc(last / 2);\n\tfor (var i = 0; i <= mid; i++) {\n\t\tCoordinateSequences.swap(seq, i, last - i);\n\t}\n};\nCoordinateSequences.swap = function (seq, i, j) {\n\tif (i === j) return null;\n\tfor (var dim = 0; dim < seq.getDimension(); dim++) {\n\t\tvar tmp = seq.getOrdinate(i, dim);\n\t\tseq.setOrdinate(i, dim, seq.getOrdinate(j, dim));\n\t\tseq.setOrdinate(j, dim, tmp);\n\t}\n};\nCoordinateSequences.copy = function (src, srcPos, dest, destPos, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tCoordinateSequences.copyCoord(src, srcPos + i, dest, destPos + i);\n\t}\n};\nCoordinateSequences.toString = function () {\n\tif (arguments.length === 1 && hasInterface(arguments[0], CoordinateSequence)) {\n\t\tlet cs = arguments[0];\n\t\tvar size = cs.size();\n\t\tif (size === 0) return \"()\";\n\t\tvar dim = cs.getDimension();\n\t\tvar builder = new StringBuilder();\n\t\tbuilder.append('(');\n\t\tfor (var i = 0; i < size; i++) {\n\t\t\tif (i > 0) builder.append(\" \");\n\t\t\tfor (var d = 0; d < dim; d++) {\n\t\t\t\tif (d > 0) builder.append(\",\");\n\t\t\t\tbuilder.append(StringUtil.toString(cs.getOrdinate(i, d)));\n\t\t\t}\n\t\t}\n\t\tbuilder.append(')');\n\t\treturn builder.toString();\n\t}\n};\nCoordinateSequences.ensureValidRing = function (fact, seq) {\n\tvar n = seq.size();\n\tif (n === 0) return seq;\n\tif (n <= 3) return CoordinateSequences.createClosedRing(fact, seq, 4);\n\tvar isClosed = seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y);\n\tif (isClosed) return seq;\n\treturn CoordinateSequences.createClosedRing(fact, seq, n + 1);\n};\nCoordinateSequences.createClosedRing = function (fact, seq, size) {\n\tvar newseq = fact.create(size, seq.getDimension());\n\tvar n = seq.size();\n\tCoordinateSequences.copy(seq, 0, newseq, 0, n);\n\tfor (var i = n; i < size; i++) CoordinateSequences.copy(seq, 0, newseq, i, 1);\n\treturn newseq;\n};\n","import Geometry from './Geometry';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport BoundaryOp from '../operation/BoundaryOp';\nimport Length from '../algorithm/Length';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport Lineal from './Lineal';\nimport CoordinateSequences from './CoordinateSequences';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Dimension from './Dimension';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nimport Envelope from './Envelope';\nimport inherits from '../../../../inherits';\nexport default function LineString() {\n\tthis._points = null;\n\tlet points = arguments[0], factory = arguments[1];\n\tGeometry.call(this, factory);\n\tthis.init(points);\n}\ninherits(LineString, Geometry);\nextend(LineString.prototype, {\n\tcomputeEnvelopeInternal: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn new Envelope();\n\t\t}\n\t\treturn this._points.expandEnvelope(new Envelope());\n\t},\n\tisRing: function () {\n\t\treturn this.isClosed() && this.isSimple();\n\t},\n\tgetCoordinates: function () {\n\t\treturn this._points.toCoordinateArray();\n\t},\n\tequalsExact: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar otherLineString = other;\n\t\t\tif (this._points.size() !== otherLineString._points.size()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\t\tif (!this.equal(this._points.getCoordinate(i), otherLineString._points.getCoordinate(i), tolerance)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else return Geometry.prototype.equalsExact.apply(this, arguments);\n\t},\n\tnormalize: function () {\n\t\tfor (var i = 0; i < Math.trunc(this._points.size() / 2); i++) {\n\t\t\tvar j = this._points.size() - 1 - i;\n\t\t\tif (!this._points.getCoordinate(i).equals(this._points.getCoordinate(j))) {\n\t\t\t\tif (this._points.getCoordinate(i).compareTo(this._points.getCoordinate(j)) > 0) {\n\t\t\t\t\tvar copy = this._points.copy();\n\t\t\t\t\tCoordinateSequences.reverse(copy);\n\t\t\t\t\tthis._points = copy;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t},\n\tgetCoordinate: function () {\n\t\tif (this.isEmpty()) return null;\n\t\treturn this._points.getCoordinate(0);\n\t},\n\tgetBoundaryDimension: function () {\n\t\tif (this.isClosed()) {\n\t\t\treturn Dimension.FALSE;\n\t\t}\n\t\treturn 0;\n\t},\n\tisClosed: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1));\n\t},\n\tgetEndPoint: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.getPointN(this.getNumPoints() - 1);\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_LINESTRING;\n\t},\n\tgetDimension: function () {\n\t\treturn 1;\n\t},\n\tgetLength: function () {\n\t\treturn Length.ofLine(this._points);\n\t},\n\tgetNumPoints: function () {\n\t\treturn this._points.size();\n\t},\n\treverse: function () {\n\t\tvar seq = this._points.copy();\n\t\tCoordinateSequences.reverse(seq);\n\t\tvar revLine = this.getFactory().createLineString(seq);\n\t\treturn revLine;\n\t},\n\tcompareToSameClass: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar line = o;\n\t\t\tvar i = 0;\n\t\t\tvar j = 0;\n\t\t\twhile (i < this._points.size() && j < line._points.size()) {\n\t\t\t\tvar comparison = this._points.getCoordinate(i).compareTo(line._points.getCoordinate(j));\n\t\t\t\tif (comparison !== 0) {\n\t\t\t\t\treturn comparison;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (i < this._points.size()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (j < line._points.size()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar line = o;\n\t\t\treturn comp.compare(this._points, line._points);\n\t\t}\n\t},\n\tapply: function () {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\t\tfilter.filter(this._points.getCoordinate(i));\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this._points.size() === 0) return null;\n\t\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\t\tfilter.filter(this._points, i);\n\t\t\t\tif (filter.isDone()) break;\n\t\t\t}\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t}\n\t},\n\tgetBoundary: function () {\n\t\treturn new BoundaryOp(this).getBoundary();\n\t},\n\tisEquivalentClass: function (other) {\n\t\treturn other instanceof LineString;\n\t},\n\tgetCoordinateN: function (n) {\n\t\treturn this._points.getCoordinate(n);\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_LINESTRING;\n\t},\n\tcopy: function () {\n\t\treturn new LineString(this._points.copy(), this._factory);\n\t},\n\tgetCoordinateSequence: function () {\n\t\treturn this._points;\n\t},\n\tisEmpty: function () {\n\t\treturn this._points.size() === 0;\n\t},\n\tinit: function (points) {\n\t\tif (points === null) {\n\t\t\tpoints = this.getFactory().getCoordinateSequenceFactory().create([]);\n\t\t}\n\t\tif (points.size() === 1) {\n\t\t\tthrow new IllegalArgumentException(\"Invalid number of points in LineString (found \" + points.size() + \" - must be 0 or >= 2)\");\n\t\t}\n\t\tthis._points = points;\n\t},\n\tisCoordinate: function (pt) {\n\t\tfor (var i = 0; i < this._points.size(); i++) {\n\t\t\tif (this._points.getCoordinate(i).equals(pt)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetStartPoint: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.getPointN(0);\n\t},\n\tgetPointN: function (n) {\n\t\treturn this.getFactory().createPoint(this._points.getCoordinate(n));\n\t},\n\tinterfaces_: function () {\n\t\treturn [Lineal];\n\t},\n\tgetClass: function () {\n\t\treturn LineString;\n\t}\n});\nLineString.serialVersionUID = 3110669828065365560;\n","import extend from '../../../../extend';\nexport default function Puntal() {}\nextend(Puntal.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Puntal;\n\t}\n});\n","import Geometry from './Geometry';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport extend from '../../../../extend';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport Dimension from './Dimension';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nimport Puntal from './Puntal';\nimport Envelope from './Envelope';\nimport Assert from '../util/Assert';\nimport inherits from '../../../../inherits';\nexport default function Point() {\n\tthis._coordinates = null;\n\tlet coordinates = arguments[0], factory = arguments[1];\n\tGeometry.call(this, factory);\n\tthis.init(coordinates);\n}\ninherits(Point, Geometry);\nextend(Point.prototype, {\n\tcomputeEnvelopeInternal: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn new Envelope();\n\t\t}\n\t\tvar env = new Envelope();\n\t\tenv.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0));\n\t\treturn env;\n\t},\n\tgetCoordinates: function () {\n\t\treturn this.isEmpty() ? [] : [this.getCoordinate()];\n\t},\n\tequalsExact: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.isEmpty() && other.isEmpty()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (this.isEmpty() !== other.isEmpty()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn this.equal(other.getCoordinate(), this.getCoordinate(), tolerance);\n\t\t} else return Geometry.prototype.equalsExact.apply(this, arguments);\n\t},\n\tnormalize: function () {},\n\tgetCoordinate: function () {\n\t\treturn this._coordinates.size() !== 0 ? this._coordinates.getCoordinate(0) : null;\n\t},\n\tgetBoundaryDimension: function () {\n\t\treturn Dimension.FALSE;\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_POINT;\n\t},\n\tgetDimension: function () {\n\t\treturn 0;\n\t},\n\tgetNumPoints: function () {\n\t\treturn this.isEmpty() ? 0 : 1;\n\t},\n\treverse: function () {\n\t\treturn this.copy();\n\t},\n\tgetX: function () {\n\t\tif (this.getCoordinate() === null) {\n\t\t\tthrow new IllegalStateException(\"getX called on empty Point\");\n\t\t}\n\t\treturn this.getCoordinate().x;\n\t},\n\tcompareToSameClass: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet other = arguments[0];\n\t\t\tvar point = other;\n\t\t\treturn this.getCoordinate().compareTo(point.getCoordinate());\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet other = arguments[0], comp = arguments[1];\n\t\t\tvar point = other;\n\t\t\treturn comp.compare(this._coordinates, point._coordinates);\n\t\t}\n\t},\n\tapply: function () {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tfilter.filter(this.getCoordinate());\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tif (this.isEmpty()) return null;\n\t\t\tfilter.filter(this._coordinates, 0);\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t}\n\t},\n\tgetBoundary: function () {\n\t\treturn this.getFactory().createGeometryCollection();\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_POINT;\n\t},\n\tcopy: function () {\n\t\treturn new Point(this._coordinates.copy(), this._factory);\n\t},\n\tgetCoordinateSequence: function () {\n\t\treturn this._coordinates;\n\t},\n\tgetY: function () {\n\t\tif (this.getCoordinate() === null) {\n\t\t\tthrow new IllegalStateException(\"getY called on empty Point\");\n\t\t}\n\t\treturn this.getCoordinate().y;\n\t},\n\tisEmpty: function () {\n\t\treturn this._coordinates.size() === 0;\n\t},\n\tinit: function (coordinates) {\n\t\tif (coordinates === null) {\n\t\t\tcoordinates = this.getFactory().getCoordinateSequenceFactory().create([]);\n\t\t}\n\t\tAssert.isTrue(coordinates.size() <= 1);\n\t\tthis._coordinates = coordinates;\n\t},\n\tisSimple: function () {\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Puntal];\n\t},\n\tgetClass: function () {\n\t\treturn Point;\n\t}\n});\nPoint.serialVersionUID = 4902022702746614570;\n","import hasInterface from '../../../../hasInterface';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport CoordinateSequence from '../geom/CoordinateSequence';\nexport default function Area() {}\nextend(Area.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Area;\n\t}\n});\nArea.ofRing = function () {\n\tif (arguments[0] instanceof Array) {\n\t\tlet ring = arguments[0];\n\t\treturn Math.abs(Area.ofRingSigned(ring));\n\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\tlet ring = arguments[0];\n\t\treturn Math.abs(Area.ofRingSigned(ring));\n\t}\n};\nArea.ofRingSigned = function () {\n\tif (arguments[0] instanceof Array) {\n\t\tlet ring = arguments[0];\n\t\tif (ring.length < 3) return 0.0;\n\t\tvar sum = 0.0;\n\t\tvar x0 = ring[0].x;\n\t\tfor (var i = 1; i < ring.length - 1; i++) {\n\t\t\tvar x = ring[i].x - x0;\n\t\t\tvar y1 = ring[i + 1].y;\n\t\t\tvar y2 = ring[i - 1].y;\n\t\t\tsum += x * (y2 - y1);\n\t\t}\n\t\treturn sum / 2.0;\n\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\tlet ring = arguments[0];\n\t\tvar n = ring.size();\n\t\tif (n < 3) return 0.0;\n\t\tvar p0 = new Coordinate();\n\t\tvar p1 = new Coordinate();\n\t\tvar p2 = new Coordinate();\n\t\tring.getCoordinate(0, p1);\n\t\tring.getCoordinate(1, p2);\n\t\tvar x0 = p1.x;\n\t\tp2.x -= x0;\n\t\tvar sum = 0.0;\n\t\tfor (var i = 1; i < n - 1; i++) {\n\t\t\tp0.y = p1.y;\n\t\t\tp1.x = p2.x;\n\t\t\tp1.y = p2.y;\n\t\t\tring.getCoordinate(i + 1, p2);\n\t\t\tp2.x -= x0;\n\t\t\tsum += p1.x * (p0.y - p2.y);\n\t\t}\n\t\treturn sum / 2.0;\n\t}\n};\n","import extend from '../../../../extend';\nexport default function Polygonal() {}\nextend(Polygonal.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Polygonal;\n\t}\n});\n","import Area from '../algorithm/Area';\nimport Geometry from './Geometry';\nimport Arrays from '../../../../java/util/Arrays';\nimport CoordinateFilter from './CoordinateFilter';\nimport hasInterface from '../../../../hasInterface';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport Orientation from '../algorithm/Orientation';\nimport System from '../../../../java/lang/System';\nimport GeometryComponentFilter from './GeometryComponentFilter';\nimport CoordinateArrays from './CoordinateArrays';\nimport Polygonal from './Polygonal';\nimport GeometryFilter from './GeometryFilter';\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter';\nimport inherits from '../../../../inherits';\nexport default function Polygon() {\n\tthis._shell = null;\n\tthis._holes = null;\n\tlet shell = arguments[0], holes = arguments[1], factory = arguments[2];\n\tGeometry.call(this, factory);\n\tif (shell === null) {\n\t\tshell = this.getFactory().createLinearRing();\n\t}\n\tif (holes === null) {\n\t\tholes = [];\n\t}\n\tif (Geometry.hasNullElements(holes)) {\n\t\tthrow new IllegalArgumentException(\"holes must not contain null elements\");\n\t}\n\tif (shell.isEmpty() && Geometry.hasNonEmptyElements(holes)) {\n\t\tthrow new IllegalArgumentException(\"shell is empty but holes are not\");\n\t}\n\tthis._shell = shell;\n\tthis._holes = holes;\n}\ninherits(Polygon, Geometry);\nextend(Polygon.prototype, {\n\tcomputeEnvelopeInternal: function () {\n\t\treturn this._shell.getEnvelopeInternal();\n\t},\n\tgetCoordinates: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn [];\n\t\t}\n\t\tvar coordinates = new Array(this.getNumPoints()).fill(null);\n\t\tvar k = -1;\n\t\tvar shellCoordinates = this._shell.getCoordinates();\n\t\tfor (var x = 0; x < shellCoordinates.length; x++) {\n\t\t\tk++;\n\t\t\tcoordinates[k] = shellCoordinates[x];\n\t\t}\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tvar childCoordinates = this._holes[i].getCoordinates();\n\t\t\tfor (var j = 0; j < childCoordinates.length; j++) {\n\t\t\t\tk++;\n\t\t\t\tcoordinates[k] = childCoordinates[j];\n\t\t\t}\n\t\t}\n\t\treturn coordinates;\n\t},\n\tgetArea: function () {\n\t\tvar area = 0.0;\n\t\tarea += Area.ofRing(this._shell.getCoordinateSequence());\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tarea -= Area.ofRing(this._holes[i].getCoordinateSequence());\n\t\t}\n\t\treturn area;\n\t},\n\tisRectangle: function () {\n\t\tif (this.getNumInteriorRing() !== 0) return false;\n\t\tif (this._shell === null) return false;\n\t\tif (this._shell.getNumPoints() !== 5) return false;\n\t\tvar seq = this._shell.getCoordinateSequence();\n\t\tvar env = this.getEnvelopeInternal();\n\t\tfor (var i = 0; i < 5; i++) {\n\t\t\tvar x = seq.getX(i);\n\t\t\tif (!(x === env.getMinX() || x === env.getMaxX())) return false;\n\t\t\tvar y = seq.getY(i);\n\t\t\tif (!(y === env.getMinY() || y === env.getMaxY())) return false;\n\t\t}\n\t\tvar prevX = seq.getX(0);\n\t\tvar prevY = seq.getY(0);\n\t\tfor (var i = 1; i <= 4; i++) {\n\t\t\tvar x = seq.getX(i);\n\t\t\tvar y = seq.getY(i);\n\t\t\tvar xChanged = x !== prevX;\n\t\t\tvar yChanged = y !== prevY;\n\t\t\tif (xChanged === yChanged) return false;\n\t\t\tprevX = x;\n\t\t\tprevY = y;\n\t\t}\n\t\treturn true;\n\t},\n\tequalsExact: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar otherPolygon = other;\n\t\t\tvar thisShell = this._shell;\n\t\t\tvar otherPolygonShell = otherPolygon._shell;\n\t\t\tif (!thisShell.equalsExact(otherPolygonShell, tolerance)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this._holes.length !== otherPolygon._holes.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tif (!this._holes[i].equalsExact(otherPolygon._holes[i], tolerance)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else return Geometry.prototype.equalsExact.apply(this, arguments);\n\t},\n\tnormalize: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tthis.normalize(this._shell, true);\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tthis.normalize(this._holes[i], false);\n\t\t\t}\n\t\t\tArrays.sort(this._holes);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet ring = arguments[0], clockwise = arguments[1];\n\t\t\tif (ring.isEmpty()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar uniqueCoordinates = new Array(ring.getCoordinates().length - 1).fill(null);\n\t\t\tSystem.arraycopy(ring.getCoordinates(), 0, uniqueCoordinates, 0, uniqueCoordinates.length);\n\t\t\tvar minCoordinate = CoordinateArrays.minCoordinate(ring.getCoordinates());\n\t\t\tCoordinateArrays.scroll(uniqueCoordinates, minCoordinate);\n\t\t\tSystem.arraycopy(uniqueCoordinates, 0, ring.getCoordinates(), 0, uniqueCoordinates.length);\n\t\t\tring.getCoordinates()[uniqueCoordinates.length] = uniqueCoordinates[0];\n\t\t\tif (Orientation.isCCW(ring.getCoordinates()) === clockwise) {\n\t\t\t\tCoordinateArrays.reverse(ring.getCoordinates());\n\t\t\t}\n\t\t}\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._shell.getCoordinate();\n\t},\n\tgetNumInteriorRing: function () {\n\t\treturn this._holes.length;\n\t},\n\tgetBoundaryDimension: function () {\n\t\treturn 1;\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_POLYGON;\n\t},\n\tgetDimension: function () {\n\t\treturn 2;\n\t},\n\tgetLength: function () {\n\t\tvar len = 0.0;\n\t\tlen += this._shell.getLength();\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tlen += this._holes[i].getLength();\n\t\t}\n\t\treturn len;\n\t},\n\tgetNumPoints: function () {\n\t\tvar numPoints = this._shell.getNumPoints();\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tnumPoints += this._holes[i].getNumPoints();\n\t\t}\n\t\treturn numPoints;\n\t},\n\treverse: function () {\n\t\tvar poly = this.copy();\n\t\tpoly._shell = this._shell.copy().reverse();\n\t\tpoly._holes = new Array(this._holes.length).fill(null);\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tpoly._holes[i] = this._holes[i].copy().reverse();\n\t\t}\n\t\treturn poly;\n\t},\n\tconvexHull: function () {\n\t\treturn this.getExteriorRing().convexHull();\n\t},\n\tcompareToSameClass: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet o = arguments[0];\n\t\t\tvar thisShell = this._shell;\n\t\t\tvar otherShell = o._shell;\n\t\t\treturn thisShell.compareToSameClass(otherShell);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet o = arguments[0], comp = arguments[1];\n\t\t\tvar poly = o;\n\t\t\tvar thisShell = this._shell;\n\t\t\tvar otherShell = poly._shell;\n\t\t\tvar shellComp = thisShell.compareToSameClass(otherShell, comp);\n\t\t\tif (shellComp !== 0) return shellComp;\n\t\t\tvar nHole1 = this.getNumInteriorRing();\n\t\t\tvar nHole2 = poly.getNumInteriorRing();\n\t\t\tvar i = 0;\n\t\t\twhile (i < nHole1 && i < nHole2) {\n\t\t\t\tvar thisHole = this.getInteriorRingN(i);\n\t\t\t\tvar otherHole = poly.getInteriorRingN(i);\n\t\t\t\tvar holeComp = thisHole.compareToSameClass(otherHole, comp);\n\t\t\t\tif (holeComp !== 0) return holeComp;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < nHole1) return 1;\n\t\t\tif (i < nHole2) return -1;\n\t\t\treturn 0;\n\t\t}\n\t},\n\tapply: function () {\n\t\tif (hasInterface(arguments[0], CoordinateFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tthis._shell.apply(filter);\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tthis._holes[i].apply(filter);\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tthis._shell.apply(filter);\n\t\t\tif (!filter.isDone()) {\n\t\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\t\tthis._holes[i].apply(filter);\n\t\t\t\t\tif (filter.isDone()) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filter.isGeometryChanged()) this.geometryChanged();\n\t\t} else if (hasInterface(arguments[0], GeometryFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t} else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n\t\t\tlet filter = arguments[0];\n\t\t\tfilter.filter(this);\n\t\t\tthis._shell.apply(filter);\n\t\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\t\tthis._holes[i].apply(filter);\n\t\t\t}\n\t\t}\n\t},\n\tgetBoundary: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn this.getFactory().createMultiLineString();\n\t\t}\n\t\tvar rings = new Array(this._holes.length + 1).fill(null);\n\t\trings[0] = this._shell;\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\trings[i + 1] = this._holes[i];\n\t\t}\n\t\tif (rings.length <= 1) return this.getFactory().createLinearRing(rings[0].getCoordinateSequence());\n\t\treturn this.getFactory().createMultiLineString(rings);\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_POLYGON;\n\t},\n\tcopy: function () {\n\t\tvar shellCopy = this._shell.copy();\n\t\tvar holeCopies = new Array(this._holes.length).fill(null);\n\t\tfor (var i = 0; i < this._holes.length; i++) {\n\t\t\tholeCopies[i] = this._holes[i].copy();\n\t\t}\n\t\treturn new Polygon(shellCopy, holeCopies, this._factory);\n\t},\n\tgetExteriorRing: function () {\n\t\treturn this._shell;\n\t},\n\tisEmpty: function () {\n\t\treturn this._shell.isEmpty();\n\t},\n\tgetInteriorRingN: function (n) {\n\t\treturn this._holes[n];\n\t},\n\tinterfaces_: function () {\n\t\treturn [Polygonal];\n\t},\n\tgetClass: function () {\n\t\treturn Polygon;\n\t}\n});\nPolygon.serialVersionUID = -3494792200821764533;\n","import Geometry from './Geometry';\nimport extend from '../../../../extend';\nimport GeometryCollection from './GeometryCollection';\nimport Dimension from './Dimension';\nimport Puntal from './Puntal';\nimport inherits from '../../../../inherits';\nexport default function MultiPoint() {\n\tlet points = arguments[0], factory = arguments[1];\n\tGeometryCollection.call(this, points, factory);\n}\ninherits(MultiPoint, GeometryCollection);\nextend(MultiPoint.prototype, {\n\tisValid: function () {\n\t\treturn true;\n\t},\n\tequalsExact: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn GeometryCollection.prototype.equalsExact.call(this, other, tolerance);\n\t\t} else return GeometryCollection.prototype.equalsExact.apply(this, arguments);\n\t},\n\tgetCoordinate: function () {\n\t\tif (arguments.length === 1 && Number.isInteger(arguments[0])) {\n\t\t\tlet n = arguments[0];\n\t\t\treturn this._geometries[n].getCoordinate();\n\t\t} else return GeometryCollection.prototype.getCoordinate.apply(this, arguments);\n\t},\n\tgetBoundaryDimension: function () {\n\t\treturn Dimension.FALSE;\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_MULTIPOINT;\n\t},\n\tgetDimension: function () {\n\t\treturn 0;\n\t},\n\tgetBoundary: function () {\n\t\treturn this.getFactory().createGeometryCollection();\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_MULTIPOINT;\n\t},\n\tcopy: function () {\n\t\tvar points = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < points.length; i++) {\n\t\t\tpoints[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new MultiPoint(points, this._factory);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Puntal];\n\t},\n\tgetClass: function () {\n\t\treturn MultiPoint;\n\t}\n});\nMultiPoint.serialVersionUID = -8048474874175355449;\n","import LineString from './LineString';\nimport Geometry from './Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport GeometryFactory from './GeometryFactory';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport CoordinateSequences from './CoordinateSequences';\nimport CoordinateSequence from './CoordinateSequence';\nimport Dimension from './Dimension';\nimport inherits from '../../../../inherits';\nexport default function LinearRing() {\n\tif (arguments[0] instanceof Array && arguments[1] instanceof GeometryFactory) {\n\t\tlet points = arguments[0], factory = arguments[1];\n\t\tLinearRing.call(this, factory.getCoordinateSequenceFactory().create(points), factory);\n\t} else if (hasInterface(arguments[0], CoordinateSequence) && arguments[1] instanceof GeometryFactory) {\n\t\tlet points = arguments[0], factory = arguments[1];\n\t\tLineString.call(this, points, factory);\n\t\tthis.validateConstruction();\n\t}\n}\ninherits(LinearRing, LineString);\nextend(LinearRing.prototype, {\n\tgetBoundaryDimension: function () {\n\t\treturn Dimension.FALSE;\n\t},\n\tisClosed: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn true;\n\t\t}\n\t\treturn LineString.prototype.isClosed.call(this);\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_LINEARRING;\n\t},\n\treverse: function () {\n\t\tvar seq = this._points.copy();\n\t\tCoordinateSequences.reverse(seq);\n\t\tvar rev = this.getFactory().createLinearRing(seq);\n\t\treturn rev;\n\t},\n\tvalidateConstruction: function () {\n\t\tif (!this.isEmpty() && !LineString.prototype.isClosed.call(this)) {\n\t\t\tthrow new IllegalArgumentException(\"Points of LinearRing do not form a closed linestring\");\n\t\t}\n\t\tif (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < LinearRing.MINIMUM_VALID_SIZE) {\n\t\t\tthrow new IllegalArgumentException(\"Invalid number of points in LinearRing (found \" + this.getCoordinateSequence().size() + \" - must be 0 or >= 4)\");\n\t\t}\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_LINEARRING;\n\t},\n\tcopy: function () {\n\t\treturn new LinearRing(this._points.copy(), this._factory);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LinearRing;\n\t}\n});\nLinearRing.MINIMUM_VALID_SIZE = 4;\nLinearRing.serialVersionUID = -4261142084085851829;\n","import Geometry from './Geometry';\nimport extend from '../../../../extend';\nimport GeometryCollection from './GeometryCollection';\nimport Polygonal from './Polygonal';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport inherits from '../../../../inherits';\nexport default function MultiPolygon() {\n\tlet polygons = arguments[0], factory = arguments[1];\n\tGeometryCollection.call(this, polygons, factory);\n}\ninherits(MultiPolygon, GeometryCollection);\nextend(MultiPolygon.prototype, {\n\tequalsExact: function () {\n\t\tif (arguments.length === 2 && (typeof arguments[1] === \"number\" && arguments[0] instanceof Geometry)) {\n\t\t\tlet other = arguments[0], tolerance = arguments[1];\n\t\t\tif (!this.isEquivalentClass(other)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn GeometryCollection.prototype.equalsExact.call(this, other, tolerance);\n\t\t} else return GeometryCollection.prototype.equalsExact.apply(this, arguments);\n\t},\n\tgetBoundaryDimension: function () {\n\t\treturn 1;\n\t},\n\tgetTypeCode: function () {\n\t\treturn Geometry.TYPECODE_MULTIPOLYGON;\n\t},\n\tgetDimension: function () {\n\t\treturn 2;\n\t},\n\treverse: function () {\n\t\tvar n = this._geometries.length;\n\t\tvar revGeoms = new Array(n).fill(null);\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\trevGeoms[i] = this._geometries[i].reverse();\n\t\t}\n\t\treturn this.getFactory().createMultiPolygon(revGeoms);\n\t},\n\tgetBoundary: function () {\n\t\tif (this.isEmpty()) {\n\t\t\treturn this.getFactory().createMultiLineString();\n\t\t}\n\t\tvar allRings = new ArrayList();\n\t\tfor (var i = 0; i < this._geometries.length; i++) {\n\t\t\tvar polygon = this._geometries[i];\n\t\t\tvar rings = polygon.getBoundary();\n\t\t\tfor (var j = 0; j < rings.getNumGeometries(); j++) {\n\t\t\t\tallRings.add(rings.getGeometryN(j));\n\t\t\t}\n\t\t}\n\t\tvar allRingsArray = new Array(allRings.size()).fill(null);\n\t\treturn this.getFactory().createMultiLineString(allRings.toArray(allRingsArray));\n\t},\n\tgetGeometryType: function () {\n\t\treturn Geometry.TYPENAME_MULTIPOLYGON;\n\t},\n\tcopy: function () {\n\t\tvar polygons = new Array(this._geometries.length).fill(null);\n\t\tfor (var i = 0; i < polygons.length; i++) {\n\t\t\tpolygons[i] = this._geometries[i].copy();\n\t\t}\n\t\treturn new MultiPolygon(polygons, this._factory);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Polygonal];\n\t},\n\tgetClass: function () {\n\t\treturn MultiPolygon;\n\t}\n});\nMultiPolygon.serialVersionUID = -551033529766975875;\n","import LineString from '../LineString';\nimport Point from '../Point';\nimport Polygon from '../Polygon';\nimport MultiPoint from '../MultiPoint';\nimport LinearRing from '../LinearRing';\nimport extend from '../../../../../extend';\nimport MultiPolygon from '../MultiPolygon';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport MultiLineString from '../MultiLineString';\nexport default function GeometryEditor() {\n\tthis._factory = null;\n\tthis._isUserDataCopied = false;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet factory = arguments[0];\n\t\tthis._factory = factory;\n\t}\n}\nextend(GeometryEditor.prototype, {\n\tsetCopyUserData: function (isUserDataCopied) {\n\t\tthis._isUserDataCopied = isUserDataCopied;\n\t},\n\tedit: function (geometry, operation) {\n\t\tif (geometry === null) return null;\n\t\tvar result = this.editInternal(geometry, operation);\n\t\tif (this._isUserDataCopied) {\n\t\t\tresult.setUserData(geometry.getUserData());\n\t\t}\n\t\treturn result;\n\t},\n\teditInternal: function (geometry, operation) {\n\t\tif (this._factory === null) this._factory = geometry.getFactory();\n\t\tif (geometry instanceof GeometryCollection) {\n\t\t\treturn this.editGeometryCollection(geometry, operation);\n\t\t}\n\t\tif (geometry instanceof Polygon) {\n\t\t\treturn this.editPolygon(geometry, operation);\n\t\t}\n\t\tif (geometry instanceof Point) {\n\t\t\treturn operation.edit(geometry, this._factory);\n\t\t}\n\t\tif (geometry instanceof LineString) {\n\t\t\treturn operation.edit(geometry, this._factory);\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"Unsupported Geometry class: \" + geometry.getClass().getName());\n\t\treturn null;\n\t},\n\teditGeometryCollection: function (collection, operation) {\n\t\tvar collectionForType = operation.edit(collection, this._factory);\n\t\tvar geometries = new ArrayList();\n\t\tfor (var i = 0; i < collectionForType.getNumGeometries(); i++) {\n\t\t\tvar geometry = this.edit(collectionForType.getGeometryN(i), operation);\n\t\t\tif (geometry === null || geometry.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tgeometries.add(geometry);\n\t\t}\n\t\tif (collectionForType.getClass() === MultiPoint) {\n\t\t\treturn this._factory.createMultiPoint(geometries.toArray([]));\n\t\t}\n\t\tif (collectionForType.getClass() === MultiLineString) {\n\t\t\treturn this._factory.createMultiLineString(geometries.toArray([]));\n\t\t}\n\t\tif (collectionForType.getClass() === MultiPolygon) {\n\t\t\treturn this._factory.createMultiPolygon(geometries.toArray([]));\n\t\t}\n\t\treturn this._factory.createGeometryCollection(geometries.toArray([]));\n\t},\n\teditPolygon: function (polygon, operation) {\n\t\tvar newPolygon = operation.edit(polygon, this._factory);\n\t\tif (newPolygon === null) newPolygon = this._factory.createPolygon();\n\t\tif (newPolygon.isEmpty()) {\n\t\t\treturn newPolygon;\n\t\t}\n\t\tvar shell = this.edit(newPolygon.getExteriorRing(), operation);\n\t\tif (shell === null || shell.isEmpty()) {\n\t\t\treturn this._factory.createPolygon();\n\t\t}\n\t\tvar holes = new ArrayList();\n\t\tfor (var i = 0; i < newPolygon.getNumInteriorRing(); i++) {\n\t\t\tvar hole = this.edit(newPolygon.getInteriorRingN(i), operation);\n\t\t\tif (hole === null || hole.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tholes.add(hole);\n\t\t}\n\t\treturn this._factory.createPolygon(shell, holes.toArray([]));\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryEditor;\n\t}\n});\nfunction GeometryEditorOperation() {}\nGeometryEditor.GeometryEditorOperation = GeometryEditorOperation;\nfunction NoOpGeometryOperation() {}\nextend(NoOpGeometryOperation.prototype, {\n\tedit: function (geometry, factory) {\n\t\treturn geometry;\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryEditorOperation];\n\t},\n\tgetClass: function () {\n\t\treturn NoOpGeometryOperation;\n\t}\n});\nfunction CoordinateOperation() {}\nextend(CoordinateOperation.prototype, {\n\tedit: function (geometry, factory) {\n\t\tvar coordinates = this.edit(geometry.getCoordinates(), geometry);\n\t\tif (geometry instanceof LinearRing) {\n\t\t\tif (coordinates === null) return factory.createLinearRing(); else return factory.createLinearRing(coordinates);\n\t\t}\n\t\tif (geometry instanceof LineString) {\n\t\t\tif (coordinates === null) return factory.createLineString(); else return factory.createLineString(coordinates);\n\t\t}\n\t\tif (geometry instanceof Point) {\n\t\t\tif (coordinates === null || coordinates.length === 0) return factory.createPoint(); else return factory.createPoint(coordinates[0]);\n\t\t}\n\t\treturn geometry;\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryEditorOperation];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateOperation;\n\t}\n});\nfunction CoordinateSequenceOperation() {}\nextend(CoordinateSequenceOperation.prototype, {\n\tedit: function (geometry, factory) {\n\t\tif (geometry instanceof LinearRing) {\n\t\t\treturn factory.createLinearRing(this.edit(geometry.getCoordinateSequence(), geometry));\n\t\t}\n\t\tif (geometry instanceof LineString) {\n\t\t\treturn factory.createLineString(this.edit(geometry.getCoordinateSequence(), geometry));\n\t\t}\n\t\tif (geometry instanceof Point) {\n\t\t\treturn factory.createPoint(this.edit(geometry.getCoordinateSequence(), geometry));\n\t\t}\n\t\treturn geometry;\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryEditorOperation];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateSequenceOperation;\n\t}\n});\nGeometryEditor.NoOpGeometryOperation = NoOpGeometryOperation;\nGeometryEditor.CoordinateOperation = CoordinateOperation;\nGeometryEditor.CoordinateSequenceOperation = CoordinateSequenceOperation;\n","import hasInterface from '../../../../../hasInterface';\nimport Coordinate from '../Coordinate';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Double from '../../../../../java/lang/Double';\nimport extend from '../../../../../extend';\nimport CoordinateSequence from '../CoordinateSequence';\nimport Serializable from '../../../../../java/io/Serializable';\nimport StringBuilder from '../../../../../java/lang/StringBuilder';\nexport default function CoordinateArraySequence() {\n\tthis._dimension = 3;\n\tthis._coordinates = null;\n\tif (arguments.length === 1) {\n\t\tif (arguments[0] instanceof Array) {\n\t\t\tlet coordinates = arguments[0];\n\t\t\tCoordinateArraySequence.call(this, coordinates, 3);\n\t\t} else if (Number.isInteger(arguments[0])) {\n\t\t\tlet size = arguments[0];\n\t\t\tthis._coordinates = new Array(size).fill(null);\n\t\t\tfor (var i = 0; i < size; i++) {\n\t\t\t\tthis._coordinates[i] = new Coordinate();\n\t\t\t}\n\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\tlet coordSeq = arguments[0];\n\t\t\tif (coordSeq === null) {\n\t\t\t\tthis._coordinates = new Array(0).fill(null);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tthis._dimension = coordSeq.getDimension();\n\t\t\tthis._coordinates = new Array(coordSeq.size()).fill(null);\n\t\t\tfor (var i = 0; i < this._coordinates.length; i++) {\n\t\t\t\tthis._coordinates[i] = coordSeq.getCoordinateCopy(i);\n\t\t\t}\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tif (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {\n\t\t\tlet coordinates = arguments[0], dimension = arguments[1];\n\t\t\tthis._coordinates = coordinates;\n\t\t\tthis._dimension = dimension;\n\t\t\tif (coordinates === null) this._coordinates = new Array(0).fill(null);\n\t\t} else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {\n\t\t\tlet size = arguments[0], dimension = arguments[1];\n\t\t\tthis._coordinates = new Array(size).fill(null);\n\t\t\tthis._dimension = dimension;\n\t\t\tfor (var i = 0; i < size; i++) {\n\t\t\t\tthis._coordinates[i] = new Coordinate();\n\t\t\t}\n\t\t}\n\t}\n}\nextend(CoordinateArraySequence.prototype, {\n\tsetOrdinate: function (index, ordinateIndex, value) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase CoordinateSequence.X:\n\t\t\t\tthis._coordinates[index].x = value;\n\t\t\t\tbreak;\n\t\t\tcase CoordinateSequence.Y:\n\t\t\t\tthis._coordinates[index].y = value;\n\t\t\t\tbreak;\n\t\t\tcase CoordinateSequence.Z:\n\t\t\t\tthis._coordinates[index].z = value;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new IllegalArgumentException(\"invalid ordinateIndex\");\n\t\t}\n\t},\n\tsize: function () {\n\t\treturn this._coordinates.length;\n\t},\n\tgetOrdinate: function (index, ordinateIndex) {\n\t\tswitch (ordinateIndex) {\n\t\t\tcase CoordinateSequence.X:\n\t\t\t\treturn this._coordinates[index].x;\n\t\t\tcase CoordinateSequence.Y:\n\t\t\t\treturn this._coordinates[index].y;\n\t\t\tcase CoordinateSequence.Z:\n\t\t\t\treturn this._coordinates[index].z;\n\t\t}\n\t\treturn Double.NaN;\n\t},\n\tgetCoordinate: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet i = arguments[0];\n\t\t\treturn this._coordinates[i];\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], coord = arguments[1];\n\t\t\tcoord.x = this._coordinates[index].x;\n\t\t\tcoord.y = this._coordinates[index].y;\n\t\t\tcoord.z = this._coordinates[index].z;\n\t\t}\n\t},\n\tgetCoordinateCopy: function (i) {\n\t\treturn new Coordinate(this._coordinates[i]);\n\t},\n\tgetDimension: function () {\n\t\treturn this._dimension;\n\t},\n\tgetX: function (index) {\n\t\treturn this._coordinates[index].x;\n\t},\n\texpandEnvelope: function (env) {\n\t\tfor (var i = 0; i < this._coordinates.length; i++) {\n\t\t\tenv.expandToInclude(this._coordinates[i]);\n\t\t}\n\t\treturn env;\n\t},\n\tcopy: function () {\n\t\tvar cloneCoordinates = new Array(this.size()).fill(null);\n\t\tfor (var i = 0; i < this._coordinates.length; i++) {\n\t\t\tcloneCoordinates[i] = this._coordinates[i].copy();\n\t\t}\n\t\treturn new CoordinateArraySequence(cloneCoordinates, this._dimension);\n\t},\n\ttoString: function () {\n\t\tif (this._coordinates.length > 0) {\n\t\t\tvar strBuilder = new StringBuilder(17 * this._coordinates.length);\n\t\t\tstrBuilder.append('(');\n\t\t\tstrBuilder.append(this._coordinates[0]);\n\t\t\tfor (var i = 1; i < this._coordinates.length; i++) {\n\t\t\t\tstrBuilder.append(\", \");\n\t\t\t\tstrBuilder.append(this._coordinates[i]);\n\t\t\t}\n\t\t\tstrBuilder.append(')');\n\t\t\treturn strBuilder.toString();\n\t\t} else {\n\t\t\treturn \"()\";\n\t\t}\n\t},\n\tgetY: function (index) {\n\t\treturn this._coordinates[index].y;\n\t},\n\ttoCoordinateArray: function () {\n\t\treturn this._coordinates;\n\t},\n\tinterfaces_: function () {\n\t\treturn [CoordinateSequence, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateArraySequence;\n\t}\n});\nCoordinateArraySequence.serialVersionUID = -915438501601840650;\n","import CoordinateSequenceFactory from '../CoordinateSequenceFactory';\nimport hasInterface from '../../../../../hasInterface';\nimport CoordinateArraySequence from './CoordinateArraySequence';\nimport extend from '../../../../../extend';\nimport CoordinateSequence from '../CoordinateSequence';\nimport Serializable from '../../../../../java/io/Serializable';\nexport default function CoordinateArraySequenceFactory() {}\nextend(CoordinateArraySequenceFactory.prototype, {\n\treadResolve: function () {\n\t\treturn CoordinateArraySequenceFactory.instance();\n\t},\n\tcreate: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new CoordinateArraySequence(coordinates);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordSeq = arguments[0];\n\t\t\t\treturn new CoordinateArraySequence(coordSeq);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet size = arguments[0], dimension = arguments[1];\n\t\t\tif (dimension > 3) dimension = 3;\n\t\t\tif (dimension < 2) return new CoordinateArraySequence(size);\n\t\t\treturn new CoordinateArraySequence(size, dimension);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [CoordinateSequenceFactory, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn CoordinateArraySequenceFactory;\n\t}\n});\nCoordinateArraySequenceFactory.instance = function () {\n\treturn CoordinateArraySequenceFactory.instanceObject;\n};\nCoordinateArraySequenceFactory.serialVersionUID = -4099577099607551657;\nCoordinateArraySequenceFactory.instanceObject = new CoordinateArraySequenceFactory();\n","// shared pointer\nvar i\n// shortcuts\nvar defineProperty = Object.defineProperty\nfunction is (a, b) { return (a === b) || (a !== a && b !== b) } // eslint-disable-line\n\nexport default createCollection({\n // WeakMap#delete(key:void*):boolean\n 'delete': sharedDelete,\n // :was Map#get(key:void*[, d3fault:void*]):void*\n // Map#has(key:void*):boolean\n has: mapHas,\n // Map#get(key:void*):boolean\n get: sharedGet,\n // Map#set(key:void*, value:void*):void\n set: sharedSet,\n // Map#keys(void):Iterator\n keys: sharedKeys,\n // Map#values(void):Iterator\n values: sharedValues,\n // Map#entries(void):Iterator\n entries: mapEntries,\n // Map#forEach(callback:Function, context:void*):void ==> callback.call(context, key, value, mapObject) === not in specs`\n forEach: sharedForEach,\n // Map#clear():\n clear: sharedClear\n})\n\nfunction createCollection (proto, objectOnly) {\n function Collection (a) {\n if (!this || this.constructor !== Collection) return new Collection(a)\n this._keys = []\n this._values = []\n this._itp = [] // iteration pointers\n this.objectOnly = objectOnly\n\n // parse initial iterable argument passed\n if (a) init.call(this, a)\n }\n\n // define size for non object-only collections\n if (!objectOnly) {\n defineProperty(proto, 'size', {\n get: sharedSize\n })\n }\n\n // set prototype\n proto.constructor = Collection\n Collection.prototype = proto\n\n return Collection\n}\n\nfunction init (a) {\n // init Set argument, like `[1,2,3,{}]`\n if (this.add) a.forEach(this.add, this)\n // init Map argument like `[[1,2], [{}, 4]]`\n else a.forEach(function (a) { this.set(a[0], a[1]) }, this)\n}\n\nfunction sharedDelete (key) {\n if (this.has(key)) {\n this._keys.splice(i, 1)\n this._values.splice(i, 1)\n // update iteration pointers\n this._itp.forEach(function (p) { if (i < p[0]) p[0]-- })\n }\n // Aurora here does it while Canary doesn't\n return i > -1\n}\n\nfunction sharedGet (key) {\n return this.has(key) ? this._values[i] : undefined\n}\n\nfunction has (list, key) {\n if (this.objectOnly && key !== Object(key)) throw new TypeError('Invalid value used as weak collection key')\n // NaN or 0 passed\n if (key !== key || key === 0) for (i = list.length; i-- && !is(list[i], key);) {} // eslint-disable-line\n else i = list.indexOf(key)\n return i > -1\n}\n\nfunction mapHas (value) {\n return has.call(this, this._keys, value)\n}\n\nfunction sharedSet (key, value) {\n this.has(key) ? this._values[i] = value : this._values[this._keys.push(key) - 1] = value\n return this\n}\n\nfunction sharedClear () {\n (this._keys || 0).length =\n this._values.length = 0\n}\n\nfunction sharedKeys () {\n return sharedIterator(this._itp, this._keys)\n}\n\nfunction sharedValues () {\n return sharedIterator(this._itp, this._values)\n}\n\nfunction mapEntries () {\n return sharedIterator(this._itp, this._keys, this._values)\n}\n\nfunction sharedIterator (itp, array, array2) {\n var p = [0]\n var done = false\n itp.push(p)\n return {\n next: function () {\n var v\n var k = p[0]\n if (!done && k < array.length) {\n v = array2 ? [array[k], array2[k]] : array[k]\n p[0]++\n } else {\n done = true\n itp.splice(itp.indexOf(p), 1)\n }\n return { done: done, value: v }\n }\n }\n}\n\nfunction sharedSize () {\n return this._values.length\n}\n\nfunction sharedForEach (callback, context) {\n var it = this.entries()\n for (;;) {\n var r = it.next()\n if (r.done) break\n callback.call(context, r.value[1], r.value[0], this)\n }\n}\n","import ArrayList from './ArrayList'\nimport MapInterface from './Map'\nimport HashSet from './HashSet'\nimport MapPolyfill from '../../Map'\n\nlet MapImpl = typeof Map === 'undefined' || !Map.prototype.values ? MapPolyfill : Map\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html\n *\n * @extends {javascript.util.Map}\n * @constructor\n * @private\n */\nexport default function HashMap () {\n /**\n * @type {Object}\n * @private\n */\n this.map_ = new MapImpl()\n}\nHashMap.prototype = new MapInterface()\n\n/**\n * @override\n */\nHashMap.prototype.get = function (key) {\n return this.map_.get(key) || null\n}\n\n/**\n * @override\n */\nHashMap.prototype.put = function (key, value) {\n this.map_.set(key, value)\n return value\n}\n\n/**\n * @override\n */\nHashMap.prototype.values = function () {\n const arrayList = new ArrayList()\n const it = this.map_.values()\n let o = it.next()\n while (!o.done) {\n arrayList.add(o.value)\n o = it.next()\n }\n return arrayList\n}\n\n/**\n * @override\n */\nHashMap.prototype.entrySet = function () {\n const hashSet = new HashSet()\n this.map_.entries().forEach(entry => hashSet.add(entry))\n return hashSet\n}\n\n/**\n * @override\n */\nHashMap.prototype.size = function () {\n return this.map_.size()\n}\n","import HashMap from '../../../../java/util/HashMap';\nimport Coordinate from './Coordinate';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport Integer from '../../../../java/lang/Integer';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Serializable from '../../../../java/io/Serializable';\nexport default function PrecisionModel() {\n\tthis._modelType = null;\n\tthis._scale = null;\n\tif (arguments.length === 0) {\n\t\tthis._modelType = PrecisionModel.FLOATING;\n\t} else if (arguments.length === 1) {\n\t\tif (arguments[0] instanceof Type) {\n\t\t\tlet modelType = arguments[0];\n\t\t\tthis._modelType = modelType;\n\t\t\tif (modelType === PrecisionModel.FIXED) {\n\t\t\t\tthis.setScale(1.0);\n\t\t\t}\n\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\tlet scale = arguments[0];\n\t\t\tthis._modelType = PrecisionModel.FIXED;\n\t\t\tthis.setScale(scale);\n\t\t} else if (arguments[0] instanceof PrecisionModel) {\n\t\t\tlet pm = arguments[0];\n\t\t\tthis._modelType = pm._modelType;\n\t\t\tthis._scale = pm._scale;\n\t\t}\n\t}\n}\nextend(PrecisionModel.prototype, {\n\tequals: function (other) {\n\t\tif (!(other instanceof PrecisionModel)) {\n\t\t\treturn false;\n\t\t}\n\t\tvar otherPrecisionModel = other;\n\t\treturn this._modelType === otherPrecisionModel._modelType && this._scale === otherPrecisionModel._scale;\n\t},\n\tcompareTo: function (o) {\n\t\tvar other = o;\n\t\tvar sigDigits = this.getMaximumSignificantDigits();\n\t\tvar otherSigDigits = other.getMaximumSignificantDigits();\n\t\treturn new Integer(sigDigits).compareTo(new Integer(otherSigDigits));\n\t},\n\tgetScale: function () {\n\t\treturn this._scale;\n\t},\n\tisFloating: function () {\n\t\treturn this._modelType === PrecisionModel.FLOATING || this._modelType === PrecisionModel.FLOATING_SINGLE;\n\t},\n\tgetType: function () {\n\t\treturn this._modelType;\n\t},\n\ttoString: function () {\n\t\tvar description = \"UNKNOWN\";\n\t\tif (this._modelType === PrecisionModel.FLOATING) {\n\t\t\tdescription = \"Floating\";\n\t\t} else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n\t\t\tdescription = \"Floating-Single\";\n\t\t} else if (this._modelType === PrecisionModel.FIXED) {\n\t\t\tdescription = \"Fixed (Scale=\" + this.getScale() + \")\";\n\t\t}\n\t\treturn description;\n\t},\n\tmakePrecise: function () {\n\t\tif (typeof arguments[0] === \"number\") {\n\t\t\tlet val = arguments[0];\n\t\t\tif (Double.isNaN(val)) return val;\n\t\t\tif (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n\t\t\t\tvar floatSingleVal = val;\n\t\t\t\treturn floatSingleVal;\n\t\t\t}\n\t\t\tif (this._modelType === PrecisionModel.FIXED) {\n\t\t\t\treturn Math.round(val * this._scale) / this._scale;\n\t\t\t}\n\t\t\treturn val;\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet coord = arguments[0];\n\t\t\tif (this._modelType === PrecisionModel.FLOATING) return null;\n\t\t\tcoord.x = this.makePrecise(coord.x);\n\t\t\tcoord.y = this.makePrecise(coord.y);\n\t\t}\n\t},\n\tgetMaximumSignificantDigits: function () {\n\t\tvar maxSigDigits = 16;\n\t\tif (this._modelType === PrecisionModel.FLOATING) {\n\t\t\tmaxSigDigits = 16;\n\t\t} else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n\t\t\tmaxSigDigits = 6;\n\t\t} else if (this._modelType === PrecisionModel.FIXED) {\n\t\t\tmaxSigDigits = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)));\n\t\t}\n\t\treturn maxSigDigits;\n\t},\n\tsetScale: function (scale) {\n\t\tthis._scale = Math.abs(scale);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Serializable, Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn PrecisionModel;\n\t}\n});\nPrecisionModel.mostPrecise = function (pm1, pm2) {\n\tif (pm1.compareTo(pm2) >= 0) return pm1;\n\treturn pm2;\n};\nfunction Type() {\n\tthis._name = null;\n\tlet name = arguments[0];\n\tthis._name = name;\n\tType.nameToTypeMap.put(name, this);\n}\nextend(Type.prototype, {\n\treadResolve: function () {\n\t\treturn Type.nameToTypeMap.get(this._name);\n\t},\n\ttoString: function () {\n\t\treturn this._name;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn Type;\n\t}\n});\nType.serialVersionUID = -5528602631731589822;\nType.nameToTypeMap = new HashMap();\nPrecisionModel.Type = Type;\nPrecisionModel.serialVersionUID = 7777263578777803835;\nPrecisionModel.FIXED = new Type(\"FIXED\");\nPrecisionModel.FLOATING = new Type(\"FLOATING\");\nPrecisionModel.FLOATING_SINGLE = new Type(\"FLOATING SINGLE\");\nPrecisionModel.maximumPreciseValue = 9007199254740992.0;\n","import CoordinateSequenceFactory from './CoordinateSequenceFactory';\nimport LineString from './LineString';\nimport Geometry from './Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport Coordinate from './Coordinate';\nimport Point from './Point';\nimport Polygon from './Polygon';\nimport MultiPoint from './MultiPoint';\nimport GeometryEditor from './util/GeometryEditor';\nimport LinearRing from './LinearRing';\nimport extend from '../../../../extend';\nimport CoordinateArraySequenceFactory from './impl/CoordinateArraySequenceFactory';\nimport MultiPolygon from './MultiPolygon';\nimport CoordinateSequences from './CoordinateSequences';\nimport CoordinateSequence from './CoordinateSequence';\nimport GeometryCollection from './GeometryCollection';\nimport PrecisionModel from './PrecisionModel';\nimport Serializable from '../../../../java/io/Serializable';\nimport Assert from '../util/Assert';\nimport MultiLineString from './MultiLineString';\nexport default function GeometryFactory() {\n\tthis._precisionModel = null;\n\tthis._coordinateSequenceFactory = null;\n\tthis._SRID = null;\n\tif (arguments.length === 0) {\n\t\tGeometryFactory.call(this, new PrecisionModel(), 0);\n\t} else if (arguments.length === 1) {\n\t\tif (hasInterface(arguments[0], CoordinateSequenceFactory)) {\n\t\t\tlet coordinateSequenceFactory = arguments[0];\n\t\t\tGeometryFactory.call(this, new PrecisionModel(), 0, coordinateSequenceFactory);\n\t\t} else if (arguments[0] instanceof PrecisionModel) {\n\t\t\tlet precisionModel = arguments[0];\n\t\t\tGeometryFactory.call(this, precisionModel, 0, GeometryFactory.getDefaultCoordinateSequenceFactory());\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet precisionModel = arguments[0], SRID = arguments[1];\n\t\tGeometryFactory.call(this, precisionModel, SRID, GeometryFactory.getDefaultCoordinateSequenceFactory());\n\t} else if (arguments.length === 3) {\n\t\tlet precisionModel = arguments[0], SRID = arguments[1], coordinateSequenceFactory = arguments[2];\n\t\tthis._precisionModel = precisionModel;\n\t\tthis._coordinateSequenceFactory = coordinateSequenceFactory;\n\t\tthis._SRID = SRID;\n\t}\n}\nextend(GeometryFactory.prototype, {\n\ttoGeometry: function (envelope) {\n\t\tif (envelope.isNull()) {\n\t\t\treturn this.createPoint();\n\t\t}\n\t\tif (envelope.getMinX() === envelope.getMaxX() && envelope.getMinY() === envelope.getMaxY()) {\n\t\t\treturn this.createPoint(new Coordinate(envelope.getMinX(), envelope.getMinY()));\n\t\t}\n\t\tif (envelope.getMinX() === envelope.getMaxX() || envelope.getMinY() === envelope.getMaxY()) {\n\t\t\treturn this.createLineString([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY())]);\n\t\t}\n\t\treturn this.createPolygon(this.createLinearRing([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMinY())]), null);\n\t},\n\tcreateLineString: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createLineString(this.getCoordinateSequenceFactory().create([]));\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn this.createLineString(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new LineString(coordinates, this);\n\t\t\t}\n\t\t}\n\t},\n\tcreateMultiLineString: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new MultiLineString(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet lineStrings = arguments[0];\n\t\t\treturn new MultiLineString(lineStrings, this);\n\t\t}\n\t},\n\tbuildGeometry: function (geomList) {\n\t\tvar geomClass = null;\n\t\tvar isHeterogeneous = false;\n\t\tvar hasGeometryCollection = false;\n\t\tfor (var i = geomList.iterator(); i.hasNext(); ) {\n\t\t\tvar geom = i.next();\n\t\t\tvar partClass = geom.getClass();\n\t\t\tif (geomClass === null) {\n\t\t\t\tgeomClass = partClass;\n\t\t\t}\n\t\t\tif (partClass !== geomClass) {\n\t\t\t\tisHeterogeneous = true;\n\t\t\t}\n\t\t\tif (geom instanceof GeometryCollection) hasGeometryCollection = true;\n\t\t}\n\t\tif (geomClass === null) {\n\t\t\treturn this.createGeometryCollection();\n\t\t}\n\t\tif (isHeterogeneous || hasGeometryCollection) {\n\t\t\treturn this.createGeometryCollection(GeometryFactory.toGeometryArray(geomList));\n\t\t}\n\t\tvar geom0 = geomList.iterator().next();\n\t\tvar isCollection = geomList.size() > 1;\n\t\tif (isCollection) {\n\t\t\tif (geom0 instanceof Polygon) {\n\t\t\t\treturn this.createMultiPolygon(GeometryFactory.toPolygonArray(geomList));\n\t\t\t} else if (geom0 instanceof LineString) {\n\t\t\t\treturn this.createMultiLineString(GeometryFactory.toLineStringArray(geomList));\n\t\t\t} else if (geom0 instanceof Point) {\n\t\t\t\treturn this.createMultiPoint(GeometryFactory.toPointArray(geomList));\n\t\t\t}\n\t\t\tAssert.shouldNeverReachHere(\"Unhandled class: \" + geom0.getClass().getName());\n\t\t}\n\t\treturn geom0;\n\t},\n\tcreateMultiPointFromCoords: function (coordinates) {\n\t\treturn this.createMultiPoint(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null);\n\t},\n\tcreatePoint: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createPoint(this.getCoordinateSequenceFactory().create([]));\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet coordinate = arguments[0];\n\t\t\t\treturn this.createPoint(coordinate !== null ? this.getCoordinateSequenceFactory().create([coordinate]) : null);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new Point(coordinates, this);\n\t\t\t}\n\t\t}\n\t},\n\tgetCoordinateSequenceFactory: function () {\n\t\treturn this._coordinateSequenceFactory;\n\t},\n\tcreatePolygon: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createPolygon(null, null);\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet shell = arguments[0];\n\t\t\t\treturn this.createPolygon(this.createLinearRing(shell));\n\t\t\t} else if (arguments[0] instanceof Array) {\n\t\t\t\tlet shell = arguments[0];\n\t\t\t\treturn this.createPolygon(this.createLinearRing(shell));\n\t\t\t} else if (arguments[0] instanceof LinearRing) {\n\t\t\t\tlet shell = arguments[0];\n\t\t\t\treturn this.createPolygon(shell, null);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet shell = arguments[0], holes = arguments[1];\n\t\t\treturn new Polygon(shell, holes, this);\n\t\t}\n\t},\n\tgetSRID: function () {\n\t\treturn this._SRID;\n\t},\n\tcreateGeometryCollection: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new GeometryCollection(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet geometries = arguments[0];\n\t\t\treturn new GeometryCollection(geometries, this);\n\t\t}\n\t},\n\tcreateGeometry: function (g) {\n\t\tvar editor = new GeometryEditor(this);\n\t\treturn editor.edit(g, {\n\t\t\tedit: function () {\n\t\t\t\tif (arguments.length === 2 && (arguments[1] instanceof Geometry && hasInterface(arguments[0], CoordinateSequence))) {\n\t\t\t\t\tlet coordSeq = arguments[0], geometry = arguments[1];\n\t\t\t\t\treturn this._coordinateSequenceFactory.create(coordSeq);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\tgetPrecisionModel: function () {\n\t\treturn this._precisionModel;\n\t},\n\tcreateLinearRing: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.createLinearRing(this.getCoordinateSequenceFactory().create([]));\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn this.createLinearRing(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\treturn new LinearRing(coordinates, this);\n\t\t\t}\n\t\t}\n\t},\n\tcreateMultiPolygon: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new MultiPolygon(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet polygons = arguments[0];\n\t\t\treturn new MultiPolygon(polygons, this);\n\t\t}\n\t},\n\tcreateMultiPoint: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn new MultiPoint(null, this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Array) {\n\t\t\t\tlet point = arguments[0];\n\t\t\t\treturn new MultiPoint(point, this);\n\t\t\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\t\t\tlet coordinates = arguments[0];\n\t\t\t\tif (coordinates === null) {\n\t\t\t\t\treturn this.createMultiPoint(new Array(0).fill(null));\n\t\t\t\t}\n\t\t\t\tvar points = new Array(coordinates.size()).fill(null);\n\t\t\t\tfor (var i = 0; i < coordinates.size(); i++) {\n\t\t\t\t\tvar ptSeq = this.getCoordinateSequenceFactory().create(1, coordinates.getDimension());\n\t\t\t\t\tCoordinateSequences.copy(coordinates, i, ptSeq, 0, 1);\n\t\t\t\t\tpoints[i] = this.createPoint(ptSeq);\n\t\t\t\t}\n\t\t\t\treturn this.createMultiPoint(points);\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryFactory;\n\t}\n});\nGeometryFactory.toMultiPolygonArray = function (multiPolygons) {\n\tvar multiPolygonArray = new Array(multiPolygons.size()).fill(null);\n\treturn multiPolygons.toArray(multiPolygonArray);\n};\nGeometryFactory.toGeometryArray = function (geometries) {\n\tif (geometries === null) return null;\n\tvar geometryArray = new Array(geometries.size()).fill(null);\n\treturn geometries.toArray(geometryArray);\n};\nGeometryFactory.getDefaultCoordinateSequenceFactory = function () {\n\treturn CoordinateArraySequenceFactory.instance();\n};\nGeometryFactory.toMultiLineStringArray = function (multiLineStrings) {\n\tvar multiLineStringArray = new Array(multiLineStrings.size()).fill(null);\n\treturn multiLineStrings.toArray(multiLineStringArray);\n};\nGeometryFactory.toLineStringArray = function (lineStrings) {\n\tvar lineStringArray = new Array(lineStrings.size()).fill(null);\n\treturn lineStrings.toArray(lineStringArray);\n};\nGeometryFactory.toMultiPointArray = function (multiPoints) {\n\tvar multiPointArray = new Array(multiPoints.size()).fill(null);\n\treturn multiPoints.toArray(multiPointArray);\n};\nGeometryFactory.toLinearRingArray = function (linearRings) {\n\tvar linearRingArray = new Array(linearRings.size()).fill(null);\n\treturn linearRings.toArray(linearRingArray);\n};\nGeometryFactory.toPointArray = function (points) {\n\tvar pointArray = new Array(points.size()).fill(null);\n\treturn points.toArray(pointArray);\n};\nGeometryFactory.toPolygonArray = function (polygons) {\n\tvar polygonArray = new Array(polygons.size()).fill(null);\n\treturn polygons.toArray(polygonArray);\n};\nGeometryFactory.createPointFromInternalCoord = function (coord, exemplar) {\n\texemplar.getPrecisionModel().makePrecise(coord);\n\treturn exemplar.getFactory().createPoint(coord);\n};\nGeometryFactory.serialVersionUID = -6820524753094095635;\n","import Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\nimport extend from '../../../../extend'\n\nconst regExes = {\n 'typeStr': /^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,\n 'emptyTypeStr': /^\\s*(\\w+)\\s*EMPTY\\s*$/,\n 'spaces': /\\s+/,\n 'parenComma': /\\)\\s*,\\s*\\(/,\n 'doubleParenComma': /\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/, // can't use {2} here\n 'trimParens': /^\\s*\\(?(.*?)\\)?\\s*$/\n}\n\n/**\n * Class for reading and writing Well-Known Text.\n *\n * NOTE: Adapted from OpenLayers 2.11 implementation.\n */\n\n/** Create a new parser for WKT\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of WKTParser.\n * @constructor\n * @private\n */\nexport default function WKTParser (geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.precisionModel = this.geometryFactory.getPrecisionModel()\n}\n\nextend(WKTParser.prototype, {\n /**\n * Deserialize a WKT string and return a geometry. Supports WKT for POINT,\n * MULTIPOINT, LINESTRING, LINEARRING, MULTILINESTRING, POLYGON, MULTIPOLYGON,\n * and GEOMETRYCOLLECTION.\n *\n * @param {String} wkt A WKT string.\n * @return {Geometry} A geometry instance.\n * @private\n */\n read (wkt) {\n var geometry, type, str\n wkt = wkt.replace(/[\\n\\r]/g, ' ')\n var matches = regExes.typeStr.exec(wkt)\n if (wkt.search('EMPTY') !== -1) {\n matches = regExes.emptyTypeStr.exec(wkt)\n matches[2] = undefined\n }\n if (matches) {\n type = matches[1].toLowerCase()\n str = matches[2]\n if (parse[type]) {\n geometry = parse[type].call(this, str)\n }\n }\n\n if (geometry === undefined) throw new Error('Could not parse WKT ' + wkt)\n\n return geometry\n },\n\n /**\n * Serialize a geometry into a WKT string.\n *\n * @param {Geometry} geometry A feature or array of features.\n * @return {String} The WKT string representation of the input geometries.\n * @private\n */\n write (geometry) {\n return this.extractGeometry(geometry)\n },\n\n /**\n * Entry point to construct the WKT for a single Geometry object.\n *\n * @param {Geometry} geometry\n * @return {String} A WKT string of representing the geometry.\n * @private\n */\n extractGeometry (geometry) {\n var type = geometry.getGeometryType().toLowerCase()\n if (!extract[type]) {\n return null\n }\n var wktType = type.toUpperCase()\n var data\n if (geometry.isEmpty()) {\n data = wktType + ' EMPTY'\n } else {\n data = wktType + '(' + extract[type].call(this, geometry) + ')'\n }\n return data\n }\n})\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual data extraction.\n * @private\n */\nconst extract = {\n coordinate (coordinate) {\n return coordinate.x + ' ' + coordinate.y\n },\n\n /**\n * Return a space delimited string of point coordinates.\n *\n * @param {Point}\n * point\n * @return {String} A string of coordinates representing the point.\n */\n point (point) {\n return extract.coordinate.call(this, point._coordinates._coordinates[0])\n },\n\n /**\n * Return a comma delimited string of point coordinates from a multipoint.\n *\n * @param {MultiPoint}\n * multipoint\n * @return {String} A string of point coordinate strings representing the\n * multipoint.\n */\n multipoint (multipoint) {\n var array = []\n for (let i = 0, len = multipoint._geometries.length; i < len; ++i) {\n array.push('(' + extract.point.call(this, multipoint._geometries[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of point coordinates from a line.\n *\n * @param {LineString} linestring\n * @return {String} A string of point coordinate strings representing the linestring.\n */\n linestring (linestring) {\n var array = []\n for (let i = 0, len = linestring._points._coordinates.length; i < len; ++i) {\n array.push(extract.coordinate.call(this, linestring._points._coordinates[i]))\n }\n return array.join(',')\n },\n\n linearring (linearring) {\n var array = []\n for (let i = 0, len = linearring._points._coordinates.length; i < len; ++i) {\n array.push(extract.coordinate.call(this, linearring._points._coordinates[i]))\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linestring strings from a\n * multilinestring.\n *\n * @param {MultiLineString} multilinestring\n * @return {String} A string of of linestring strings representing the multilinestring.\n */\n multilinestring (multilinestring) {\n var array = []\n for (let i = 0, len = multilinestring._geometries.length; i < len; ++i) {\n array.push('(' +\n extract.linestring.call(this, multilinestring._geometries[i]) +\n ')')\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linear ring arrays from a polygon.\n *\n * @param {Polygon} polygon\n * @return {String} An array of linear ring arrays representing the polygon.\n */\n polygon (polygon) {\n var array = []\n array.push('(' + extract.linestring.call(this, polygon._shell) + ')')\n for (let i = 0, len = polygon._holes.length; i < len; ++i) {\n array.push('(' + extract.linestring.call(this, polygon._holes[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return an array of polygon arrays from a multipolygon.\n *\n * @param {MultiPolygon} multipolygon\n * @return {String} An array of polygon arrays representing the multipolygon.\n */\n multipolygon (multipolygon) {\n var array = []\n for (let i = 0, len = multipolygon._geometries.length; i < len; ++i) {\n array.push('(' + extract.polygon.call(this, multipolygon._geometries[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return the WKT portion between 'GEOMETRYCOLLECTION(' and ')' for an\n * geometrycollection.\n *\n * @param {GeometryCollection} collection\n * @return {String} internal WKT representation of the collection.\n */\n geometrycollection (collection) {\n var array = []\n for (let i = 0, len = collection._geometries.length; i < len; ++i) {\n array.push(this.extractGeometry(collection._geometries[i]))\n }\n return array.join(',')\n }\n}\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual parsing.\n * @private\n */\nconst parse = {\n \n coord (str) {\n var coords = str.trim().split(regExes.spaces)\n var coord = new Coordinate(Number.parseFloat(coords[0]), Number.parseFloat(coords[1]))\n this.precisionModel.makePrecise(coord)\n return coord\n },\n\n /**\n * Return point geometry given a point WKT fragment.\n *\n * @param {String} str A WKT fragment representing the point.\n * @return {Point} A point geometry.\n * @private\n */\n point (str) {\n if (str === undefined)\n return this.geometryFactory.createPoint()\n return this.geometryFactory.createPoint(parse.coord.call(this, str))\n },\n\n /**\n * Return a multipoint geometry given a multipoint WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipoint.\n * @return {Point} A multipoint feature.\n * @private\n */\n multipoint (str) {\n if (str === undefined)\n return this.geometryFactory.createMultiPoint()\n var point\n var points = str.trim().split(',')\n var components = []\n for (let i = 0, len = points.length; i < len; ++i) {\n point = points[i].replace(regExes.trimParens, '$1')\n components.push(parse.point.call(this, point))\n }\n return this.geometryFactory.createMultiPoint(components)\n },\n\n /**\n * Return a linestring geometry given a linestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linestring.\n * @return {LineString} A linestring geometry.\n * @private\n */\n linestring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLineString()\n }\n\n var points = str.trim().split(',')\n var components = []\n var coords\n for (let i = 0, len = points.length; i < len; ++i) {\n components.push(parse.coord.call(this, points[i]))\n }\n return this.geometryFactory.createLineString(components)\n },\n\n /**\n * Return a linearring geometry given a linearring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linearring.\n * @return {LinearRing} A linearring geometry.\n * @private\n */\n linearring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLinearRing()\n }\n\n var points = str.trim().split(',')\n var components = []\n var coords\n for (let i = 0, len = points.length; i < len; ++i) {\n components.push(parse.coord.call(this, points[i]))\n }\n return this.geometryFactory.createLinearRing(components)\n },\n\n /**\n * Return a multilinestring geometry given a multilinestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multilinestring.\n * @return {MultiLineString} A multilinestring geometry.\n * @private\n */\n multilinestring (str) {\n if (str === undefined) {\n return this.geometryFactory.createMultiLineString()\n }\n\n var line\n var lines = str.trim().split(regExes.parenComma)\n var components = []\n for (let i = 0, len = lines.length; i < len; ++i) {\n line = lines[i].replace(regExes.trimParens, '$1')\n components.push(parse.linestring.call(this, line))\n }\n return this.geometryFactory.createMultiLineString(components)\n },\n\n /**\n * Return a polygon geometry given a polygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the polygon.\n * @return {Polygon} A polygon geometry.\n * @private\n */\n polygon (str) {\n if (str === undefined) {\n return this.geometryFactory.createPolygon()\n }\n\n var ring, linestring, linearring\n var rings = str.trim().split(regExes.parenComma)\n var shell\n var holes = []\n for (let i = 0, len = rings.length; i < len; ++i) {\n ring = rings[i].replace(regExes.trimParens, '$1')\n linestring = parse.linestring.call(this, ring)\n linearring = this.geometryFactory.createLinearRing(linestring._points)\n if (i === 0) {\n shell = linearring\n } else {\n holes.push(linearring)\n }\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n /**\n * Return a multipolygon geometry given a multipolygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipolygon.\n * @return {MultiPolygon} A multipolygon geometry.\n * @private\n */\n multipolygon (str) {\n if (str === undefined) {\n return this.geometryFactory.createMultiPolygon()\n }\n\n var polygon\n var polygons = str.trim().split(regExes.doubleParenComma)\n var components = []\n for (let i = 0, len = polygons.length; i < len; ++i) {\n polygon = polygons[i].replace(regExes.trimParens, '$1')\n components.push(parse.polygon.call(this, polygon))\n }\n return this.geometryFactory.createMultiPolygon(components)\n },\n\n /**\n * Return a geometrycollection given a geometrycollection WKT fragment.\n *\n * @param {String} str A WKT fragment representing the geometrycollection.\n * @return {GeometryCollection}\n * @private\n */\n geometrycollection (str) {\n if (str === undefined) {\n return this.geometryFactory.createGeometryCollection()\n }\n\n // separate components of the collection with |\n str = str.replace(/,\\s*([A-Za-z])/g, '|$1')\n var wktArray = str.trim().split('|')\n var components = []\n for (let i = 0, len = wktArray.length; i < len; ++i) {\n components.push(this.read(wktArray[i]))\n }\n return this.geometryFactory.createGeometryCollection(components)\n }\n}\n","/**\n * @module org/locationtech/jts/io/WKTWriter\n */\n\nimport WKTParser from './WKTParser'\nimport extend from '../../../../extend'\n\n/**\n * Writes the Well-Known Text representation of a {@link Geometry}. The\n * Well-Known Text format is defined in the OGC Simple Features\n * Specification for SQL.\n *

\n * The WKTWriter outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *

\n * The SFS WKT spec does not define a special tag for {@link LinearRing}s.\n * Under the spec, rings are output as LINESTRINGs.\n */\n\n/**\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\nexport default function WKTWriter (geometryFactory) {\n this.parser = new WKTParser(geometryFactory)\n}\n\nextend(WKTWriter.prototype, {\n /**\n * Converts a Geometry to its Well-known Text representation.\n *\n * @param {Geometry} geometry a Geometry to process.\n * @return {string} a string (see the OpenGIS Simple\n * Features Specification).\n * @memberof module:org/locationtech/jts/io/WKTWriter#\n */\n write (geometry) {\n return this.parser.write(geometry)\n }\n})\n\nextend(WKTWriter, {\n /**\n * Generates the WKT for a LINESTRING specified by two\n * {@link Coordinate}s.\n *\n * @param p0 the first coordinate.\n * @param p1 the second coordinate.\n *\n * @return the WKT.\n * @private\n */\n toLineString (p0, p1) {\n if (arguments.length !== 2) {\n throw new Error('Not implemented')\n }\n\n return 'LINESTRING ( ' + p0.x + ' ' + p0.y + ', ' + p1.x + ' ' + p1.y + ' )'\n }\n})\n","import WKTWriter from '../io/WKTWriter';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport Assert from '../util/Assert';\nimport StringBuilder from '../../../../java/lang/StringBuilder';\nexport default function LineIntersector() {\n\tthis._result = null;\n\tthis._inputLines = Array(2).fill().map(() => Array(2));\n\tthis._intPt = new Array(2).fill(null);\n\tthis._intLineIndex = null;\n\tthis._isProper = null;\n\tthis._pa = null;\n\tthis._pb = null;\n\tthis._precisionModel = null;\n\tthis._intPt[0] = new Coordinate();\n\tthis._intPt[1] = new Coordinate();\n\tthis._pa = this._intPt[0];\n\tthis._pb = this._intPt[1];\n\tthis._result = 0;\n}\nextend(LineIntersector.prototype, {\n\tgetIndexAlongSegment: function (segmentIndex, intIndex) {\n\t\tthis.computeIntLineIndex();\n\t\treturn this._intLineIndex[segmentIndex][intIndex];\n\t},\n\tgetTopologySummary: function () {\n\t\tvar catBuilder = new StringBuilder();\n\t\tif (this.isEndPoint()) catBuilder.append(\" endpoint\");\n\t\tif (this._isProper) catBuilder.append(\" proper\");\n\t\tif (this.isCollinear()) catBuilder.append(\" collinear\");\n\t\treturn catBuilder.toString();\n\t},\n\tcomputeIntersection: function (p1, p2, p3, p4) {\n\t\tthis._inputLines[0][0] = p1;\n\t\tthis._inputLines[0][1] = p2;\n\t\tthis._inputLines[1][0] = p3;\n\t\tthis._inputLines[1][1] = p4;\n\t\tthis._result = this.computeIntersect(p1, p2, p3, p4);\n\t},\n\tgetIntersectionNum: function () {\n\t\treturn this._result;\n\t},\n\tcomputeIntLineIndex: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tif (this._intLineIndex === null) {\n\t\t\t\tthis._intLineIndex = Array(2).fill().map(() => Array(2));\n\t\t\t\tthis.computeIntLineIndex(0);\n\t\t\t\tthis.computeIntLineIndex(1);\n\t\t\t}\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet segmentIndex = arguments[0];\n\t\t\tvar dist0 = this.getEdgeDistance(segmentIndex, 0);\n\t\t\tvar dist1 = this.getEdgeDistance(segmentIndex, 1);\n\t\t\tif (dist0 > dist1) {\n\t\t\t\tthis._intLineIndex[segmentIndex][0] = 0;\n\t\t\t\tthis._intLineIndex[segmentIndex][1] = 1;\n\t\t\t} else {\n\t\t\t\tthis._intLineIndex[segmentIndex][0] = 1;\n\t\t\t\tthis._intLineIndex[segmentIndex][1] = 0;\n\t\t\t}\n\t\t}\n\t},\n\tisProper: function () {\n\t\treturn this.hasIntersection() && this._isProper;\n\t},\n\tsetPrecisionModel: function (precisionModel) {\n\t\tthis._precisionModel = precisionModel;\n\t},\n\tisInteriorIntersection: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tif (this.isInteriorIntersection(0)) return true;\n\t\t\tif (this.isInteriorIntersection(1)) return true;\n\t\t\treturn false;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet inputLineIndex = arguments[0];\n\t\t\tfor (var i = 0; i < this._result; i++) {\n\t\t\t\tif (!(this._intPt[i].equals2D(this._inputLines[inputLineIndex][0]) || this._intPt[i].equals2D(this._inputLines[inputLineIndex][1]))) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t},\n\tgetIntersection: function (intIndex) {\n\t\treturn this._intPt[intIndex];\n\t},\n\tisEndPoint: function () {\n\t\treturn this.hasIntersection() && !this._isProper;\n\t},\n\thasIntersection: function () {\n\t\treturn this._result !== LineIntersector.NO_INTERSECTION;\n\t},\n\tgetEdgeDistance: function (segmentIndex, intIndex) {\n\t\tvar dist = LineIntersector.computeEdgeDistance(this._intPt[intIndex], this._inputLines[segmentIndex][0], this._inputLines[segmentIndex][1]);\n\t\treturn dist;\n\t},\n\tisCollinear: function () {\n\t\treturn this._result === LineIntersector.COLLINEAR_INTERSECTION;\n\t},\n\ttoString: function () {\n\t\treturn WKTWriter.toLineString(this._inputLines[0][0], this._inputLines[0][1]) + \" - \" + WKTWriter.toLineString(this._inputLines[1][0], this._inputLines[1][1]) + this.getTopologySummary();\n\t},\n\tgetEndpoint: function (segmentIndex, ptIndex) {\n\t\treturn this._inputLines[segmentIndex][ptIndex];\n\t},\n\tisIntersection: function (pt) {\n\t\tfor (var i = 0; i < this._result; i++) {\n\t\t\tif (this._intPt[i].equals2D(pt)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetIntersectionAlongSegment: function (segmentIndex, intIndex) {\n\t\tthis.computeIntLineIndex();\n\t\treturn this._intPt[this._intLineIndex[segmentIndex][intIndex]];\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineIntersector;\n\t}\n});\nLineIntersector.computeEdgeDistance = function (p, p0, p1) {\n\tvar dx = Math.abs(p1.x - p0.x);\n\tvar dy = Math.abs(p1.y - p0.y);\n\tvar dist = -1.0;\n\tif (p.equals(p0)) {\n\t\tdist = 0.0;\n\t} else if (p.equals(p1)) {\n\t\tif (dx > dy) dist = dx; else dist = dy;\n\t} else {\n\t\tvar pdx = Math.abs(p.x - p0.x);\n\t\tvar pdy = Math.abs(p.y - p0.y);\n\t\tif (dx > dy) dist = pdx; else dist = pdy;\n\t\tif (dist === 0.0 && !p.equals(p0)) {\n\t\t\tdist = Math.max(pdx, pdy);\n\t\t}\n\t}\n\tAssert.isTrue(!(dist === 0.0 && !p.equals(p0)), \"Bad distance calculation\");\n\treturn dist;\n};\nLineIntersector.nonRobustComputeEdgeDistance = function (p, p1, p2) {\n\tvar dx = p.x - p1.x;\n\tvar dy = p.y - p1.y;\n\tvar dist = Math.sqrt(dx * dx + dy * dy);\n\tAssert.isTrue(!(dist === 0.0 && !p.equals(p1)), \"Invalid distance calculation\");\n\treturn dist;\n};\nLineIntersector.DONT_INTERSECT = 0;\nLineIntersector.DO_INTERSECT = 1;\nLineIntersector.COLLINEAR = 2;\nLineIntersector.NO_INTERSECTION = 0;\nLineIntersector.POINT_INTERSECTION = 1;\nLineIntersector.COLLINEAR_INTERSECTION = 2;\n","import NotRepresentableException from './NotRepresentableException';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport Orientation from './Orientation';\nimport CGAlgorithmsDD from './CGAlgorithmsDD';\nimport System from '../../../../java/lang/System';\nimport HCoordinate from './HCoordinate';\nimport Envelope from '../geom/Envelope';\nimport inherits from '../../../../inherits';\nimport Distance from './Distance';\nimport LineIntersector from './LineIntersector';\nexport default function RobustLineIntersector() {\n\tLineIntersector.apply(this);\n}\ninherits(RobustLineIntersector, LineIntersector);\nextend(RobustLineIntersector.prototype, {\n\tisInSegmentEnvelopes: function (intPt) {\n\t\tvar env0 = new Envelope(this._inputLines[0][0], this._inputLines[0][1]);\n\t\tvar env1 = new Envelope(this._inputLines[1][0], this._inputLines[1][1]);\n\t\treturn env0.contains(intPt) && env1.contains(intPt);\n\t},\n\tcomputeIntersection: function () {\n\t\tif (arguments.length === 3) {\n\t\t\tlet p = arguments[0], p1 = arguments[1], p2 = arguments[2];\n\t\t\tthis._isProper = false;\n\t\t\tif (Envelope.intersects(p1, p2, p)) {\n\t\t\t\tif (Orientation.index(p1, p2, p) === 0 && Orientation.index(p2, p1, p) === 0) {\n\t\t\t\t\tthis._isProper = true;\n\t\t\t\t\tif (p.equals(p1) || p.equals(p2)) {\n\t\t\t\t\t\tthis._isProper = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis._result = LineIntersector.POINT_INTERSECTION;\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._result = LineIntersector.NO_INTERSECTION;\n\t\t} else return LineIntersector.prototype.computeIntersection.apply(this, arguments);\n\t},\n\tnormalizeToMinimum: function (n1, n2, n3, n4, normPt) {\n\t\tnormPt.x = this.smallestInAbsValue(n1.x, n2.x, n3.x, n4.x);\n\t\tnormPt.y = this.smallestInAbsValue(n1.y, n2.y, n3.y, n4.y);\n\t\tn1.x -= normPt.x;\n\t\tn1.y -= normPt.y;\n\t\tn2.x -= normPt.x;\n\t\tn2.y -= normPt.y;\n\t\tn3.x -= normPt.x;\n\t\tn3.y -= normPt.y;\n\t\tn4.x -= normPt.x;\n\t\tn4.y -= normPt.y;\n\t},\n\tsafeHCoordinateIntersection: function (p1, p2, q1, q2) {\n\t\tvar intPt = null;\n\t\ttry {\n\t\t\tintPt = HCoordinate.intersection(p1, p2, q1, q2);\n\t\t} catch (e) {\n\t\t\tif (e instanceof NotRepresentableException) {\n\t\t\t\tintPt = RobustLineIntersector.nearestEndpoint(p1, p2, q1, q2);\n\t\t\t} else throw e;\n\t\t} finally {}\n\t\treturn intPt;\n\t},\n\tintersection: function (p1, p2, q1, q2) {\n\t\tvar intPt = this.intersectionWithNormalization(p1, p2, q1, q2);\n\t\tif (!this.isInSegmentEnvelopes(intPt)) {\n\t\t\tintPt = new Coordinate(RobustLineIntersector.nearestEndpoint(p1, p2, q1, q2));\n\t\t}\n\t\tif (this._precisionModel !== null) {\n\t\t\tthis._precisionModel.makePrecise(intPt);\n\t\t}\n\t\treturn intPt;\n\t},\n\tsmallestInAbsValue: function (x1, x2, x3, x4) {\n\t\tvar x = x1;\n\t\tvar xabs = Math.abs(x);\n\t\tif (Math.abs(x2) < xabs) {\n\t\t\tx = x2;\n\t\t\txabs = Math.abs(x2);\n\t\t}\n\t\tif (Math.abs(x3) < xabs) {\n\t\t\tx = x3;\n\t\t\txabs = Math.abs(x3);\n\t\t}\n\t\tif (Math.abs(x4) < xabs) {\n\t\t\tx = x4;\n\t\t}\n\t\treturn x;\n\t},\n\tcheckDD: function (p1, p2, q1, q2, intPt) {\n\t\tvar intPtDD = CGAlgorithmsDD.intersection(p1, p2, q1, q2);\n\t\tvar isIn = this.isInSegmentEnvelopes(intPtDD);\n\t\tSystem.out.println(\"DD in env = \" + isIn + \" --------------------- \" + intPtDD);\n\t\tif (intPt.distance(intPtDD) > 0.0001) {\n\t\t\tSystem.out.println(\"Distance = \" + intPt.distance(intPtDD));\n\t\t}\n\t},\n\tintersectionWithNormalization: function (p1, p2, q1, q2) {\n\t\tvar n1 = new Coordinate(p1);\n\t\tvar n2 = new Coordinate(p2);\n\t\tvar n3 = new Coordinate(q1);\n\t\tvar n4 = new Coordinate(q2);\n\t\tvar normPt = new Coordinate();\n\t\tthis.normalizeToEnvCentre(n1, n2, n3, n4, normPt);\n\t\tvar intPt = this.safeHCoordinateIntersection(n1, n2, n3, n4);\n\t\tintPt.x += normPt.x;\n\t\tintPt.y += normPt.y;\n\t\treturn intPt;\n\t},\n\tcomputeCollinearIntersection: function (p1, p2, q1, q2) {\n\t\tvar p1q1p2 = Envelope.intersects(p1, p2, q1);\n\t\tvar p1q2p2 = Envelope.intersects(p1, p2, q2);\n\t\tvar q1p1q2 = Envelope.intersects(q1, q2, p1);\n\t\tvar q1p2q2 = Envelope.intersects(q1, q2, p2);\n\t\tif (p1q1p2 && p1q2p2) {\n\t\t\tthis._intPt[0] = q1;\n\t\t\tthis._intPt[1] = q2;\n\t\t\treturn LineIntersector.COLLINEAR_INTERSECTION;\n\t\t}\n\t\tif (q1p1q2 && q1p2q2) {\n\t\t\tthis._intPt[0] = p1;\n\t\t\tthis._intPt[1] = p2;\n\t\t\treturn LineIntersector.COLLINEAR_INTERSECTION;\n\t\t}\n\t\tif (p1q1p2 && q1p1q2) {\n\t\t\tthis._intPt[0] = q1;\n\t\t\tthis._intPt[1] = p1;\n\t\t\treturn q1.equals(p1) && !p1q2p2 && !q1p2q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION;\n\t\t}\n\t\tif (p1q1p2 && q1p2q2) {\n\t\t\tthis._intPt[0] = q1;\n\t\t\tthis._intPt[1] = p2;\n\t\t\treturn q1.equals(p2) && !p1q2p2 && !q1p1q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION;\n\t\t}\n\t\tif (p1q2p2 && q1p1q2) {\n\t\t\tthis._intPt[0] = q2;\n\t\t\tthis._intPt[1] = p1;\n\t\t\treturn q2.equals(p1) && !p1q1p2 && !q1p2q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION;\n\t\t}\n\t\tif (p1q2p2 && q1p2q2) {\n\t\t\tthis._intPt[0] = q2;\n\t\t\tthis._intPt[1] = p2;\n\t\t\treturn q2.equals(p2) && !p1q1p2 && !q1p1q2 ? LineIntersector.POINT_INTERSECTION : LineIntersector.COLLINEAR_INTERSECTION;\n\t\t}\n\t\treturn LineIntersector.NO_INTERSECTION;\n\t},\n\tnormalizeToEnvCentre: function (n00, n01, n10, n11, normPt) {\n\t\tvar minX0 = n00.x < n01.x ? n00.x : n01.x;\n\t\tvar minY0 = n00.y < n01.y ? n00.y : n01.y;\n\t\tvar maxX0 = n00.x > n01.x ? n00.x : n01.x;\n\t\tvar maxY0 = n00.y > n01.y ? n00.y : n01.y;\n\t\tvar minX1 = n10.x < n11.x ? n10.x : n11.x;\n\t\tvar minY1 = n10.y < n11.y ? n10.y : n11.y;\n\t\tvar maxX1 = n10.x > n11.x ? n10.x : n11.x;\n\t\tvar maxY1 = n10.y > n11.y ? n10.y : n11.y;\n\t\tvar intMinX = minX0 > minX1 ? minX0 : minX1;\n\t\tvar intMaxX = maxX0 < maxX1 ? maxX0 : maxX1;\n\t\tvar intMinY = minY0 > minY1 ? minY0 : minY1;\n\t\tvar intMaxY = maxY0 < maxY1 ? maxY0 : maxY1;\n\t\tvar intMidX = (intMinX + intMaxX) / 2.0;\n\t\tvar intMidY = (intMinY + intMaxY) / 2.0;\n\t\tnormPt.x = intMidX;\n\t\tnormPt.y = intMidY;\n\t\tn00.x -= normPt.x;\n\t\tn00.y -= normPt.y;\n\t\tn01.x -= normPt.x;\n\t\tn01.y -= normPt.y;\n\t\tn10.x -= normPt.x;\n\t\tn10.y -= normPt.y;\n\t\tn11.x -= normPt.x;\n\t\tn11.y -= normPt.y;\n\t},\n\tcomputeIntersect: function (p1, p2, q1, q2) {\n\t\tthis._isProper = false;\n\t\tif (!Envelope.intersects(p1, p2, q1, q2)) return LineIntersector.NO_INTERSECTION;\n\t\tvar Pq1 = Orientation.index(p1, p2, q1);\n\t\tvar Pq2 = Orientation.index(p1, p2, q2);\n\t\tif (Pq1 > 0 && Pq2 > 0 || Pq1 < 0 && Pq2 < 0) {\n\t\t\treturn LineIntersector.NO_INTERSECTION;\n\t\t}\n\t\tvar Qp1 = Orientation.index(q1, q2, p1);\n\t\tvar Qp2 = Orientation.index(q1, q2, p2);\n\t\tif (Qp1 > 0 && Qp2 > 0 || Qp1 < 0 && Qp2 < 0) {\n\t\t\treturn LineIntersector.NO_INTERSECTION;\n\t\t}\n\t\tvar collinear = Pq1 === 0 && Pq2 === 0 && Qp1 === 0 && Qp2 === 0;\n\t\tif (collinear) {\n\t\t\treturn this.computeCollinearIntersection(p1, p2, q1, q2);\n\t\t}\n\t\tif (Pq1 === 0 || Pq2 === 0 || Qp1 === 0 || Qp2 === 0) {\n\t\t\tthis._isProper = false;\n\t\t\tif (p1.equals2D(q1) || p1.equals2D(q2)) {\n\t\t\t\tthis._intPt[0] = p1;\n\t\t\t} else if (p2.equals2D(q1) || p2.equals2D(q2)) {\n\t\t\t\tthis._intPt[0] = p2;\n\t\t\t} else if (Pq1 === 0) {\n\t\t\t\tthis._intPt[0] = new Coordinate(q1);\n\t\t\t} else if (Pq2 === 0) {\n\t\t\t\tthis._intPt[0] = new Coordinate(q2);\n\t\t\t} else if (Qp1 === 0) {\n\t\t\t\tthis._intPt[0] = new Coordinate(p1);\n\t\t\t} else if (Qp2 === 0) {\n\t\t\t\tthis._intPt[0] = new Coordinate(p2);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._isProper = true;\n\t\t\tthis._intPt[0] = this.intersection(p1, p2, q1, q2);\n\t\t}\n\t\treturn LineIntersector.POINT_INTERSECTION;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RobustLineIntersector;\n\t}\n});\nRobustLineIntersector.nearestEndpoint = function (p1, p2, q1, q2) {\n\tvar nearestPt = p1;\n\tvar minDist = Distance.pointToSegment(p1, q1, q2);\n\tvar dist = Distance.pointToSegment(p2, q1, q2);\n\tif (dist < minDist) {\n\t\tminDist = dist;\n\t\tnearestPt = p2;\n\t}\n\tdist = Distance.pointToSegment(q1, p1, p2);\n\tif (dist < minDist) {\n\t\tminDist = dist;\n\t\tnearestPt = q1;\n\t}\n\tdist = Distance.pointToSegment(q2, p1, p2);\n\tif (dist < minDist) {\n\t\tminDist = dist;\n\t\tnearestPt = q2;\n\t}\n\treturn nearestPt;\n};\n","import NotRepresentableException from '../algorithm/NotRepresentableException';\nimport Coordinate from './Coordinate';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport Orientation from '../algorithm/Orientation';\nimport Comparable from '../../../../java/lang/Comparable';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nimport HCoordinate from '../algorithm/HCoordinate';\nimport Serializable from '../../../../java/io/Serializable';\nimport Distance from '../algorithm/Distance';\nexport default function LineSegment() {\n\tthis.p0 = null;\n\tthis.p1 = null;\n\tif (arguments.length === 0) {\n\t\tLineSegment.call(this, new Coordinate(), new Coordinate());\n\t} else if (arguments.length === 1) {\n\t\tlet ls = arguments[0];\n\t\tLineSegment.call(this, ls.p0, ls.p1);\n\t} else if (arguments.length === 2) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tthis.p0 = p0;\n\t\tthis.p1 = p1;\n\t} else if (arguments.length === 4) {\n\t\tlet x0 = arguments[0], y0 = arguments[1], x1 = arguments[2], y1 = arguments[3];\n\t\tLineSegment.call(this, new Coordinate(x0, y0), new Coordinate(x1, y1));\n\t}\n}\nextend(LineSegment.prototype, {\n\tminX: function () {\n\t\treturn Math.min(this.p0.x, this.p1.x);\n\t},\n\torientationIndex: function () {\n\t\tif (arguments[0] instanceof LineSegment) {\n\t\t\tlet seg = arguments[0];\n\t\t\tvar orient0 = Orientation.index(this.p0, this.p1, seg.p0);\n\t\t\tvar orient1 = Orientation.index(this.p0, this.p1, seg.p1);\n\t\t\tif (orient0 >= 0 && orient1 >= 0) return Math.max(orient0, orient1);\n\t\t\tif (orient0 <= 0 && orient1 <= 0) return Math.max(orient0, orient1);\n\t\t\treturn 0;\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet p = arguments[0];\n\t\t\treturn Orientation.index(this.p0, this.p1, p);\n\t\t}\n\t},\n\ttoGeometry: function (geomFactory) {\n\t\treturn geomFactory.createLineString([this.p0, this.p1]);\n\t},\n\tisVertical: function () {\n\t\treturn this.p0.x === this.p1.x;\n\t},\n\tequals: function (o) {\n\t\tif (!(o instanceof LineSegment)) {\n\t\t\treturn false;\n\t\t}\n\t\tvar other = o;\n\t\treturn this.p0.equals(other.p0) && this.p1.equals(other.p1);\n\t},\n\tintersection: function (line) {\n\t\tvar li = new RobustLineIntersector();\n\t\tli.computeIntersection(this.p0, this.p1, line.p0, line.p1);\n\t\tif (li.hasIntersection()) return li.getIntersection(0);\n\t\treturn null;\n\t},\n\tproject: function () {\n\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\tlet p = arguments[0];\n\t\t\tif (p.equals(this.p0) || p.equals(this.p1)) return new Coordinate(p);\n\t\t\tvar r = this.projectionFactor(p);\n\t\t\tvar coord = new Coordinate();\n\t\t\tcoord.x = this.p0.x + r * (this.p1.x - this.p0.x);\n\t\t\tcoord.y = this.p0.y + r * (this.p1.y - this.p0.y);\n\t\t\treturn coord;\n\t\t} else if (arguments[0] instanceof LineSegment) {\n\t\t\tlet seg = arguments[0];\n\t\t\tvar pf0 = this.projectionFactor(seg.p0);\n\t\t\tvar pf1 = this.projectionFactor(seg.p1);\n\t\t\tif (pf0 >= 1.0 && pf1 >= 1.0) return null;\n\t\t\tif (pf0 <= 0.0 && pf1 <= 0.0) return null;\n\t\t\tvar newp0 = this.project(seg.p0);\n\t\t\tif (pf0 < 0.0) newp0 = this.p0;\n\t\t\tif (pf0 > 1.0) newp0 = this.p1;\n\t\t\tvar newp1 = this.project(seg.p1);\n\t\t\tif (pf1 < 0.0) newp1 = this.p0;\n\t\t\tif (pf1 > 1.0) newp1 = this.p1;\n\t\t\treturn new LineSegment(newp0, newp1);\n\t\t}\n\t},\n\tnormalize: function () {\n\t\tif (this.p1.compareTo(this.p0) < 0) this.reverse();\n\t},\n\tangle: function () {\n\t\treturn Math.atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n\t},\n\tgetCoordinate: function (i) {\n\t\tif (i === 0) return this.p0;\n\t\treturn this.p1;\n\t},\n\tdistancePerpendicular: function (p) {\n\t\treturn Distance.pointToLinePerpendicular(p, this.p0, this.p1);\n\t},\n\tminY: function () {\n\t\treturn Math.min(this.p0.y, this.p1.y);\n\t},\n\tmidPoint: function () {\n\t\treturn LineSegment.midPoint(this.p0, this.p1);\n\t},\n\tprojectionFactor: function (p) {\n\t\tif (p.equals(this.p0)) return 0.0;\n\t\tif (p.equals(this.p1)) return 1.0;\n\t\tvar dx = this.p1.x - this.p0.x;\n\t\tvar dy = this.p1.y - this.p0.y;\n\t\tvar len = dx * dx + dy * dy;\n\t\tif (len <= 0.0) return Double.NaN;\n\t\tvar r = ((p.x - this.p0.x) * dx + (p.y - this.p0.y) * dy) / len;\n\t\treturn r;\n\t},\n\tclosestPoints: function (line) {\n\t\tvar intPt = this.intersection(line);\n\t\tif (intPt !== null) {\n\t\t\treturn [intPt, intPt];\n\t\t}\n\t\tvar closestPt = new Array(2).fill(null);\n\t\tvar minDistance = Double.MAX_VALUE;\n\t\tvar dist = null;\n\t\tvar close00 = this.closestPoint(line.p0);\n\t\tminDistance = close00.distance(line.p0);\n\t\tclosestPt[0] = close00;\n\t\tclosestPt[1] = line.p0;\n\t\tvar close01 = this.closestPoint(line.p1);\n\t\tdist = close01.distance(line.p1);\n\t\tif (dist < minDistance) {\n\t\t\tminDistance = dist;\n\t\t\tclosestPt[0] = close01;\n\t\t\tclosestPt[1] = line.p1;\n\t\t}\n\t\tvar close10 = line.closestPoint(this.p0);\n\t\tdist = close10.distance(this.p0);\n\t\tif (dist < minDistance) {\n\t\t\tminDistance = dist;\n\t\t\tclosestPt[0] = this.p0;\n\t\t\tclosestPt[1] = close10;\n\t\t}\n\t\tvar close11 = line.closestPoint(this.p1);\n\t\tdist = close11.distance(this.p1);\n\t\tif (dist < minDistance) {\n\t\t\tminDistance = dist;\n\t\t\tclosestPt[0] = this.p1;\n\t\t\tclosestPt[1] = close11;\n\t\t}\n\t\treturn closestPt;\n\t},\n\tclosestPoint: function (p) {\n\t\tvar factor = this.projectionFactor(p);\n\t\tif (factor > 0 && factor < 1) {\n\t\t\treturn this.project(p);\n\t\t}\n\t\tvar dist0 = this.p0.distance(p);\n\t\tvar dist1 = this.p1.distance(p);\n\t\tif (dist0 < dist1) return this.p0;\n\t\treturn this.p1;\n\t},\n\tmaxX: function () {\n\t\treturn Math.max(this.p0.x, this.p1.x);\n\t},\n\tgetLength: function () {\n\t\treturn this.p0.distance(this.p1);\n\t},\n\tcompareTo: function (o) {\n\t\tvar other = o;\n\t\tvar comp0 = this.p0.compareTo(other.p0);\n\t\tif (comp0 !== 0) return comp0;\n\t\treturn this.p1.compareTo(other.p1);\n\t},\n\treverse: function () {\n\t\tvar temp = this.p0;\n\t\tthis.p0 = this.p1;\n\t\tthis.p1 = temp;\n\t},\n\tequalsTopo: function (other) {\n\t\treturn this.p0.equals(other.p0) && this.p1.equals(other.p1) || this.p0.equals(other.p1) && this.p1.equals(other.p0);\n\t},\n\tlineIntersection: function (line) {\n\t\ttry {\n\t\t\tvar intPt = HCoordinate.intersection(this.p0, this.p1, line.p0, line.p1);\n\t\t\treturn intPt;\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof NotRepresentableException) {} else throw ex;\n\t\t} finally {}\n\t\treturn null;\n\t},\n\tmaxY: function () {\n\t\treturn Math.max(this.p0.y, this.p1.y);\n\t},\n\tpointAlongOffset: function (segmentLengthFraction, offsetDistance) {\n\t\tvar segx = this.p0.x + segmentLengthFraction * (this.p1.x - this.p0.x);\n\t\tvar segy = this.p0.y + segmentLengthFraction * (this.p1.y - this.p0.y);\n\t\tvar dx = this.p1.x - this.p0.x;\n\t\tvar dy = this.p1.y - this.p0.y;\n\t\tvar len = Math.sqrt(dx * dx + dy * dy);\n\t\tvar ux = 0.0;\n\t\tvar uy = 0.0;\n\t\tif (offsetDistance !== 0.0) {\n\t\t\tif (len <= 0.0) throw new IllegalStateException(\"Cannot compute offset from zero-length line segment\");\n\t\t\tux = offsetDistance * dx / len;\n\t\t\tuy = offsetDistance * dy / len;\n\t\t}\n\t\tvar offsetx = segx - uy;\n\t\tvar offsety = segy + ux;\n\t\tvar coord = new Coordinate(offsetx, offsety);\n\t\treturn coord;\n\t},\n\tsetCoordinates: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet ls = arguments[0];\n\t\t\tthis.setCoordinates(ls.p0, ls.p1);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\tthis.p0.x = p0.x;\n\t\t\tthis.p0.y = p0.y;\n\t\t\tthis.p1.x = p1.x;\n\t\t\tthis.p1.y = p1.y;\n\t\t}\n\t},\n\tsegmentFraction: function (inputPt) {\n\t\tvar segFrac = this.projectionFactor(inputPt);\n\t\tif (segFrac < 0.0) segFrac = 0.0; else if (segFrac > 1.0 || Double.isNaN(segFrac)) segFrac = 1.0;\n\t\treturn segFrac;\n\t},\n\ttoString: function () {\n\t\treturn \"LINESTRING( \" + this.p0.x + \" \" + this.p0.y + \", \" + this.p1.x + \" \" + this.p1.y + \")\";\n\t},\n\tisHorizontal: function () {\n\t\treturn this.p0.y === this.p1.y;\n\t},\n\tdistance: function () {\n\t\tif (arguments[0] instanceof LineSegment) {\n\t\t\tlet ls = arguments[0];\n\t\t\treturn Distance.segmentToSegment(this.p0, this.p1, ls.p0, ls.p1);\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet p = arguments[0];\n\t\t\treturn Distance.pointToSegment(p, this.p0, this.p1);\n\t\t}\n\t},\n\tpointAlong: function (segmentLengthFraction) {\n\t\tvar coord = new Coordinate();\n\t\tcoord.x = this.p0.x + segmentLengthFraction * (this.p1.x - this.p0.x);\n\t\tcoord.y = this.p0.y + segmentLengthFraction * (this.p1.y - this.p0.y);\n\t\treturn coord;\n\t},\n\thashCode: function () {\n\t\tvar bits0 = java.lang.Double.doubleToLongBits(this.p0.x);\n\t\tbits0 ^= java.lang.Double.doubleToLongBits(this.p0.y) * 31;\n\t\tvar hash0 = Math.trunc(bits0) ^ Math.trunc(bits0 >> 32);\n\t\tvar bits1 = java.lang.Double.doubleToLongBits(this.p1.x);\n\t\tbits1 ^= java.lang.Double.doubleToLongBits(this.p1.y) * 31;\n\t\tvar hash1 = Math.trunc(bits1) ^ Math.trunc(bits1 >> 32);\n\t\treturn hash0 ^ hash1;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn LineSegment;\n\t}\n});\nLineSegment.midPoint = function (p0, p1) {\n\treturn new Coordinate((p0.x + p1.x) / 2, (p0.y + p1.y) / 2);\n};\nLineSegment.serialVersionUID = 3252005833466256227;\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nexport default function Location() {}\nextend(Location.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Location;\n\t}\n});\nLocation.toLocationSymbol = function (locationValue) {\n\tswitch (locationValue) {\n\t\tcase Location.EXTERIOR:\n\t\t\treturn 'e';\n\t\tcase Location.BOUNDARY:\n\t\t\treturn 'b';\n\t\tcase Location.INTERIOR:\n\t\t\treturn 'i';\n\t\tcase Location.NONE:\n\t\t\treturn '-';\n\t}\n\tthrow new IllegalArgumentException(\"Unknown location value: \" + locationValue);\n};\nLocation.INTERIOR = 0;\nLocation.BOUNDARY = 1;\nLocation.EXTERIOR = 2;\nLocation.NONE = -1;\n","import Location from './Location';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport Dimension from './Dimension';\nimport Cloneable from '../../../../java/lang/Cloneable';\nimport StringBuilder from '../../../../java/lang/StringBuilder';\nexport default function IntersectionMatrix() {\n\tthis._matrix = null;\n\tif (arguments.length === 0) {\n\t\tthis._matrix = Array(3).fill().map(() => Array(3));\n\t\tthis.setAll(Dimension.FALSE);\n\t} else if (arguments.length === 1) {\n\t\tif (typeof arguments[0] === \"string\") {\n\t\t\tlet elements = arguments[0];\n\t\t\tIntersectionMatrix.call(this);\n\t\t\tthis.set(elements);\n\t\t} else if (arguments[0] instanceof IntersectionMatrix) {\n\t\t\tlet other = arguments[0];\n\t\t\tIntersectionMatrix.call(this);\n\t\t\tthis._matrix[Location.INTERIOR][Location.INTERIOR] = other._matrix[Location.INTERIOR][Location.INTERIOR];\n\t\t\tthis._matrix[Location.INTERIOR][Location.BOUNDARY] = other._matrix[Location.INTERIOR][Location.BOUNDARY];\n\t\t\tthis._matrix[Location.INTERIOR][Location.EXTERIOR] = other._matrix[Location.INTERIOR][Location.EXTERIOR];\n\t\t\tthis._matrix[Location.BOUNDARY][Location.INTERIOR] = other._matrix[Location.BOUNDARY][Location.INTERIOR];\n\t\t\tthis._matrix[Location.BOUNDARY][Location.BOUNDARY] = other._matrix[Location.BOUNDARY][Location.BOUNDARY];\n\t\t\tthis._matrix[Location.BOUNDARY][Location.EXTERIOR] = other._matrix[Location.BOUNDARY][Location.EXTERIOR];\n\t\t\tthis._matrix[Location.EXTERIOR][Location.INTERIOR] = other._matrix[Location.EXTERIOR][Location.INTERIOR];\n\t\t\tthis._matrix[Location.EXTERIOR][Location.BOUNDARY] = other._matrix[Location.EXTERIOR][Location.BOUNDARY];\n\t\t\tthis._matrix[Location.EXTERIOR][Location.EXTERIOR] = other._matrix[Location.EXTERIOR][Location.EXTERIOR];\n\t\t}\n\t}\n}\nextend(IntersectionMatrix.prototype, {\n\tisIntersects: function () {\n\t\treturn !this.isDisjoint();\n\t},\n\tisCovers: function () {\n\t\tvar hasPointInCommon = IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.BOUNDARY]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.BOUNDARY]);\n\t\treturn hasPointInCommon && this._matrix[Location.EXTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.BOUNDARY] === Dimension.FALSE;\n\t},\n\tisCoveredBy: function () {\n\t\tvar hasPointInCommon = IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.BOUNDARY]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.BOUNDARY]);\n\t\treturn hasPointInCommon && this._matrix[Location.INTERIOR][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.EXTERIOR] === Dimension.FALSE;\n\t},\n\tset: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet dimensionSymbols = arguments[0];\n\t\t\tfor (var i = 0; i < dimensionSymbols.length; i++) {\n\t\t\t\tvar row = Math.trunc(i / 3);\n\t\t\t\tvar col = i % 3;\n\t\t\t\tthis._matrix[row][col] = Dimension.toDimensionValue(dimensionSymbols.charAt(i));\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet row = arguments[0], column = arguments[1], dimensionValue = arguments[2];\n\t\t\tthis._matrix[row][column] = dimensionValue;\n\t\t}\n\t},\n\tisContains: function () {\n\t\treturn IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && this._matrix[Location.EXTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.BOUNDARY] === Dimension.FALSE;\n\t},\n\tsetAtLeast: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet minimumDimensionSymbols = arguments[0];\n\t\t\tfor (var i = 0; i < minimumDimensionSymbols.length; i++) {\n\t\t\t\tvar row = Math.trunc(i / 3);\n\t\t\t\tvar col = i % 3;\n\t\t\t\tthis.setAtLeast(row, col, Dimension.toDimensionValue(minimumDimensionSymbols.charAt(i)));\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet row = arguments[0], column = arguments[1], minimumDimensionValue = arguments[2];\n\t\t\tif (this._matrix[row][column] < minimumDimensionValue) {\n\t\t\t\tthis._matrix[row][column] = minimumDimensionValue;\n\t\t\t}\n\t\t}\n\t},\n\tsetAtLeastIfValid: function (row, column, minimumDimensionValue) {\n\t\tif (row >= 0 && column >= 0) {\n\t\t\tthis.setAtLeast(row, column, minimumDimensionValue);\n\t\t}\n\t},\n\tisWithin: function () {\n\t\treturn IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && this._matrix[Location.INTERIOR][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.EXTERIOR] === Dimension.FALSE;\n\t},\n\tisTouches: function (dimensionOfGeometryA, dimensionOfGeometryB) {\n\t\tif (dimensionOfGeometryA > dimensionOfGeometryB) {\n\t\t\treturn this.isTouches(dimensionOfGeometryB, dimensionOfGeometryA);\n\t\t}\n\t\tif (dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.L || dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.L) {\n\t\t\treturn this._matrix[Location.INTERIOR][Location.INTERIOR] === Dimension.FALSE && (IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.BOUNDARY]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.INTERIOR]) || IntersectionMatrix.isTrue(this._matrix[Location.BOUNDARY][Location.BOUNDARY]));\n\t\t}\n\t\treturn false;\n\t},\n\tisOverlaps: function (dimensionOfGeometryA, dimensionOfGeometryB) {\n\t\tif (dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.P || dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.A) {\n\t\t\treturn IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.EXTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.EXTERIOR][Location.INTERIOR]);\n\t\t}\n\t\tif (dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.L) {\n\t\t\treturn this._matrix[Location.INTERIOR][Location.INTERIOR] === 1 && IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.EXTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.EXTERIOR][Location.INTERIOR]);\n\t\t}\n\t\treturn false;\n\t},\n\tisEquals: function (dimensionOfGeometryA, dimensionOfGeometryB) {\n\t\tif (dimensionOfGeometryA !== dimensionOfGeometryB) {\n\t\t\treturn false;\n\t\t}\n\t\treturn IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && this._matrix[Location.INTERIOR][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.EXTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.EXTERIOR][Location.BOUNDARY] === Dimension.FALSE;\n\t},\n\ttoString: function () {\n\t\tvar builder = new StringBuilder(\"123456789\");\n\t\tfor (var ai = 0; ai < 3; ai++) {\n\t\t\tfor (var bi = 0; bi < 3; bi++) {\n\t\t\t\tbuilder.setCharAt(3 * ai + bi, Dimension.toDimensionSymbol(this._matrix[ai][bi]));\n\t\t\t}\n\t\t}\n\t\treturn builder.toString();\n\t},\n\tsetAll: function (dimensionValue) {\n\t\tfor (var ai = 0; ai < 3; ai++) {\n\t\t\tfor (var bi = 0; bi < 3; bi++) {\n\t\t\t\tthis._matrix[ai][bi] = dimensionValue;\n\t\t\t}\n\t\t}\n\t},\n\tget: function (row, column) {\n\t\treturn this._matrix[row][column];\n\t},\n\ttranspose: function () {\n\t\tvar temp = this._matrix[1][0];\n\t\tthis._matrix[1][0] = this._matrix[0][1];\n\t\tthis._matrix[0][1] = temp;\n\t\ttemp = this._matrix[2][0];\n\t\tthis._matrix[2][0] = this._matrix[0][2];\n\t\tthis._matrix[0][2] = temp;\n\t\ttemp = this._matrix[2][1];\n\t\tthis._matrix[2][1] = this._matrix[1][2];\n\t\tthis._matrix[1][2] = temp;\n\t\treturn this;\n\t},\n\tmatches: function (requiredDimensionSymbols) {\n\t\tif (requiredDimensionSymbols.length !== 9) {\n\t\t\tthrow new IllegalArgumentException(\"Should be length 9: \" + requiredDimensionSymbols);\n\t\t}\n\t\tfor (var ai = 0; ai < 3; ai++) {\n\t\t\tfor (var bi = 0; bi < 3; bi++) {\n\t\t\t\tif (!IntersectionMatrix.matches(this._matrix[ai][bi], requiredDimensionSymbols.charAt(3 * ai + bi))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\tadd: function (im) {\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\tfor (var j = 0; j < 3; j++) {\n\t\t\t\tthis.setAtLeast(i, j, im.get(i, j));\n\t\t\t}\n\t\t}\n\t},\n\tisDisjoint: function () {\n\t\treturn this._matrix[Location.INTERIOR][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.INTERIOR][Location.BOUNDARY] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.INTERIOR] === Dimension.FALSE && this._matrix[Location.BOUNDARY][Location.BOUNDARY] === Dimension.FALSE;\n\t},\n\tisCrosses: function (dimensionOfGeometryA, dimensionOfGeometryB) {\n\t\tif (dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.L || dimensionOfGeometryA === Dimension.P && dimensionOfGeometryB === Dimension.A || dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.A) {\n\t\t\treturn IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.EXTERIOR]);\n\t\t}\n\t\tif (dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.P || dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.P || dimensionOfGeometryA === Dimension.A && dimensionOfGeometryB === Dimension.L) {\n\t\t\treturn IntersectionMatrix.isTrue(this._matrix[Location.INTERIOR][Location.INTERIOR]) && IntersectionMatrix.isTrue(this._matrix[Location.EXTERIOR][Location.INTERIOR]);\n\t\t}\n\t\tif (dimensionOfGeometryA === Dimension.L && dimensionOfGeometryB === Dimension.L) {\n\t\t\treturn this._matrix[Location.INTERIOR][Location.INTERIOR] === 0;\n\t\t}\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Cloneable];\n\t},\n\tgetClass: function () {\n\t\treturn IntersectionMatrix;\n\t}\n});\nIntersectionMatrix.matches = function () {\n\tif (Number.isInteger(arguments[0]) && typeof arguments[1] === \"string\") {\n\t\tlet actualDimensionValue = arguments[0], requiredDimensionSymbol = arguments[1];\n\t\tif (requiredDimensionSymbol === Dimension.SYM_DONTCARE) {\n\t\t\treturn true;\n\t\t}\n\t\tif (requiredDimensionSymbol === Dimension.SYM_TRUE && (actualDimensionValue >= 0 || actualDimensionValue === Dimension.TRUE)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (requiredDimensionSymbol === Dimension.SYM_FALSE && actualDimensionValue === Dimension.FALSE) {\n\t\t\treturn true;\n\t\t}\n\t\tif (requiredDimensionSymbol === Dimension.SYM_P && actualDimensionValue === Dimension.P) {\n\t\t\treturn true;\n\t\t}\n\t\tif (requiredDimensionSymbol === Dimension.SYM_L && actualDimensionValue === Dimension.L) {\n\t\t\treturn true;\n\t\t}\n\t\tif (requiredDimensionSymbol === Dimension.SYM_A && actualDimensionValue === Dimension.A) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t} else if (typeof arguments[0] === \"string\" && typeof arguments[1] === \"string\") {\n\t\tlet actualDimensionSymbols = arguments[0], requiredDimensionSymbols = arguments[1];\n\t\tvar m = new IntersectionMatrix(actualDimensionSymbols);\n\t\treturn m.matches(requiredDimensionSymbols);\n\t}\n};\nIntersectionMatrix.isTrue = function (actualDimensionValue) {\n\tif (actualDimensionValue >= 0 || actualDimensionValue === Dimension.TRUE) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n","import extend from '../../../../extend';\nimport Orientation from './Orientation';\nexport default function Angle() {}\nextend(Angle.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Angle;\n\t}\n});\nAngle.toDegrees = function (radians) {\n\treturn radians * 180 / Math.PI;\n};\nAngle.normalize = function (angle) {\n\twhile (angle > Math.PI) angle -= Angle.PI_TIMES_2;\n\twhile (angle <= -Math.PI) angle += Angle.PI_TIMES_2;\n\treturn angle;\n};\nAngle.angle = function () {\n\tif (arguments.length === 1) {\n\t\tlet p = arguments[0];\n\t\treturn Math.atan2(p.y, p.x);\n\t} else if (arguments.length === 2) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tvar dx = p1.x - p0.x;\n\t\tvar dy = p1.y - p0.y;\n\t\treturn Math.atan2(dy, dx);\n\t}\n};\nAngle.isAcute = function (p0, p1, p2) {\n\tvar dx0 = p0.x - p1.x;\n\tvar dy0 = p0.y - p1.y;\n\tvar dx1 = p2.x - p1.x;\n\tvar dy1 = p2.y - p1.y;\n\tvar dotprod = dx0 * dx1 + dy0 * dy1;\n\treturn dotprod > 0;\n};\nAngle.isObtuse = function (p0, p1, p2) {\n\tvar dx0 = p0.x - p1.x;\n\tvar dy0 = p0.y - p1.y;\n\tvar dx1 = p2.x - p1.x;\n\tvar dy1 = p2.y - p1.y;\n\tvar dotprod = dx0 * dx1 + dy0 * dy1;\n\treturn dotprod < 0;\n};\nAngle.interiorAngle = function (p0, p1, p2) {\n\tvar anglePrev = Angle.angle(p1, p0);\n\tvar angleNext = Angle.angle(p1, p2);\n\treturn Math.abs(angleNext - anglePrev);\n};\nAngle.normalizePositive = function (angle) {\n\tif (angle < 0.0) {\n\t\twhile (angle < 0.0) angle += Angle.PI_TIMES_2;\n\t\tif (angle >= Angle.PI_TIMES_2) angle = 0.0;\n\t} else {\n\t\twhile (angle >= Angle.PI_TIMES_2) angle -= Angle.PI_TIMES_2;\n\t\tif (angle < 0.0) angle = 0.0;\n\t}\n\treturn angle;\n};\nAngle.angleBetween = function (tip1, tail, tip2) {\n\tvar a1 = Angle.angle(tail, tip1);\n\tvar a2 = Angle.angle(tail, tip2);\n\treturn Angle.diff(a1, a2);\n};\nAngle.diff = function (ang1, ang2) {\n\tvar delAngle = null;\n\tif (ang1 < ang2) {\n\t\tdelAngle = ang2 - ang1;\n\t} else {\n\t\tdelAngle = ang1 - ang2;\n\t}\n\tif (delAngle > Math.PI) {\n\t\tdelAngle = 2 * Math.PI - delAngle;\n\t}\n\treturn delAngle;\n};\nAngle.toRadians = function (angleDegrees) {\n\treturn angleDegrees * Math.PI / 180.0;\n};\nAngle.getTurn = function (ang1, ang2) {\n\tvar crossproduct = Math.sin(ang2 - ang1);\n\tif (crossproduct > 0) {\n\t\treturn Angle.COUNTERCLOCKWISE;\n\t}\n\tif (crossproduct < 0) {\n\t\treturn Angle.CLOCKWISE;\n\t}\n\treturn Angle.NONE;\n};\nAngle.angleBetweenOriented = function (tip1, tail, tip2) {\n\tvar a1 = Angle.angle(tail, tip1);\n\tvar a2 = Angle.angle(tail, tip2);\n\tvar angDel = a2 - a1;\n\tif (angDel <= -Math.PI) return angDel + Angle.PI_TIMES_2;\n\tif (angDel > Math.PI) return angDel - Angle.PI_TIMES_2;\n\treturn angDel;\n};\nAngle.PI_TIMES_2 = 2.0 * Math.PI;\nAngle.PI_OVER_2 = Math.PI / 2.0;\nAngle.PI_OVER_4 = Math.PI / 4.0;\nAngle.COUNTERCLOCKWISE = Orientation.COUNTERCLOCKWISE;\nAngle.CLOCKWISE = Orientation.CLOCKWISE;\nAngle.NONE = Orientation.COLLINEAR;\n","import Coordinate from './Coordinate';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport Angle from '../algorithm/Angle';\nimport HCoordinate from '../algorithm/HCoordinate';\nexport default function Triangle() {\n\tthis.p0 = null;\n\tthis.p1 = null;\n\tthis.p2 = null;\n\tlet p0 = arguments[0], p1 = arguments[1], p2 = arguments[2];\n\tthis.p0 = p0;\n\tthis.p1 = p1;\n\tthis.p2 = p2;\n}\nextend(Triangle.prototype, {\n\tarea: function () {\n\t\treturn Triangle.area(this.p0, this.p1, this.p2);\n\t},\n\tsignedArea: function () {\n\t\treturn Triangle.signedArea(this.p0, this.p1, this.p2);\n\t},\n\tinterpolateZ: function (p) {\n\t\tif (p === null) throw new IllegalArgumentException(\"Supplied point is null.\");\n\t\treturn Triangle.interpolateZ(p, this.p0, this.p1, this.p2);\n\t},\n\tlongestSideLength: function () {\n\t\treturn Triangle.longestSideLength(this.p0, this.p1, this.p2);\n\t},\n\tisAcute: function () {\n\t\treturn Triangle.isAcute(this.p0, this.p1, this.p2);\n\t},\n\tcircumcentre: function () {\n\t\treturn Triangle.circumcentre(this.p0, this.p1, this.p2);\n\t},\n\tarea3D: function () {\n\t\treturn Triangle.area3D(this.p0, this.p1, this.p2);\n\t},\n\tcentroid: function () {\n\t\treturn Triangle.centroid(this.p0, this.p1, this.p2);\n\t},\n\tinCentre: function () {\n\t\treturn Triangle.inCentre(this.p0, this.p1, this.p2);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Triangle;\n\t}\n});\nTriangle.area = function (a, b, c) {\n\treturn Math.abs(((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2);\n};\nTriangle.signedArea = function (a, b, c) {\n\treturn ((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2;\n};\nTriangle.det = function (m00, m01, m10, m11) {\n\treturn m00 * m11 - m01 * m10;\n};\nTriangle.interpolateZ = function (p, v0, v1, v2) {\n\tvar x0 = v0.x;\n\tvar y0 = v0.y;\n\tvar a = v1.x - x0;\n\tvar b = v2.x - x0;\n\tvar c = v1.y - y0;\n\tvar d = v2.y - y0;\n\tvar det = a * d - b * c;\n\tvar dx = p.x - x0;\n\tvar dy = p.y - y0;\n\tvar t = (d * dx - b * dy) / det;\n\tvar u = (-c * dx + a * dy) / det;\n\tvar z = v0.z + t * (v1.z - v0.z) + u * (v2.z - v0.z);\n\treturn z;\n};\nTriangle.longestSideLength = function (a, b, c) {\n\tvar lenAB = a.distance(b);\n\tvar lenBC = b.distance(c);\n\tvar lenCA = c.distance(a);\n\tvar maxLen = lenAB;\n\tif (lenBC > maxLen) maxLen = lenBC;\n\tif (lenCA > maxLen) maxLen = lenCA;\n\treturn maxLen;\n};\nTriangle.isAcute = function (a, b, c) {\n\tif (!Angle.isAcute(a, b, c)) return false;\n\tif (!Angle.isAcute(b, c, a)) return false;\n\tif (!Angle.isAcute(c, a, b)) return false;\n\treturn true;\n};\nTriangle.circumcentre = function (a, b, c) {\n\tvar cx = c.x;\n\tvar cy = c.y;\n\tvar ax = a.x - cx;\n\tvar ay = a.y - cy;\n\tvar bx = b.x - cx;\n\tvar by = b.y - cy;\n\tvar denom = 2 * Triangle.det(ax, ay, bx, by);\n\tvar numx = Triangle.det(ay, ax * ax + ay * ay, by, bx * bx + by * by);\n\tvar numy = Triangle.det(ax, ax * ax + ay * ay, bx, bx * bx + by * by);\n\tvar ccx = cx - numx / denom;\n\tvar ccy = cy + numy / denom;\n\treturn new Coordinate(ccx, ccy);\n};\nTriangle.perpendicularBisector = function (a, b) {\n\tvar dx = b.x - a.x;\n\tvar dy = b.y - a.y;\n\tvar l1 = new HCoordinate(a.x + dx / 2.0, a.y + dy / 2.0, 1.0);\n\tvar l2 = new HCoordinate(a.x - dy + dx / 2.0, a.y + dx + dy / 2.0, 1.0);\n\treturn new HCoordinate(l1, l2);\n};\nTriangle.angleBisector = function (a, b, c) {\n\tvar len0 = b.distance(a);\n\tvar len2 = b.distance(c);\n\tvar frac = len0 / (len0 + len2);\n\tvar dx = c.x - a.x;\n\tvar dy = c.y - a.y;\n\tvar splitPt = new Coordinate(a.x + frac * dx, a.y + frac * dy);\n\treturn splitPt;\n};\nTriangle.area3D = function (a, b, c) {\n\tvar ux = b.x - a.x;\n\tvar uy = b.y - a.y;\n\tvar uz = b.z - a.z;\n\tvar vx = c.x - a.x;\n\tvar vy = c.y - a.y;\n\tvar vz = c.z - a.z;\n\tvar crossx = uy * vz - uz * vy;\n\tvar crossy = uz * vx - ux * vz;\n\tvar crossz = ux * vy - uy * vx;\n\tvar absSq = crossx * crossx + crossy * crossy + crossz * crossz;\n\tvar area3D = Math.sqrt(absSq) / 2;\n\treturn area3D;\n};\nTriangle.centroid = function (a, b, c) {\n\tvar x = (a.x + b.x + c.x) / 3;\n\tvar y = (a.y + b.y + c.y) / 3;\n\treturn new Coordinate(x, y);\n};\nTriangle.inCentre = function (a, b, c) {\n\tvar len0 = b.distance(c);\n\tvar len1 = a.distance(c);\n\tvar len2 = a.distance(b);\n\tvar circum = len0 + len1 + len2;\n\tvar inCentreX = (len0 * a.x + len1 * b.x + len2 * c.x) / circum;\n\tvar inCentreY = (len0 * a.y + len1 * b.y + len2 * c.y) / circum;\n\treturn new Coordinate(inCentreX, inCentreY);\n};\n","import WKTWriter from '../../io/WKTWriter';\nimport Coordinate from '../../geom/Coordinate';\nimport Double from '../../../../../java/lang/Double';\nimport extend from '../../../../../extend';\nexport default function PointPairDistance() {\n\tthis._pt = [new Coordinate(), new Coordinate()];\n\tthis._distance = Double.NaN;\n\tthis._isNull = true;\n}\nextend(PointPairDistance.prototype, {\n\tgetCoordinates: function () {\n\t\treturn this._pt;\n\t},\n\tgetCoordinate: function (i) {\n\t\treturn this._pt[i];\n\t},\n\tsetMinimum: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet ptDist = arguments[0];\n\t\t\tthis.setMinimum(ptDist._pt[0], ptDist._pt[1]);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\tif (this._isNull) {\n\t\t\t\tthis.initialize(p0, p1);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar dist = p0.distance(p1);\n\t\t\tif (dist < this._distance) this.initialize(p0, p1, dist);\n\t\t}\n\t},\n\tinitialize: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tthis._isNull = true;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\tthis._pt[0].setCoordinate(p0);\n\t\t\tthis._pt[1].setCoordinate(p1);\n\t\t\tthis._distance = p0.distance(p1);\n\t\t\tthis._isNull = false;\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1], distance = arguments[2];\n\t\t\tthis._pt[0].setCoordinate(p0);\n\t\t\tthis._pt[1].setCoordinate(p1);\n\t\t\tthis._distance = distance;\n\t\t\tthis._isNull = false;\n\t\t}\n\t},\n\ttoString: function () {\n\t\treturn WKTWriter.toLineString(this._pt[0], this._pt[1]);\n\t},\n\tgetDistance: function () {\n\t\treturn this._distance;\n\t},\n\tsetMaximum: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet ptDist = arguments[0];\n\t\t\tthis.setMaximum(ptDist._pt[0], ptDist._pt[1]);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\tif (this._isNull) {\n\t\t\t\tthis.initialize(p0, p1);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar dist = p0.distance(p1);\n\t\t\tif (dist > this._distance) this.initialize(p0, p1, dist);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PointPairDistance;\n\t}\n});\n","import LineString from '../../geom/LineString';\nimport Geometry from '../../geom/Geometry';\nimport Coordinate from '../../geom/Coordinate';\nimport Polygon from '../../geom/Polygon';\nimport extend from '../../../../../extend';\nimport LineSegment from '../../geom/LineSegment';\nimport PointPairDistance from './PointPairDistance';\nimport GeometryCollection from '../../geom/GeometryCollection';\nexport default function DistanceToPoint() {}\nextend(DistanceToPoint.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DistanceToPoint;\n\t}\n});\nDistanceToPoint.computeDistance = function () {\n\tif (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof LineString && arguments[1] instanceof Coordinate)) {\n\t\tlet line = arguments[0], pt = arguments[1], ptDist = arguments[2];\n\t\tvar tempSegment = new LineSegment();\n\t\tvar coords = line.getCoordinates();\n\t\tfor (var i = 0; i < coords.length - 1; i++) {\n\t\t\ttempSegment.setCoordinates(coords[i], coords[i + 1]);\n\t\t\tvar closestPt = tempSegment.closestPoint(pt);\n\t\t\tptDist.setMinimum(closestPt, pt);\n\t\t}\n\t} else if (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof Polygon && arguments[1] instanceof Coordinate)) {\n\t\tlet poly = arguments[0], pt = arguments[1], ptDist = arguments[2];\n\t\tDistanceToPoint.computeDistance(poly.getExteriorRing(), pt, ptDist);\n\t\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\t\tDistanceToPoint.computeDistance(poly.getInteriorRingN(i), pt, ptDist);\n\t\t}\n\t} else if (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof Geometry && arguments[1] instanceof Coordinate)) {\n\t\tlet geom = arguments[0], pt = arguments[1], ptDist = arguments[2];\n\t\tif (geom instanceof LineString) {\n\t\t\tDistanceToPoint.computeDistance(geom, pt, ptDist);\n\t\t} else if (geom instanceof Polygon) {\n\t\t\tDistanceToPoint.computeDistance(geom, pt, ptDist);\n\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\tvar gc = geom;\n\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\tvar g = gc.getGeometryN(i);\n\t\t\t\tDistanceToPoint.computeDistance(g, pt, ptDist);\n\t\t\t}\n\t\t} else {\n\t\t\tptDist.setMinimum(geom.getCoordinate(), pt);\n\t\t}\n\t} else if (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof LineSegment && arguments[1] instanceof Coordinate)) {\n\t\tlet segment = arguments[0], pt = arguments[1], ptDist = arguments[2];\n\t\tvar closestPt = segment.closestPoint(pt);\n\t\tptDist.setMinimum(closestPt, pt);\n\t}\n};\n","import DistanceToPoint from './DistanceToPoint';\nimport CoordinateFilter from '../../geom/CoordinateFilter';\nimport Coordinate from '../../geom/Coordinate';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../../extend';\nimport PointPairDistance from './PointPairDistance';\nimport CoordinateSequenceFilter from '../../geom/CoordinateSequenceFilter';\nexport default function DiscreteHausdorffDistance() {\n\tthis._g0 = null;\n\tthis._g1 = null;\n\tthis._ptDist = new PointPairDistance();\n\tthis._densifyFrac = 0.0;\n\tlet g0 = arguments[0], g1 = arguments[1];\n\tthis._g0 = g0;\n\tthis._g1 = g1;\n}\nextend(DiscreteHausdorffDistance.prototype, {\n\tgetCoordinates: function () {\n\t\treturn this._ptDist.getCoordinates();\n\t},\n\tsetDensifyFraction: function (densifyFrac) {\n\t\tif (densifyFrac > 1.0 || densifyFrac <= 0.0) throw new IllegalArgumentException(\"Fraction is not in range (0.0 - 1.0]\");\n\t\tthis._densifyFrac = densifyFrac;\n\t},\n\tcompute: function (g0, g1) {\n\t\tthis.computeOrientedDistance(g0, g1, this._ptDist);\n\t\tthis.computeOrientedDistance(g1, g0, this._ptDist);\n\t},\n\tdistance: function () {\n\t\tthis.compute(this._g0, this._g1);\n\t\treturn this._ptDist.getDistance();\n\t},\n\tcomputeOrientedDistance: function (discreteGeom, geom, ptDist) {\n\t\tvar distFilter = new MaxPointDistanceFilter(geom);\n\t\tdiscreteGeom.apply(distFilter);\n\t\tptDist.setMaximum(distFilter.getMaxPointDistance());\n\t\tif (this._densifyFrac > 0) {\n\t\t\tvar fracFilter = new MaxDensifiedByFractionDistanceFilter(geom, this._densifyFrac);\n\t\t\tdiscreteGeom.apply(fracFilter);\n\t\t\tptDist.setMaximum(fracFilter.getMaxPointDistance());\n\t\t}\n\t},\n\torientedDistance: function () {\n\t\tthis.computeOrientedDistance(this._g0, this._g1, this._ptDist);\n\t\treturn this._ptDist.getDistance();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DiscreteHausdorffDistance;\n\t}\n});\nDiscreteHausdorffDistance.distance = function () {\n\tif (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tvar dist = new DiscreteHausdorffDistance(g0, g1);\n\t\treturn dist.distance();\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], densifyFrac = arguments[2];\n\t\tvar dist = new DiscreteHausdorffDistance(g0, g1);\n\t\tdist.setDensifyFraction(densifyFrac);\n\t\treturn dist.distance();\n\t}\n};\nfunction MaxPointDistanceFilter() {\n\tthis._maxPtDist = new PointPairDistance();\n\tthis._minPtDist = new PointPairDistance();\n\tthis._euclideanDist = new DistanceToPoint();\n\tthis._geom = null;\n\tlet geom = arguments[0];\n\tthis._geom = geom;\n}\nextend(MaxPointDistanceFilter.prototype, {\n\tfilter: function (pt) {\n\t\tthis._minPtDist.initialize();\n\t\tDistanceToPoint.computeDistance(this._geom, pt, this._minPtDist);\n\t\tthis._maxPtDist.setMaximum(this._minPtDist);\n\t},\n\tgetMaxPointDistance: function () {\n\t\treturn this._maxPtDist;\n\t},\n\tinterfaces_: function () {\n\t\treturn [CoordinateFilter];\n\t},\n\tgetClass: function () {\n\t\treturn MaxPointDistanceFilter;\n\t}\n});\nfunction MaxDensifiedByFractionDistanceFilter() {\n\tthis._maxPtDist = new PointPairDistance();\n\tthis._minPtDist = new PointPairDistance();\n\tthis._geom = null;\n\tthis._numSubSegs = 0;\n\tlet geom = arguments[0], fraction = arguments[1];\n\tthis._geom = geom;\n\tthis._numSubSegs = Math.trunc(Math.round(1.0 / fraction));\n}\nextend(MaxDensifiedByFractionDistanceFilter.prototype, {\n\tfilter: function (seq, index) {\n\t\tif (index === 0) return null;\n\t\tvar p0 = seq.getCoordinate(index - 1);\n\t\tvar p1 = seq.getCoordinate(index);\n\t\tvar delx = (p1.x - p0.x) / this._numSubSegs;\n\t\tvar dely = (p1.y - p0.y) / this._numSubSegs;\n\t\tfor (var i = 0; i < this._numSubSegs; i++) {\n\t\t\tvar x = p0.x + i * delx;\n\t\t\tvar y = p0.y + i * dely;\n\t\t\tvar pt = new Coordinate(x, y);\n\t\t\tthis._minPtDist.initialize();\n\t\t\tDistanceToPoint.computeDistance(this._geom, pt, this._minPtDist);\n\t\t\tthis._maxPtDist.setMaximum(this._minPtDist);\n\t\t}\n\t},\n\tisDone: function () {\n\t\treturn false;\n\t},\n\tisGeometryChanged: function () {\n\t\treturn false;\n\t},\n\tgetMaxPointDistance: function () {\n\t\treturn this._maxPtDist;\n\t},\n\tinterfaces_: function () {\n\t\treturn [CoordinateSequenceFilter];\n\t},\n\tgetClass: function () {\n\t\treturn MaxDensifiedByFractionDistanceFilter;\n\t}\n});\nDiscreteHausdorffDistance.MaxPointDistanceFilter = MaxPointDistanceFilter;\nDiscreteHausdorffDistance.MaxDensifiedByFractionDistanceFilter = MaxDensifiedByFractionDistanceFilter;\n","import extend from '../../../../extend';\nexport default function ItemVisitor() {}\nextend(ItemVisitor.prototype, {\n\tvisitItem: function (item) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ItemVisitor;\n\t}\n});\n","import extend from '../../../../../extend';\nexport default function PointOnGeometryLocator() {}\nextend(PointOnGeometryLocator.prototype, {\n\tlocate: function (p) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PointOnGeometryLocator;\n\t}\n});\n","import WKTWriter from '../../io/WKTWriter';\nimport Coordinate from '../../geom/Coordinate';\nimport Double from '../../../../../java/lang/Double';\nimport extend from '../../../../../extend';\nimport Comparator from '../../../../../java/util/Comparator';\nexport default function IntervalRTreeNode() {\n\tthis._min = Double.POSITIVE_INFINITY;\n\tthis._max = Double.NEGATIVE_INFINITY;\n}\nextend(IntervalRTreeNode.prototype, {\n\tgetMin: function () {\n\t\treturn this._min;\n\t},\n\tintersects: function (queryMin, queryMax) {\n\t\tif (this._min > queryMax || this._max < queryMin) return false;\n\t\treturn true;\n\t},\n\tgetMax: function () {\n\t\treturn this._max;\n\t},\n\ttoString: function () {\n\t\treturn WKTWriter.toLineString(new Coordinate(this._min, 0), new Coordinate(this._max, 0));\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IntervalRTreeNode;\n\t}\n});\nfunction NodeComparator() {}\nextend(NodeComparator.prototype, {\n\tcompare: function (o1, o2) {\n\t\tvar n1 = o1;\n\t\tvar n2 = o2;\n\t\tvar mid1 = (n1._min + n1._max) / 2;\n\t\tvar mid2 = (n2._min + n2._max) / 2;\n\t\tif (mid1 < mid2) return -1;\n\t\tif (mid1 > mid2) return 1;\n\t\treturn 0;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tgetClass: function () {\n\t\treturn NodeComparator;\n\t}\n});\nIntervalRTreeNode.NodeComparator = NodeComparator;\n","import IntervalRTreeNode from './IntervalRTreeNode';\nimport extend from '../../../../../extend';\nimport inherits from '../../../../../inherits';\nexport default function IntervalRTreeLeafNode() {\n\tIntervalRTreeNode.apply(this);\n\tthis._item = null;\n\tlet min = arguments[0], max = arguments[1], item = arguments[2];\n\tthis._min = min;\n\tthis._max = max;\n\tthis._item = item;\n}\ninherits(IntervalRTreeLeafNode, IntervalRTreeNode);\nextend(IntervalRTreeLeafNode.prototype, {\n\tquery: function (queryMin, queryMax, visitor) {\n\t\tif (!this.intersects(queryMin, queryMax)) return null;\n\t\tvisitor.visitItem(this._item);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IntervalRTreeLeafNode;\n\t}\n});\n","import Arrays from './Arrays'\nimport ArrayList from './ArrayList'\n\nconst Collections = {\n reverseOrder: function () {\n return {\n compare (a, b) {\n return b.compareTo(a)\n }\n }\n },\n min: function (l) {\n Collections.sort(l)\n return l.get(0)\n },\n sort: function (l, c) {\n const a = l.toArray()\n if (c) {\n Arrays.sort(a, c)\n } else {\n Arrays.sort(a)\n }\n const i = l.iterator()\n for (let pos = 0, alen = a.length; pos < alen; pos++) {\n i.next()\n i.set(a[pos])\n }\n },\n singletonList: function (o) {\n const arrayList = new ArrayList()\n arrayList.add(o)\n return arrayList\n }\n}\n\nexport default Collections\n","import IntervalRTreeNode from './IntervalRTreeNode';\nimport extend from '../../../../../extend';\nimport inherits from '../../../../../inherits';\nexport default function IntervalRTreeBranchNode() {\n\tIntervalRTreeNode.apply(this);\n\tthis._node1 = null;\n\tthis._node2 = null;\n\tlet n1 = arguments[0], n2 = arguments[1];\n\tthis._node1 = n1;\n\tthis._node2 = n2;\n\tthis.buildExtent(this._node1, this._node2);\n}\ninherits(IntervalRTreeBranchNode, IntervalRTreeNode);\nextend(IntervalRTreeBranchNode.prototype, {\n\tbuildExtent: function (n1, n2) {\n\t\tthis._min = Math.min(n1._min, n2._min);\n\t\tthis._max = Math.max(n1._max, n2._max);\n\t},\n\tquery: function (queryMin, queryMax, visitor) {\n\t\tif (!this.intersects(queryMin, queryMax)) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this._node1 !== null) this._node1.query(queryMin, queryMax, visitor);\n\t\tif (this._node2 !== null) this._node2.query(queryMin, queryMax, visitor);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IntervalRTreeBranchNode;\n\t}\n});\n","import WKTWriter from '../../io/WKTWriter';\nimport Coordinate from '../../geom/Coordinate';\nimport IntervalRTreeLeafNode from './IntervalRTreeLeafNode';\nimport IntervalRTreeNode from './IntervalRTreeNode';\nimport extend from '../../../../../extend';\nimport Collections from '../../../../../java/util/Collections';\nimport System from '../../../../../java/lang/System';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport IntervalRTreeBranchNode from './IntervalRTreeBranchNode';\nexport default function SortedPackedIntervalRTree() {\n\tthis._leaves = new ArrayList();\n\tthis._root = null;\n\tthis._level = 0;\n}\nextend(SortedPackedIntervalRTree.prototype, {\n\tbuildTree: function () {\n\t\tCollections.sort(this._leaves, new IntervalRTreeNode.NodeComparator());\n\t\tvar src = this._leaves;\n\t\tvar temp = null;\n\t\tvar dest = new ArrayList();\n\t\twhile (true) {\n\t\t\tthis.buildLevel(src, dest);\n\t\t\tif (dest.size() === 1) return dest.get(0);\n\t\t\ttemp = src;\n\t\t\tsrc = dest;\n\t\t\tdest = temp;\n\t\t}\n\t},\n\tinsert: function (min, max, item) {\n\t\tif (this._root !== null) throw new IllegalStateException(\"Index cannot be added to once it has been queried\");\n\t\tthis._leaves.add(new IntervalRTreeLeafNode(min, max, item));\n\t},\n\tquery: function (min, max, visitor) {\n\t\tthis.init();\n\t\tthis._root.query(min, max, visitor);\n\t},\n\tbuildRoot: function () {\n\t\tif (this._root !== null) return null;\n\t\tthis._root = this.buildTree();\n\t},\n\tprintNode: function (node) {\n\t\tSystem.out.println(WKTWriter.toLineString(new Coordinate(node._min, this._level), new Coordinate(node._max, this._level)));\n\t},\n\tinit: function () {\n\t\tif (this._root !== null) return null;\n\t\tthis.buildRoot();\n\t},\n\tbuildLevel: function (src, dest) {\n\t\tthis._level++;\n\t\tdest.clear();\n\t\tfor (var i = 0; i < src.size(); i += 2) {\n\t\t\tvar n1 = src.get(i);\n\t\t\tvar n2 = i + 1 < src.size() ? src.get(i) : null;\n\t\t\tif (n2 === null) {\n\t\t\t\tdest.add(n1);\n\t\t\t} else {\n\t\t\t\tvar node = new IntervalRTreeBranchNode(src.get(i), src.get(i + 1));\n\t\t\t\tdest.add(node);\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SortedPackedIntervalRTree;\n\t}\n});\n","import LineString from '../LineString';\nimport Geometry from '../Geometry';\nimport hasInterface from '../../../../../hasInterface';\nimport Collection from '../../../../../java/util/Collection';\nimport LinearRing from '../LinearRing';\nimport extend from '../../../../../extend';\nimport GeometryComponentFilter from '../GeometryComponentFilter';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function LinearComponentExtracter() {\n\tthis._lines = null;\n\tthis._isForcedToLineString = false;\n\tif (arguments.length === 1) {\n\t\tlet lines = arguments[0];\n\t\tthis._lines = lines;\n\t} else if (arguments.length === 2) {\n\t\tlet lines = arguments[0], isForcedToLineString = arguments[1];\n\t\tthis._lines = lines;\n\t\tthis._isForcedToLineString = isForcedToLineString;\n\t}\n}\nextend(LinearComponentExtracter.prototype, {\n\tfilter: function (geom) {\n\t\tif (this._isForcedToLineString && geom instanceof LinearRing) {\n\t\t\tvar line = geom.getFactory().createLineString(geom.getCoordinateSequence());\n\t\t\tthis._lines.add(line);\n\t\t\treturn null;\n\t\t}\n\t\tif (geom instanceof LineString) this._lines.add(geom);\n\t},\n\tsetForceToLineString: function (isForcedToLineString) {\n\t\tthis._isForcedToLineString = isForcedToLineString;\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryComponentFilter];\n\t},\n\tgetClass: function () {\n\t\treturn LinearComponentExtracter;\n\t}\n});\nLinearComponentExtracter.getGeometry = function () {\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\treturn geom.getFactory().buildGeometry(LinearComponentExtracter.getLines(geom));\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], forceToLineString = arguments[1];\n\t\treturn geom.getFactory().buildGeometry(LinearComponentExtracter.getLines(geom, forceToLineString));\n\t}\n};\nLinearComponentExtracter.getLines = function () {\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\treturn LinearComponentExtracter.getLines(geom, false);\n\t} else if (arguments.length === 2) {\n\t\tif (hasInterface(arguments[0], Collection) && hasInterface(arguments[1], Collection)) {\n\t\t\tlet geoms = arguments[0], lines = arguments[1];\n\t\t\tfor (var i = geoms.iterator(); i.hasNext(); ) {\n\t\t\t\tvar g = i.next();\n\t\t\t\tLinearComponentExtracter.getLines(g, lines);\n\t\t\t}\n\t\t\treturn lines;\n\t\t} else if (arguments[0] instanceof Geometry && typeof arguments[1] === \"boolean\") {\n\t\t\tlet geom = arguments[0], forceToLineString = arguments[1];\n\t\t\tvar lines = new ArrayList();\n\t\t\tgeom.apply(new LinearComponentExtracter(lines, forceToLineString));\n\t\t\treturn lines;\n\t\t} else if (arguments[0] instanceof Geometry && hasInterface(arguments[1], Collection)) {\n\t\t\tlet geom = arguments[0], lines = arguments[1];\n\t\t\tif (geom instanceof LineString) {\n\t\t\t\tlines.add(geom);\n\t\t\t} else {\n\t\t\t\tgeom.apply(new LinearComponentExtracter(lines));\n\t\t\t}\n\t\t\treturn lines;\n\t\t}\n\t} else if (arguments.length === 3) {\n\t\tif (typeof arguments[2] === \"boolean\" && (hasInterface(arguments[0], Collection) && hasInterface(arguments[1], Collection))) {\n\t\t\tlet geoms = arguments[0], lines = arguments[1], forceToLineString = arguments[2];\n\t\t\tfor (var i = geoms.iterator(); i.hasNext(); ) {\n\t\t\t\tvar g = i.next();\n\t\t\t\tLinearComponentExtracter.getLines(g, lines, forceToLineString);\n\t\t\t}\n\t\t\treturn lines;\n\t\t} else if (typeof arguments[2] === \"boolean\" && (arguments[0] instanceof Geometry && hasInterface(arguments[1], Collection))) {\n\t\t\tlet geom = arguments[0], lines = arguments[1], forceToLineString = arguments[2];\n\t\t\tgeom.apply(new LinearComponentExtracter(lines, forceToLineString));\n\t\t\treturn lines;\n\t\t}\n\t}\n};\n","import ItemVisitor from './ItemVisitor';\nimport extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function ArrayListVisitor() {\n\tthis._items = new ArrayList();\n}\nextend(ArrayListVisitor.prototype, {\n\tvisitItem: function (item) {\n\t\tthis._items.add(item);\n\t},\n\tgetItems: function () {\n\t\treturn this._items;\n\t},\n\tinterfaces_: function () {\n\t\treturn [ItemVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn ArrayListVisitor;\n\t}\n});\n","import Location from '../geom/Location';\nimport hasInterface from '../../../../hasInterface';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport Orientation from './Orientation';\nimport CoordinateSequence from '../geom/CoordinateSequence';\nexport default function RayCrossingCounter() {\n\tthis._p = null;\n\tthis._crossingCount = 0;\n\tthis._isPointOnSegment = false;\n\tlet p = arguments[0];\n\tthis._p = p;\n}\nextend(RayCrossingCounter.prototype, {\n\tcountSegment: function (p1, p2) {\n\t\tif (p1.x < this._p.x && p2.x < this._p.x) return null;\n\t\tif (this._p.x === p2.x && this._p.y === p2.y) {\n\t\t\tthis._isPointOnSegment = true;\n\t\t\treturn null;\n\t\t}\n\t\tif (p1.y === this._p.y && p2.y === this._p.y) {\n\t\t\tvar minx = p1.x;\n\t\t\tvar maxx = p2.x;\n\t\t\tif (minx > maxx) {\n\t\t\t\tminx = p2.x;\n\t\t\t\tmaxx = p1.x;\n\t\t\t}\n\t\t\tif (this._p.x >= minx && this._p.x <= maxx) {\n\t\t\t\tthis._isPointOnSegment = true;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\tif (p1.y > this._p.y && p2.y <= this._p.y || p2.y > this._p.y && p1.y <= this._p.y) {\n\t\t\tvar orient = Orientation.index(p1, p2, this._p);\n\t\t\tif (orient === Orientation.COLLINEAR) {\n\t\t\t\tthis._isPointOnSegment = true;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (p2.y < p1.y) {\n\t\t\t\torient = -orient;\n\t\t\t}\n\t\t\tif (orient === Orientation.LEFT) {\n\t\t\t\tthis._crossingCount++;\n\t\t\t}\n\t\t}\n\t},\n\tisPointInPolygon: function () {\n\t\treturn this.getLocation() !== Location.EXTERIOR;\n\t},\n\tgetLocation: function () {\n\t\tif (this._isPointOnSegment) return Location.BOUNDARY;\n\t\tif (this._crossingCount % 2 === 1) {\n\t\t\treturn Location.INTERIOR;\n\t\t}\n\t\treturn Location.EXTERIOR;\n\t},\n\tisOnSegment: function () {\n\t\treturn this._isPointOnSegment;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RayCrossingCounter;\n\t}\n});\nRayCrossingCounter.locatePointInRing = function () {\n\tif (arguments[0] instanceof Coordinate && hasInterface(arguments[1], CoordinateSequence)) {\n\t\tlet p = arguments[0], ring = arguments[1];\n\t\tvar counter = new RayCrossingCounter(p);\n\t\tvar p1 = new Coordinate();\n\t\tvar p2 = new Coordinate();\n\t\tfor (var i = 1; i < ring.size(); i++) {\n\t\t\tring.getCoordinate(i, p1);\n\t\t\tring.getCoordinate(i - 1, p2);\n\t\t\tcounter.countSegment(p1, p2);\n\t\t\tif (counter.isOnSegment()) return counter.getLocation();\n\t\t}\n\t\treturn counter.getLocation();\n\t} else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Array) {\n\t\tlet p = arguments[0], ring = arguments[1];\n\t\tvar counter = new RayCrossingCounter(p);\n\t\tfor (var i = 1; i < ring.length; i++) {\n\t\t\tvar p1 = ring[i];\n\t\t\tvar p2 = ring[i - 1];\n\t\t\tcounter.countSegment(p1, p2);\n\t\t\tif (counter.isOnSegment()) return counter.getLocation();\n\t\t}\n\t\treturn counter.getLocation();\n\t}\n};\n","import hasInterface from '../../../../../hasInterface';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport ItemVisitor from '../../index/ItemVisitor';\nimport PointOnGeometryLocator from './PointOnGeometryLocator';\nimport LinearRing from '../../geom/LinearRing';\nimport extend from '../../../../../extend';\nimport SortedPackedIntervalRTree from '../../index/intervalrtree/SortedPackedIntervalRTree';\nimport LineSegment from '../../geom/LineSegment';\nimport Polygonal from '../../geom/Polygonal';\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter';\nimport ArrayListVisitor from '../../index/ArrayListVisitor';\nimport RayCrossingCounter from '../RayCrossingCounter';\nexport default function IndexedPointInAreaLocator() {\n\tthis._index = null;\n\tlet g = arguments[0];\n\tif (!(hasInterface(g, Polygonal) || g instanceof LinearRing)) throw new IllegalArgumentException(\"Argument must be Polygonal or LinearRing\");\n\tthis._index = new IntervalIndexedGeometry(g);\n}\nextend(IndexedPointInAreaLocator.prototype, {\n\tlocate: function (p) {\n\t\tvar rcc = new RayCrossingCounter(p);\n\t\tvar visitor = new SegmentVisitor(rcc);\n\t\tthis._index.query(p.y, p.y, visitor);\n\t\treturn rcc.getLocation();\n\t},\n\tinterfaces_: function () {\n\t\treturn [PointOnGeometryLocator];\n\t},\n\tgetClass: function () {\n\t\treturn IndexedPointInAreaLocator;\n\t}\n});\nfunction SegmentVisitor() {\n\tthis._counter = null;\n\tlet counter = arguments[0];\n\tthis._counter = counter;\n}\nextend(SegmentVisitor.prototype, {\n\tvisitItem: function (item) {\n\t\tvar seg = item;\n\t\tthis._counter.countSegment(seg.getCoordinate(0), seg.getCoordinate(1));\n\t},\n\tinterfaces_: function () {\n\t\treturn [ItemVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentVisitor;\n\t}\n});\nfunction IntervalIndexedGeometry() {\n\tthis._index = new SortedPackedIntervalRTree();\n\tlet geom = arguments[0];\n\tthis.init(geom);\n}\nextend(IntervalIndexedGeometry.prototype, {\n\tinit: function (geom) {\n\t\tvar lines = LinearComponentExtracter.getLines(geom);\n\t\tfor (var i = lines.iterator(); i.hasNext(); ) {\n\t\t\tvar line = i.next();\n\t\t\tvar pts = line.getCoordinates();\n\t\t\tthis.addLine(pts);\n\t\t}\n\t},\n\taddLine: function (pts) {\n\t\tfor (var i = 1; i < pts.length; i++) {\n\t\t\tvar seg = new LineSegment(pts[i - 1], pts[i]);\n\t\t\tvar min = Math.min(seg.p0.y, seg.p1.y);\n\t\t\tvar max = Math.max(seg.p0.y, seg.p1.y);\n\t\t\tthis._index.insert(min, max, seg);\n\t\t}\n\t},\n\tquery: function () {\n\t\tif (arguments.length === 2) {\n\t\t\tlet min = arguments[0], max = arguments[1];\n\t\t\tvar visitor = new ArrayListVisitor();\n\t\t\tthis._index.query(min, max, visitor);\n\t\t\treturn visitor.getItems();\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet min = arguments[0], max = arguments[1], visitor = arguments[2];\n\t\t\tthis._index.query(min, max, visitor);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IntervalIndexedGeometry;\n\t}\n});\nIndexedPointInAreaLocator.SegmentVisitor = SegmentVisitor;\nIndexedPointInAreaLocator.IntervalIndexedGeometry = IntervalIndexedGeometry;\n","import Location from '../geom/Location';\nimport hasInterface from '../../../../hasInterface';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport CoordinateSequence from '../geom/CoordinateSequence';\nimport RobustLineIntersector from './RobustLineIntersector';\nimport RayCrossingCounter from './RayCrossingCounter';\nexport default function PointLocation() {}\nextend(PointLocation.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PointLocation;\n\t}\n});\nPointLocation.isOnLine = function () {\n\tif (arguments[0] instanceof Coordinate && hasInterface(arguments[1], CoordinateSequence)) {\n\t\tlet p = arguments[0], line = arguments[1];\n\t\tvar lineIntersector = new RobustLineIntersector();\n\t\tvar p0 = new Coordinate();\n\t\tvar p1 = new Coordinate();\n\t\tvar n = line.size();\n\t\tfor (var i = 1; i < n; i++) {\n\t\t\tline.getCoordinate(i - 1, p0);\n\t\t\tline.getCoordinate(i, p1);\n\t\t\tlineIntersector.computeIntersection(p, p0, p1);\n\t\t\tif (lineIntersector.hasIntersection()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t} else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Array) {\n\t\tlet p = arguments[0], line = arguments[1];\n\t\tvar lineIntersector = new RobustLineIntersector();\n\t\tfor (var i = 1; i < line.length; i++) {\n\t\t\tvar p0 = line[i - 1];\n\t\t\tvar p1 = line[i];\n\t\t\tlineIntersector.computeIntersection(p, p0, p1);\n\t\t\tif (lineIntersector.hasIntersection()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n};\nPointLocation.locateInRing = function (p, ring) {\n\treturn RayCrossingCounter.locatePointInRing(p, ring);\n};\nPointLocation.isInRing = function (p, ring) {\n\treturn PointLocation.locateInRing(p, ring) !== Location.EXTERIOR;\n};\n","import Iterator from '../../../../java/util/Iterator';\nimport NoSuchElementException from '../../../../java/util/NoSuchElementException';\nimport extend from '../../../../extend';\nimport GeometryCollection from './GeometryCollection';\nexport default function GeometryCollectionIterator() {\n\tthis._parent = null;\n\tthis._atStart = null;\n\tthis._max = null;\n\tthis._index = null;\n\tthis._subcollectionIterator = null;\n\tlet parent = arguments[0];\n\tthis._parent = parent;\n\tthis._atStart = true;\n\tthis._index = 0;\n\tthis._max = parent.getNumGeometries();\n}\nextend(GeometryCollectionIterator.prototype, {\n\tnext: function () {\n\t\tif (this._atStart) {\n\t\t\tthis._atStart = false;\n\t\t\tif (GeometryCollectionIterator.isAtomic(this._parent)) this._index++;\n\t\t\treturn this._parent;\n\t\t}\n\t\tif (this._subcollectionIterator !== null) {\n\t\t\tif (this._subcollectionIterator.hasNext()) {\n\t\t\t\treturn this._subcollectionIterator.next();\n\t\t\t} else {\n\t\t\t\tthis._subcollectionIterator = null;\n\t\t\t}\n\t\t}\n\t\tif (this._index >= this._max) {\n\t\t\tthrow new NoSuchElementException();\n\t\t}\n\t\tvar obj = this._parent.getGeometryN(this._index++);\n\t\tif (obj instanceof GeometryCollection) {\n\t\t\tthis._subcollectionIterator = new GeometryCollectionIterator(obj);\n\t\t\treturn this._subcollectionIterator.next();\n\t\t}\n\t\treturn obj;\n\t},\n\tremove: function () {\n\t\tthrow new UnsupportedOperationException(this.getClass().getName());\n\t},\n\thasNext: function () {\n\t\tif (this._atStart) {\n\t\t\treturn true;\n\t\t}\n\t\tif (this._subcollectionIterator !== null) {\n\t\t\tif (this._subcollectionIterator.hasNext()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tthis._subcollectionIterator = null;\n\t\t}\n\t\tif (this._index >= this._max) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Iterator];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryCollectionIterator;\n\t}\n});\nGeometryCollectionIterator.isAtomic = function (geom) {\n\treturn !(geom instanceof GeometryCollection);\n};\n","import Location from '../../geom/Location';\nimport Polygon from '../../geom/Polygon';\nimport PointLocation from '../PointLocation';\nimport PointOnGeometryLocator from './PointOnGeometryLocator';\nimport extend from '../../../../../extend';\nimport GeometryCollectionIterator from '../../geom/GeometryCollectionIterator';\nimport GeometryCollection from '../../geom/GeometryCollection';\nexport default function SimplePointInAreaLocator() {\n\tthis._geom = null;\n\tlet geom = arguments[0];\n\tthis._geom = geom;\n}\nextend(SimplePointInAreaLocator.prototype, {\n\tlocate: function (p) {\n\t\treturn SimplePointInAreaLocator.locate(p, this._geom);\n\t},\n\tinterfaces_: function () {\n\t\treturn [PointOnGeometryLocator];\n\t},\n\tgetClass: function () {\n\t\treturn SimplePointInAreaLocator;\n\t}\n});\nSimplePointInAreaLocator.locatePointInPolygon = function (p, poly) {\n\tif (poly.isEmpty()) return Location.EXTERIOR;\n\tvar shell = poly.getExteriorRing();\n\tvar shellLoc = SimplePointInAreaLocator.locatePointInRing(p, shell);\n\tif (shellLoc !== Location.INTERIOR) return shellLoc;\n\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\tvar hole = poly.getInteriorRingN(i);\n\t\tvar holeLoc = SimplePointInAreaLocator.locatePointInRing(p, hole);\n\t\tif (holeLoc === Location.BOUNDARY) return Location.BOUNDARY;\n\t\tif (holeLoc === Location.INTERIOR) return Location.EXTERIOR;\n\t}\n\treturn Location.INTERIOR;\n};\nSimplePointInAreaLocator.locatePointInRing = function (p, ring) {\n\tif (!ring.getEnvelopeInternal().intersects(p)) return Location.EXTERIOR;\n\treturn PointLocation.locateInRing(p, ring.getCoordinates());\n};\nSimplePointInAreaLocator.containsPointInPolygon = function (p, poly) {\n\treturn Location.EXTERIOR !== SimplePointInAreaLocator.locatePointInPolygon(p, poly);\n};\nSimplePointInAreaLocator.locateInGeometry = function (p, geom) {\n\tif (geom instanceof Polygon) {\n\t\treturn SimplePointInAreaLocator.locatePointInPolygon(p, geom);\n\t} else if (geom instanceof GeometryCollection) {\n\t\tvar geomi = new GeometryCollectionIterator(geom);\n\t\twhile (geomi.hasNext()) {\n\t\t\tvar g2 = geomi.next();\n\t\t\tif (g2 !== geom) {\n\t\t\t\tvar loc = SimplePointInAreaLocator.locateInGeometry(p, g2);\n\t\t\t\tif (loc !== Location.EXTERIOR) return loc;\n\t\t\t}\n\t\t}\n\t}\n\treturn Location.EXTERIOR;\n};\nSimplePointInAreaLocator.locate = function (p, geom) {\n\tif (geom.isEmpty()) return Location.EXTERIOR;\n\treturn SimplePointInAreaLocator.locateInGeometry(p, geom);\n};\n","import extend from '../../../../../extend';\nexport default function SimilarityMeasure() {}\nextend(SimilarityMeasure.prototype, {\n\tmeasure: function (g1, g2) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SimilarityMeasure;\n\t}\n});\n","import SimilarityMeasure from './SimilarityMeasure';\nimport extend from '../../../../../extend';\nexport default function AreaSimilarityMeasure() {}\nextend(AreaSimilarityMeasure.prototype, {\n\tmeasure: function (g1, g2) {\n\t\tvar areaInt = g1.intersection(g2).getArea();\n\t\tvar areaUnion = g1.union(g2).getArea();\n\t\treturn areaInt / areaUnion;\n\t},\n\tinterfaces_: function () {\n\t\treturn [SimilarityMeasure];\n\t},\n\tgetClass: function () {\n\t\treturn AreaSimilarityMeasure;\n\t}\n});\n","import SimilarityMeasure from './SimilarityMeasure';\nimport extend from '../../../../../extend';\nimport Envelope from '../../geom/Envelope';\nimport DiscreteHausdorffDistance from '../distance/DiscreteHausdorffDistance';\nexport default function HausdorffSimilarityMeasure() {}\nextend(HausdorffSimilarityMeasure.prototype, {\n\tmeasure: function (g1, g2) {\n\t\tvar distance = DiscreteHausdorffDistance.distance(g1, g2, HausdorffSimilarityMeasure.DENSIFY_FRACTION);\n\t\tvar env = new Envelope(g1.getEnvelopeInternal());\n\t\tenv.expandToInclude(g2.getEnvelopeInternal());\n\t\tvar envSize = HausdorffSimilarityMeasure.diagonalSize(env);\n\t\tvar measure = 1 - distance / envSize;\n\t\treturn measure;\n\t},\n\tinterfaces_: function () {\n\t\treturn [SimilarityMeasure];\n\t},\n\tgetClass: function () {\n\t\treturn HausdorffSimilarityMeasure;\n\t}\n});\nHausdorffSimilarityMeasure.diagonalSize = function (env) {\n\tif (env.isNull()) return 0.0;\n\tvar width = env.getWidth();\n\tvar hgt = env.getHeight();\n\treturn Math.sqrt(width * width + hgt * hgt);\n};\nHausdorffSimilarityMeasure.DENSIFY_FRACTION = 0.25;\n","import extend from '../../../../../extend';\nexport default function SimilarityMeasureCombiner() {}\nextend(SimilarityMeasureCombiner.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SimilarityMeasureCombiner;\n\t}\n});\nSimilarityMeasureCombiner.combine = function (measure1, measure2) {\n\treturn Math.min(measure1, measure2);\n};\n","import LineString from '../geom/LineString';\nimport Geometry from '../geom/Geometry';\nimport Coordinate from '../geom/Coordinate';\nimport Point from '../geom/Point';\nimport Polygon from '../geom/Polygon';\nimport extend from '../../../../extend';\nimport Orientation from './Orientation';\nimport GeometryCollection from '../geom/GeometryCollection';\nexport default function Centroid() {\n\tthis._areaBasePt = null;\n\tthis._triangleCent3 = new Coordinate();\n\tthis._areasum2 = 0;\n\tthis._cg3 = new Coordinate();\n\tthis._lineCentSum = new Coordinate();\n\tthis._totalLength = 0.0;\n\tthis._ptCount = 0;\n\tthis._ptCentSum = new Coordinate();\n\tlet geom = arguments[0];\n\tthis._areaBasePt = null;\n\tthis.add(geom);\n}\nextend(Centroid.prototype, {\n\tsetAreaBasePoint: function (basePt) {\n\t\tthis._areaBasePt = basePt;\n\t},\n\taddPoint: function (pt) {\n\t\tthis._ptCount += 1;\n\t\tthis._ptCentSum.x += pt.x;\n\t\tthis._ptCentSum.y += pt.y;\n\t},\n\taddLineSegments: function (pts) {\n\t\tvar lineLen = 0.0;\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tvar segmentLen = pts[i].distance(pts[i + 1]);\n\t\t\tif (segmentLen === 0.0) continue;\n\t\t\tlineLen += segmentLen;\n\t\t\tvar midx = (pts[i].x + pts[i + 1].x) / 2;\n\t\t\tthis._lineCentSum.x += segmentLen * midx;\n\t\t\tvar midy = (pts[i].y + pts[i + 1].y) / 2;\n\t\t\tthis._lineCentSum.y += segmentLen * midy;\n\t\t}\n\t\tthis._totalLength += lineLen;\n\t\tif (lineLen === 0.0 && pts.length > 0) this.addPoint(pts[0]);\n\t},\n\taddHole: function (pts) {\n\t\tvar isPositiveArea = Orientation.isCCW(pts);\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tthis.addTriangle(this._areaBasePt, pts[i], pts[i + 1], isPositiveArea);\n\t\t}\n\t\tthis.addLineSegments(pts);\n\t},\n\tgetCentroid: function () {\n\t\tvar cent = new Coordinate();\n\t\tif (Math.abs(this._areasum2) > 0.0) {\n\t\t\tcent.x = this._cg3.x / 3 / this._areasum2;\n\t\t\tcent.y = this._cg3.y / 3 / this._areasum2;\n\t\t} else if (this._totalLength > 0.0) {\n\t\t\tcent.x = this._lineCentSum.x / this._totalLength;\n\t\t\tcent.y = this._lineCentSum.y / this._totalLength;\n\t\t} else if (this._ptCount > 0) {\n\t\t\tcent.x = this._ptCentSum.x / this._ptCount;\n\t\t\tcent.y = this._ptCentSum.y / this._ptCount;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\treturn cent;\n\t},\n\taddShell: function (pts) {\n\t\tif (pts.length > 0) this.setAreaBasePoint(pts[0]);\n\t\tvar isPositiveArea = !Orientation.isCCW(pts);\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tthis.addTriangle(this._areaBasePt, pts[i], pts[i + 1], isPositiveArea);\n\t\t}\n\t\tthis.addLineSegments(pts);\n\t},\n\taddTriangle: function (p0, p1, p2, isPositiveArea) {\n\t\tvar sign = isPositiveArea ? 1.0 : -1.0;\n\t\tCentroid.centroid3(p0, p1, p2, this._triangleCent3);\n\t\tvar area2 = Centroid.area2(p0, p1, p2);\n\t\tthis._cg3.x += sign * area2 * this._triangleCent3.x;\n\t\tthis._cg3.y += sign * area2 * this._triangleCent3.y;\n\t\tthis._areasum2 += sign * area2;\n\t},\n\tadd: function () {\n\t\tif (arguments[0] instanceof Polygon) {\n\t\t\tlet poly = arguments[0];\n\t\t\tthis.addShell(poly.getExteriorRing().getCoordinates());\n\t\t\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\t\t\tthis.addHole(poly.getInteriorRingN(i).getCoordinates());\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tif (geom.isEmpty()) return null;\n\t\t\tif (geom instanceof Point) {\n\t\t\t\tthis.addPoint(geom.getCoordinate());\n\t\t\t} else if (geom instanceof LineString) {\n\t\t\t\tthis.addLineSegments(geom.getCoordinates());\n\t\t\t} else if (geom instanceof Polygon) {\n\t\t\t\tvar poly = geom;\n\t\t\t\tthis.add(poly);\n\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\tvar gc = geom;\n\t\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\t\tthis.add(gc.getGeometryN(i));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Centroid;\n\t}\n});\nCentroid.area2 = function (p1, p2, p3) {\n\treturn (p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y);\n};\nCentroid.centroid3 = function (p1, p2, p3, c) {\n\tc.x = p1.x + p2.x + p3.x;\n\tc.y = p1.y + p2.y + p3.y;\n\treturn null;\n};\nCentroid.getCentroid = function (geom) {\n\tvar cent = new Centroid(geom);\n\treturn cent.getCentroid();\n};\n","import Location from '../geom/Location';\nimport hasInterface from '../../../../hasInterface';\nimport Coordinate from '../geom/Coordinate';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport MathUtil from '../math/MathUtil';\nimport CGAlgorithmsDD from './CGAlgorithmsDD';\nimport CoordinateSequence from '../geom/CoordinateSequence';\nimport RobustLineIntersector from './RobustLineIntersector';\nimport Envelope from '../geom/Envelope';\nimport RayCrossingCounter from './RayCrossingCounter';\nexport default function CGAlgorithms() {}\nextend(CGAlgorithms.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CGAlgorithms;\n\t}\n});\nCGAlgorithms.orientationIndex = function (p1, p2, q) {\n\treturn CGAlgorithmsDD.orientationIndex(p1, p2, q);\n};\nCGAlgorithms.signedArea = function () {\n\tif (arguments[0] instanceof Array) {\n\t\tlet ring = arguments[0];\n\t\tif (ring.length < 3) return 0.0;\n\t\tvar sum = 0.0;\n\t\tvar x0 = ring[0].x;\n\t\tfor (var i = 1; i < ring.length - 1; i++) {\n\t\t\tvar x = ring[i].x - x0;\n\t\t\tvar y1 = ring[i + 1].y;\n\t\t\tvar y2 = ring[i - 1].y;\n\t\t\tsum += x * (y2 - y1);\n\t\t}\n\t\treturn sum / 2.0;\n\t} else if (hasInterface(arguments[0], CoordinateSequence)) {\n\t\tlet ring = arguments[0];\n\t\tvar n = ring.size();\n\t\tif (n < 3) return 0.0;\n\t\tvar p0 = new Coordinate();\n\t\tvar p1 = new Coordinate();\n\t\tvar p2 = new Coordinate();\n\t\tring.getCoordinate(0, p1);\n\t\tring.getCoordinate(1, p2);\n\t\tvar x0 = p1.x;\n\t\tp2.x -= x0;\n\t\tvar sum = 0.0;\n\t\tfor (var i = 1; i < n - 1; i++) {\n\t\t\tp0.y = p1.y;\n\t\t\tp1.x = p2.x;\n\t\t\tp1.y = p2.y;\n\t\t\tring.getCoordinate(i + 1, p2);\n\t\t\tp2.x -= x0;\n\t\t\tsum += p1.x * (p0.y - p2.y);\n\t\t}\n\t\treturn sum / 2.0;\n\t}\n};\nCGAlgorithms.distanceLineLine = function (A, B, C, D) {\n\tif (A.equals(B)) return CGAlgorithms.distancePointLine(A, C, D);\n\tif (C.equals(D)) return CGAlgorithms.distancePointLine(D, A, B);\n\tvar noIntersection = false;\n\tif (!Envelope.intersects(A, B, C, D)) {\n\t\tnoIntersection = true;\n\t} else {\n\t\tvar denom = (B.x - A.x) * (D.y - C.y) - (B.y - A.y) * (D.x - C.x);\n\t\tif (denom === 0) {\n\t\t\tnoIntersection = true;\n\t\t} else {\n\t\t\tvar r_num = (A.y - C.y) * (D.x - C.x) - (A.x - C.x) * (D.y - C.y);\n\t\t\tvar s_num = (A.y - C.y) * (B.x - A.x) - (A.x - C.x) * (B.y - A.y);\n\t\t\tvar s = s_num / denom;\n\t\t\tvar r = r_num / denom;\n\t\t\tif (r < 0 || r > 1 || s < 0 || s > 1) {\n\t\t\t\tnoIntersection = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (noIntersection) {\n\t\treturn MathUtil.min(CGAlgorithms.distancePointLine(A, C, D), CGAlgorithms.distancePointLine(B, C, D), CGAlgorithms.distancePointLine(C, A, B), CGAlgorithms.distancePointLine(D, A, B));\n\t}\n\treturn 0.0;\n};\nCGAlgorithms.isPointInRing = function (p, ring) {\n\treturn CGAlgorithms.locatePointInRing(p, ring) !== Location.EXTERIOR;\n};\nCGAlgorithms.computeLength = function (pts) {\n\tvar n = pts.size();\n\tif (n <= 1) return 0.0;\n\tvar len = 0.0;\n\tvar p = new Coordinate();\n\tpts.getCoordinate(0, p);\n\tvar x0 = p.x;\n\tvar y0 = p.y;\n\tfor (var i = 1; i < n; i++) {\n\t\tpts.getCoordinate(i, p);\n\t\tvar x1 = p.x;\n\t\tvar y1 = p.y;\n\t\tvar dx = x1 - x0;\n\t\tvar dy = y1 - y0;\n\t\tlen += Math.sqrt(dx * dx + dy * dy);\n\t\tx0 = x1;\n\t\ty0 = y1;\n\t}\n\treturn len;\n};\nCGAlgorithms.isCCW = function (ring) {\n\tvar nPts = ring.length - 1;\n\tif (nPts < 3) throw new IllegalArgumentException(\"Ring has fewer than 4 points, so orientation cannot be determined\");\n\tvar hiPt = ring[0];\n\tvar hiIndex = 0;\n\tfor (var i = 1; i <= nPts; i++) {\n\t\tvar p = ring[i];\n\t\tif (p.y > hiPt.y) {\n\t\t\thiPt = p;\n\t\t\thiIndex = i;\n\t\t}\n\t}\n\tvar iPrev = hiIndex;\n\tdo {\n\t\tiPrev = iPrev - 1;\n\t\tif (iPrev < 0) iPrev = nPts;\n\t} while (ring[iPrev].equals2D(hiPt) && iPrev !== hiIndex);\n\tvar iNext = hiIndex;\n\tdo {\n\t\tiNext = (iNext + 1) % nPts;\n\t} while (ring[iNext].equals2D(hiPt) && iNext !== hiIndex);\n\tvar prev = ring[iPrev];\n\tvar next = ring[iNext];\n\tif (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next)) return false;\n\tvar disc = CGAlgorithms.computeOrientation(prev, hiPt, next);\n\tvar isCCW = false;\n\tif (disc === 0) {\n\t\tisCCW = prev.x > next.x;\n\t} else {\n\t\tisCCW = disc > 0;\n\t}\n\treturn isCCW;\n};\nCGAlgorithms.locatePointInRing = function (p, ring) {\n\treturn RayCrossingCounter.locatePointInRing(p, ring);\n};\nCGAlgorithms.distancePointLinePerpendicular = function (p, A, B) {\n\tvar len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n\tvar s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2;\n\treturn Math.abs(s) * Math.sqrt(len2);\n};\nCGAlgorithms.computeOrientation = function (p1, p2, q) {\n\treturn CGAlgorithms.orientationIndex(p1, p2, q);\n};\nCGAlgorithms.distancePointLine = function () {\n\tif (arguments.length === 2) {\n\t\tlet p = arguments[0], line = arguments[1];\n\t\tif (line.length === 0) throw new IllegalArgumentException(\"Line array must contain at least one vertex\");\n\t\tvar minDistance = p.distance(line[0]);\n\t\tfor (var i = 0; i < line.length - 1; i++) {\n\t\t\tvar dist = CGAlgorithms.distancePointLine(p, line[i], line[i + 1]);\n\t\t\tif (dist < minDistance) {\n\t\t\t\tminDistance = dist;\n\t\t\t}\n\t\t}\n\t\treturn minDistance;\n\t} else if (arguments.length === 3) {\n\t\tlet p = arguments[0], A = arguments[1], B = arguments[2];\n\t\tif (A.x === B.x && A.y === B.y) return p.distance(A);\n\t\tvar len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n\t\tvar r = ((p.x - A.x) * (B.x - A.x) + (p.y - A.y) * (B.y - A.y)) / len2;\n\t\tif (r <= 0.0) return p.distance(A);\n\t\tif (r >= 1.0) return p.distance(B);\n\t\tvar s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2;\n\t\treturn Math.abs(s) * Math.sqrt(len2);\n\t}\n};\nCGAlgorithms.isOnLine = function (p, pt) {\n\tvar lineIntersector = new RobustLineIntersector();\n\tfor (var i = 1; i < pt.length; i++) {\n\t\tvar p0 = pt[i - 1];\n\t\tvar p1 = pt[i];\n\t\tlineIntersector.computeIntersection(p, p0, p1);\n\t\tif (lineIntersector.hasIntersection()) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\nCGAlgorithms.CLOCKWISE = -1;\nCGAlgorithms.RIGHT = CGAlgorithms.CLOCKWISE;\nCGAlgorithms.COUNTERCLOCKWISE = 1;\nCGAlgorithms.LEFT = CGAlgorithms.COUNTERCLOCKWISE;\nCGAlgorithms.COLLINEAR = 0;\nCGAlgorithms.STRAIGHT = CGAlgorithms.COLLINEAR;\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function EmptyStackException(message) {\n this.message = message || '';\n};\nEmptyStackException.prototype = new Error();\n\n\n/**\n * @type {string}\n */\nEmptyStackException.prototype.name = 'EmptyStackException';\n","import EmptyStackException from './EmptyStackException'\nimport List from './List'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Stack.html\n *\n * @extends {List}\n * @constructor\n * @private\n */\nexport default function Stack() {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n};\nStack.prototype = new List();\n\n\n/**\n * @override\n */\nStack.prototype.add = function(e) {\n this.array_.push(e);\n return true;\n};\n\n\n/**\n * @override\n */\nStack.prototype.get = function(index) {\n if (index < 0 || index >= this.size()) {\n throw new IndexOutOfBoundsException();\n }\n\n return this.array_[index];\n};\n\n\n/**\n * Pushes an item onto the top of this stack.\n * @param {Object} e\n * @return {Object}\n */\nStack.prototype.push = function(e) {\n this.array_.push(e);\n return e;\n};\n\n\n/**\n * Pushes an item onto the top of this stack.\n * @param {Object} e\n * @return {Object}\n */\nStack.prototype.pop = function(e) {\n if (this.array_.length === 0) {\n throw new EmptyStackException();\n }\n\n return this.array_.pop();\n};\n\n\n/**\n * Looks at the object at the top of this stack without removing it from the\n * stack.\n * @return {Object}\n */\nStack.prototype.peek = function() {\n if (this.array_.length === 0) {\n throw new EmptyStackException();\n }\n\n return this.array_[this.array_.length - 1];\n};\n\n\n/**\n * Tests if this stack is empty.\n * @return {boolean} true if and only if this stack contains no items; false\n * otherwise.\n */\nStack.prototype.empty = function() {\n if (this.array_.length === 0) {\n return true;\n } else {\n return false;\n }\n};\n\n\n/**\n * @return {boolean}\n */\nStack.prototype.isEmpty = function() {\n return this.empty();\n};\n\n\n/**\n * Returns the 1-based position where an object is on this stack. If the object\n * o occurs as an item in this stack, this method returns the distance from the\n * top of the stack of the occurrence nearest the top of the stack; the topmost\n * item on the stack is considered to be at distance 1. The equals method is\n * used to compare o to the items in this stack.\n *\n * NOTE: does not currently actually use equals. (=== is used)\n *\n * @param {Object} o\n * @return {number} the 1-based position from the top of the stack where the\n * object is located; the return value -1 indicates that the object is\n * not on the stack.\n */\nStack.prototype.search = function(o) {\n return this.array_.indexOf(o);\n};\n\n\n/**\n * @return {number}\n * @export\n */\nStack.prototype.size = function() {\n return this.array_.length;\n};\n\n\n/**\n * @return {Array}\n */\nStack.prototype.toArray = function() {\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i]);\n }\n\n return array;\n};\n","import TreeSet from '../../../../java/util/TreeSet';\nimport CoordinateFilter from '../geom/CoordinateFilter';\nimport extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function UniqueCoordinateArrayFilter() {\n\tthis.treeSet = new TreeSet();\n\tthis.list = new ArrayList();\n}\nextend(UniqueCoordinateArrayFilter.prototype, {\n\tfilter: function (coord) {\n\t\tif (!this.treeSet.contains(coord)) {\n\t\t\tthis.list.add(coord);\n\t\t\tthis.treeSet.add(coord);\n\t\t}\n\t},\n\tgetCoordinates: function () {\n\t\tvar coordinates = new Array(this.list.size()).fill(null);\n\t\treturn this.list.toArray(coordinates);\n\t},\n\tinterfaces_: function () {\n\t\treturn [CoordinateFilter];\n\t},\n\tgetClass: function () {\n\t\treturn UniqueCoordinateArrayFilter;\n\t}\n});\nUniqueCoordinateArrayFilter.filterCoordinates = function (coords) {\n\tvar filter = new UniqueCoordinateArrayFilter();\n\tfor (var i = 0; i < coords.length; i++) {\n\t\tfilter.filter(coords[i]);\n\t}\n\treturn filter.getCoordinates();\n};\n","import TreeSet from '../../../../java/util/TreeSet';\nimport CoordinateList from '../geom/CoordinateList';\nimport Arrays from '../../../../java/util/Arrays';\nimport PointLocation from './PointLocation';\nimport Stack from '../../../../java/util/Stack';\nimport extend from '../../../../extend';\nimport Orientation from './Orientation';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Comparator from '../../../../java/util/Comparator';\nimport UniqueCoordinateArrayFilter from '../util/UniqueCoordinateArrayFilter';\nimport Assert from '../util/Assert';\nexport default function ConvexHull() {\n\tthis._geomFactory = null;\n\tthis._inputPts = null;\n\tif (arguments.length === 1) {\n\t\tlet geometry = arguments[0];\n\t\tConvexHull.call(this, ConvexHull.extractCoordinates(geometry), geometry.getFactory());\n\t} else if (arguments.length === 2) {\n\t\tlet pts = arguments[0], geomFactory = arguments[1];\n\t\tthis._inputPts = UniqueCoordinateArrayFilter.filterCoordinates(pts);\n\t\tthis._geomFactory = geomFactory;\n\t}\n}\nextend(ConvexHull.prototype, {\n\tpreSort: function (pts) {\n\t\tvar t = null;\n\t\tfor (var i = 1; i < pts.length; i++) {\n\t\t\tif (pts[i].y < pts[0].y || pts[i].y === pts[0].y && pts[i].x < pts[0].x) {\n\t\t\t\tt = pts[0];\n\t\t\t\tpts[0] = pts[i];\n\t\t\t\tpts[i] = t;\n\t\t\t}\n\t\t}\n\t\tArrays.sort(pts, 1, pts.length, new RadialComparator(pts[0]));\n\t\treturn pts;\n\t},\n\tcomputeOctRing: function (inputPts) {\n\t\tvar octPts = this.computeOctPts(inputPts);\n\t\tvar coordList = new CoordinateList();\n\t\tcoordList.add(octPts, false);\n\t\tif (coordList.size() < 3) {\n\t\t\treturn null;\n\t\t}\n\t\tcoordList.closeRing();\n\t\treturn coordList.toCoordinateArray();\n\t},\n\tlineOrPolygon: function (coordinates) {\n\t\tcoordinates = this.cleanRing(coordinates);\n\t\tif (coordinates.length === 3) {\n\t\t\treturn this._geomFactory.createLineString([coordinates[0], coordinates[1]]);\n\t\t}\n\t\tvar linearRing = this._geomFactory.createLinearRing(coordinates);\n\t\treturn this._geomFactory.createPolygon(linearRing);\n\t},\n\tcleanRing: function (original) {\n\t\tAssert.equals(original[0], original[original.length - 1]);\n\t\tvar cleanedRing = new ArrayList();\n\t\tvar previousDistinctCoordinate = null;\n\t\tfor (var i = 0; i <= original.length - 2; i++) {\n\t\t\tvar currentCoordinate = original[i];\n\t\t\tvar nextCoordinate = original[i + 1];\n\t\t\tif (currentCoordinate.equals(nextCoordinate)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (previousDistinctCoordinate !== null && this.isBetween(previousDistinctCoordinate, currentCoordinate, nextCoordinate)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcleanedRing.add(currentCoordinate);\n\t\t\tpreviousDistinctCoordinate = currentCoordinate;\n\t\t}\n\t\tcleanedRing.add(original[original.length - 1]);\n\t\tvar cleanedRingCoordinates = new Array(cleanedRing.size()).fill(null);\n\t\treturn cleanedRing.toArray(cleanedRingCoordinates);\n\t},\n\tisBetween: function (c1, c2, c3) {\n\t\tif (Orientation.index(c1, c2, c3) !== 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (c1.x !== c3.x) {\n\t\t\tif (c1.x <= c2.x && c2.x <= c3.x) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (c3.x <= c2.x && c2.x <= c1.x) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\tif (c1.y !== c3.y) {\n\t\t\tif (c1.y <= c2.y && c2.y <= c3.y) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (c3.y <= c2.y && c2.y <= c1.y) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\treduce: function (inputPts) {\n\t\tvar polyPts = this.computeOctRing(inputPts);\n\t\tif (polyPts === null) return inputPts;\n\t\tvar reducedSet = new TreeSet();\n\t\tfor (var i = 0; i < polyPts.length; i++) {\n\t\t\treducedSet.add(polyPts[i]);\n\t\t}\n\t\tfor (var i = 0; i < inputPts.length; i++) {\n\t\t\tif (!PointLocation.isInRing(inputPts[i], polyPts)) {\n\t\t\t\treducedSet.add(inputPts[i]);\n\t\t\t}\n\t\t}\n\t\tvar reducedPts = CoordinateArrays.toCoordinateArray(reducedSet);\n\t\tif (reducedPts.length < 3) return this.padArray3(reducedPts);\n\t\treturn reducedPts;\n\t},\n\tgetConvexHull: function () {\n\t\tif (this._inputPts.length === 0) {\n\t\t\treturn this._geomFactory.createGeometryCollection();\n\t\t}\n\t\tif (this._inputPts.length === 1) {\n\t\t\treturn this._geomFactory.createPoint(this._inputPts[0]);\n\t\t}\n\t\tif (this._inputPts.length === 2) {\n\t\t\treturn this._geomFactory.createLineString(this._inputPts);\n\t\t}\n\t\tvar reducedPts = this._inputPts;\n\t\tif (this._inputPts.length > 50) {\n\t\t\treducedPts = this.reduce(this._inputPts);\n\t\t}\n\t\tvar sortedPts = this.preSort(reducedPts);\n\t\tvar cHS = this.grahamScan(sortedPts);\n\t\tvar cH = this.toCoordinateArray(cHS);\n\t\treturn this.lineOrPolygon(cH);\n\t},\n\tpadArray3: function (pts) {\n\t\tvar pad = new Array(3).fill(null);\n\t\tfor (var i = 0; i < pad.length; i++) {\n\t\t\tif (i < pts.length) {\n\t\t\t\tpad[i] = pts[i];\n\t\t\t} else pad[i] = pts[0];\n\t\t}\n\t\treturn pad;\n\t},\n\tcomputeOctPts: function (inputPts) {\n\t\tvar pts = new Array(8).fill(null);\n\t\tfor (var j = 0; j < pts.length; j++) {\n\t\t\tpts[j] = inputPts[0];\n\t\t}\n\t\tfor (var i = 1; i < inputPts.length; i++) {\n\t\t\tif (inputPts[i].x < pts[0].x) {\n\t\t\t\tpts[0] = inputPts[i];\n\t\t\t}\n\t\t\tif (inputPts[i].x - inputPts[i].y < pts[1].x - pts[1].y) {\n\t\t\t\tpts[1] = inputPts[i];\n\t\t\t}\n\t\t\tif (inputPts[i].y > pts[2].y) {\n\t\t\t\tpts[2] = inputPts[i];\n\t\t\t}\n\t\t\tif (inputPts[i].x + inputPts[i].y > pts[3].x + pts[3].y) {\n\t\t\t\tpts[3] = inputPts[i];\n\t\t\t}\n\t\t\tif (inputPts[i].x > pts[4].x) {\n\t\t\t\tpts[4] = inputPts[i];\n\t\t\t}\n\t\t\tif (inputPts[i].x - inputPts[i].y > pts[5].x - pts[5].y) {\n\t\t\t\tpts[5] = inputPts[i];\n\t\t\t}\n\t\t\tif (inputPts[i].y < pts[6].y) {\n\t\t\t\tpts[6] = inputPts[i];\n\t\t\t}\n\t\t\tif (inputPts[i].x + inputPts[i].y < pts[7].x + pts[7].y) {\n\t\t\t\tpts[7] = inputPts[i];\n\t\t\t}\n\t\t}\n\t\treturn pts;\n\t},\n\ttoCoordinateArray: function (stack) {\n\t\tvar coordinates = new Array(stack.size()).fill(null);\n\t\tfor (var i = 0; i < stack.size(); i++) {\n\t\t\tvar coordinate = stack.get(i);\n\t\t\tcoordinates[i] = coordinate;\n\t\t}\n\t\treturn coordinates;\n\t},\n\tgrahamScan: function (c) {\n\t\tvar p = null;\n\t\tvar ps = new Stack();\n\t\tps.push(c[0]);\n\t\tps.push(c[1]);\n\t\tps.push(c[2]);\n\t\tfor (var i = 3; i < c.length; i++) {\n\t\t\tp = ps.pop();\n\t\t\twhile (!ps.empty() && Orientation.index(ps.peek(), p, c[i]) > 0) {\n\t\t\t\tp = ps.pop();\n\t\t\t}\n\t\t\tps.push(p);\n\t\t\tps.push(c[i]);\n\t\t}\n\t\tps.push(c[0]);\n\t\treturn ps;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ConvexHull;\n\t}\n});\nConvexHull.extractCoordinates = function (geom) {\n\tvar filter = new UniqueCoordinateArrayFilter();\n\tgeom.apply(filter);\n\treturn filter.getCoordinates();\n};\nfunction RadialComparator() {\n\tthis._origin = null;\n\tlet origin = arguments[0];\n\tthis._origin = origin;\n}\nextend(RadialComparator.prototype, {\n\tcompare: function (o1, o2) {\n\t\tvar p1 = o1;\n\t\tvar p2 = o2;\n\t\treturn RadialComparator.polarCompare(this._origin, p1, p2);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tgetClass: function () {\n\t\treturn RadialComparator;\n\t}\n});\nRadialComparator.polarCompare = function (o, p, q) {\n\tvar dxp = p.x - o.x;\n\tvar dyp = p.y - o.y;\n\tvar dxq = q.x - o.x;\n\tvar dyq = q.y - o.y;\n\tvar orient = Orientation.index(o, p, q);\n\tif (orient === Orientation.COUNTERCLOCKWISE) return 1;\n\tif (orient === Orientation.CLOCKWISE) return -1;\n\tvar op = dxp * dxp + dyp * dyp;\n\tvar oq = dxq * dxq + dyq * dyq;\n\tif (op < oq) {\n\t\treturn -1;\n\t}\n\tif (op > oq) {\n\t\treturn 1;\n\t}\n\treturn 0;\n};\nConvexHull.RadialComparator = RadialComparator;\n","import Geometry from '../geom/Geometry';\nimport Coordinate from '../geom/Coordinate';\nimport Polygon from '../geom/Polygon';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport GeometryCollection from '../geom/GeometryCollection';\nexport default function InteriorPointArea() {\n\tthis._factory = null;\n\tthis._interiorPoint = null;\n\tthis._maxWidth = 0.0;\n\tlet g = arguments[0];\n\tthis._factory = g.getFactory();\n\tthis.add(g);\n}\nextend(InteriorPointArea.prototype, {\n\taddPolygon: function (geometry) {\n\t\tif (geometry.isEmpty()) return null;\n\t\tvar intPt = null;\n\t\tvar width = null;\n\t\tvar bisector = this.horizontalBisector(geometry);\n\t\tif (bisector.getLength() === 0.0) {\n\t\t\twidth = 0;\n\t\t\tintPt = bisector.getCoordinate();\n\t\t} else {\n\t\t\tvar intersections = bisector.intersection(geometry);\n\t\t\tvar widestIntersection = this.widestGeometry(intersections);\n\t\t\twidth = widestIntersection.getEnvelopeInternal().getWidth();\n\t\t\tintPt = InteriorPointArea.centre(widestIntersection.getEnvelopeInternal());\n\t\t}\n\t\tif (this._interiorPoint === null || width > this._maxWidth) {\n\t\t\tthis._interiorPoint = intPt;\n\t\t\tthis._maxWidth = width;\n\t\t}\n\t},\n\tgetInteriorPoint: function () {\n\t\treturn this._interiorPoint;\n\t},\n\twidestGeometry: function () {\n\t\tif (arguments[0] instanceof GeometryCollection) {\n\t\t\tlet gc = arguments[0];\n\t\t\tif (gc.isEmpty()) {\n\t\t\t\treturn gc;\n\t\t\t}\n\t\t\tvar widestGeometry = gc.getGeometryN(0);\n\t\t\tfor (var i = 1; i < gc.getNumGeometries(); i++) {\n\t\t\t\tif (gc.getGeometryN(i).getEnvelopeInternal().getWidth() > widestGeometry.getEnvelopeInternal().getWidth()) {\n\t\t\t\t\twidestGeometry = gc.getGeometryN(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn widestGeometry;\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet geometry = arguments[0];\n\t\t\tif (!(geometry instanceof GeometryCollection)) {\n\t\t\t\treturn geometry;\n\t\t\t}\n\t\t\treturn this.widestGeometry(geometry);\n\t\t}\n\t},\n\thorizontalBisector: function (geometry) {\n\t\tvar envelope = geometry.getEnvelopeInternal();\n\t\tvar bisectY = SafeBisectorFinder.getBisectorY(geometry);\n\t\treturn this._factory.createLineString([new Coordinate(envelope.getMinX(), bisectY), new Coordinate(envelope.getMaxX(), bisectY)]);\n\t},\n\tadd: function (geom) {\n\t\tif (geom instanceof Polygon) {\n\t\t\tthis.addPolygon(geom);\n\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\tvar gc = geom;\n\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\tthis.add(gc.getGeometryN(i));\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn InteriorPointArea;\n\t}\n});\nInteriorPointArea.centre = function (envelope) {\n\treturn new Coordinate(InteriorPointArea.avg(envelope.getMinX(), envelope.getMaxX()), InteriorPointArea.avg(envelope.getMinY(), envelope.getMaxY()));\n};\nInteriorPointArea.avg = function (a, b) {\n\treturn (a + b) / 2.0;\n};\nfunction SafeBisectorFinder() {\n\tthis._poly = null;\n\tthis._centreY = null;\n\tthis._hiY = Double.MAX_VALUE;\n\tthis._loY = -Double.MAX_VALUE;\n\tlet poly = arguments[0];\n\tthis._poly = poly;\n\tthis._hiY = poly.getEnvelopeInternal().getMaxY();\n\tthis._loY = poly.getEnvelopeInternal().getMinY();\n\tthis._centreY = InteriorPointArea.avg(this._loY, this._hiY);\n}\nextend(SafeBisectorFinder.prototype, {\n\tupdateInterval: function (y) {\n\t\tif (y <= this._centreY) {\n\t\t\tif (y > this._loY) this._loY = y;\n\t\t} else if (y > this._centreY) {\n\t\t\tif (y < this._hiY) {\n\t\t\t\tthis._hiY = y;\n\t\t\t}\n\t\t}\n\t},\n\tgetBisectorY: function () {\n\t\tthis.process(this._poly.getExteriorRing());\n\t\tfor (var i = 0; i < this._poly.getNumInteriorRing(); i++) {\n\t\t\tthis.process(this._poly.getInteriorRingN(i));\n\t\t}\n\t\tvar bisectY = InteriorPointArea.avg(this._hiY, this._loY);\n\t\treturn bisectY;\n\t},\n\tprocess: function (line) {\n\t\tvar seq = line.getCoordinateSequence();\n\t\tfor (var i = 0; i < seq.size(); i++) {\n\t\t\tvar y = seq.getY(i);\n\t\t\tthis.updateInterval(y);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SafeBisectorFinder;\n\t}\n});\nSafeBisectorFinder.getBisectorY = function (poly) {\n\tvar finder = new SafeBisectorFinder(poly);\n\treturn finder.getBisectorY();\n};\nInteriorPointArea.SafeBisectorFinder = SafeBisectorFinder;\n","import LineString from '../geom/LineString';\nimport Geometry from '../geom/Geometry';\nimport Coordinate from '../geom/Coordinate';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport GeometryCollection from '../geom/GeometryCollection';\nexport default function InteriorPointLine() {\n\tthis._centroid = null;\n\tthis._minDistance = Double.MAX_VALUE;\n\tthis._interiorPoint = null;\n\tlet g = arguments[0];\n\tthis._centroid = g.getCentroid().getCoordinate();\n\tthis.addInterior(g);\n\tif (this._interiorPoint === null) this.addEndpoints(g);\n}\nextend(InteriorPointLine.prototype, {\n\taddEndpoints: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tif (geom instanceof LineString) {\n\t\t\t\tthis.addEndpoints(geom.getCoordinates());\n\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\tvar gc = geom;\n\t\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\t\tthis.addEndpoints(gc.getGeometryN(i));\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Array) {\n\t\t\tlet pts = arguments[0];\n\t\t\tthis.add(pts[0]);\n\t\t\tthis.add(pts[pts.length - 1]);\n\t\t}\n\t},\n\tgetInteriorPoint: function () {\n\t\treturn this._interiorPoint;\n\t},\n\taddInterior: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tif (geom instanceof LineString) {\n\t\t\t\tthis.addInterior(geom.getCoordinates());\n\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\tvar gc = geom;\n\t\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\t\tthis.addInterior(gc.getGeometryN(i));\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Array) {\n\t\t\tlet pts = arguments[0];\n\t\t\tfor (var i = 1; i < pts.length - 1; i++) {\n\t\t\t\tthis.add(pts[i]);\n\t\t\t}\n\t\t}\n\t},\n\tadd: function (point) {\n\t\tvar dist = point.distance(this._centroid);\n\t\tif (dist < this._minDistance) {\n\t\t\tthis._interiorPoint = new Coordinate(point);\n\t\t\tthis._minDistance = dist;\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn InteriorPointLine;\n\t}\n});\n","import Geometry from '../geom/Geometry';\nimport Coordinate from '../geom/Coordinate';\nimport Point from '../geom/Point';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport GeometryCollection from '../geom/GeometryCollection';\nexport default function InteriorPointPoint() {\n\tthis._centroid = null;\n\tthis._minDistance = Double.MAX_VALUE;\n\tthis._interiorPoint = null;\n\tlet g = arguments[0];\n\tthis._centroid = g.getCentroid().getCoordinate();\n\tthis.add(g);\n}\nextend(InteriorPointPoint.prototype, {\n\tgetInteriorPoint: function () {\n\t\treturn this._interiorPoint;\n\t},\n\tadd: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tif (geom instanceof Point) {\n\t\t\t\tthis.add(geom.getCoordinate());\n\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\tvar gc = geom;\n\t\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\t\tthis.add(gc.getGeometryN(i));\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet point = arguments[0];\n\t\t\tvar dist = point.distance(this._centroid);\n\t\t\tif (dist < this._minDistance) {\n\t\t\t\tthis._interiorPoint = new Coordinate(point);\n\t\t\t\tthis._minDistance = dist;\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn InteriorPointPoint;\n\t}\n});\n","import extend from '../../../../../extend';\nimport LineSegment from '../../geom/LineSegment';\nexport default function MonotoneChainSelectAction() {\n\tthis.selectedSegment = new LineSegment();\n}\nextend(MonotoneChainSelectAction.prototype, {\n\tselect: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet seg = arguments[0];\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet mc = arguments[0], startIndex = arguments[1];\n\t\t\tmc.getLineSegment(startIndex, this.selectedSegment);\n\t\t\tthis.select(this.selectedSegment);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MonotoneChainSelectAction;\n\t}\n});\n","import extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function NodeBase() {\n\tthis._items = new ArrayList();\n\tthis._subnode = new Array(2).fill(null);\n}\nextend(NodeBase.prototype, {\n\thasChildren: function () {\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (this._subnode[i] !== null) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tisPrunable: function () {\n\t\treturn !(this.hasChildren() || this.hasItems());\n\t},\n\taddAllItems: function (items) {\n\t\titems.addAll(this._items);\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tthis._subnode[i].addAllItems(items);\n\t\t\t}\n\t\t}\n\t\treturn items;\n\t},\n\tsize: function () {\n\t\tvar subSize = 0;\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tsubSize += this._subnode[i].size();\n\t\t\t}\n\t\t}\n\t\treturn subSize + this._items.size();\n\t},\n\taddAllItemsFromOverlapping: function (interval, resultItems) {\n\t\tif (interval !== null && !this.isSearchMatch(interval)) return null;\n\t\tresultItems.addAll(this._items);\n\t\tif (this._subnode[0] !== null) this._subnode[0].addAllItemsFromOverlapping(interval, resultItems);\n\t\tif (this._subnode[1] !== null) this._subnode[1].addAllItemsFromOverlapping(interval, resultItems);\n\t},\n\thasItems: function () {\n\t\treturn !this._items.isEmpty();\n\t},\n\tremove: function (itemInterval, item) {\n\t\tif (!this.isSearchMatch(itemInterval)) return false;\n\t\tvar found = false;\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tfound = this._subnode[i].remove(itemInterval, item);\n\t\t\t\tif (found) {\n\t\t\t\t\tif (this._subnode[i].isPrunable()) this._subnode[i] = null;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (found) return found;\n\t\tfound = this._items.remove(item);\n\t\treturn found;\n\t},\n\tgetItems: function () {\n\t\treturn this._items;\n\t},\n\tdepth: function () {\n\t\tvar maxSubDepth = 0;\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tvar sqd = this._subnode[i].depth();\n\t\t\t\tif (sqd > maxSubDepth) maxSubDepth = sqd;\n\t\t\t}\n\t\t}\n\t\treturn maxSubDepth + 1;\n\t},\n\tnodeSize: function () {\n\t\tvar subSize = 0;\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tsubSize += this._subnode[i].nodeSize();\n\t\t\t}\n\t\t}\n\t\treturn subSize + 1;\n\t},\n\tadd: function (item) {\n\t\tthis._items.add(item);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn NodeBase;\n\t}\n});\nNodeBase.getSubnodeIndex = function (interval, centre) {\n\tvar subnodeIndex = -1;\n\tif (interval.min >= centre) subnodeIndex = 1;\n\tif (interval.max <= centre) subnodeIndex = 0;\n\treturn subnodeIndex;\n};\n","import extend from '../../../../../extend';\nexport default function Interval() {\n\tthis.min = null;\n\tthis.max = null;\n\tif (arguments.length === 0) {\n\t\tthis.min = 0.0;\n\t\tthis.max = 0.0;\n\t} else if (arguments.length === 1) {\n\t\tlet interval = arguments[0];\n\t\tthis.init(interval.min, interval.max);\n\t} else if (arguments.length === 2) {\n\t\tlet min = arguments[0], max = arguments[1];\n\t\tthis.init(min, max);\n\t}\n}\nextend(Interval.prototype, {\n\texpandToInclude: function (interval) {\n\t\tif (interval.max > this.max) this.max = interval.max;\n\t\tif (interval.min < this.min) this.min = interval.min;\n\t},\n\tgetWidth: function () {\n\t\treturn this.max - this.min;\n\t},\n\toverlaps: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet interval = arguments[0];\n\t\t\treturn this.overlaps(interval.min, interval.max);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet min = arguments[0], max = arguments[1];\n\t\t\tif (this.min > max || this.max < min) return false;\n\t\t\treturn true;\n\t\t}\n\t},\n\tgetMin: function () {\n\t\treturn this.min;\n\t},\n\ttoString: function () {\n\t\treturn \"[\" + this.min + \", \" + this.max + \"]\";\n\t},\n\tcontains: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Interval) {\n\t\t\t\tlet interval = arguments[0];\n\t\t\t\treturn this.contains(interval.min, interval.max);\n\t\t\t} else if (typeof arguments[0] === \"number\") {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn p >= this.min && p <= this.max;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet min = arguments[0], max = arguments[1];\n\t\t\treturn min >= this.min && max <= this.max;\n\t\t}\n\t},\n\tinit: function (min, max) {\n\t\tthis.min = min;\n\t\tthis.max = max;\n\t\tif (min > max) {\n\t\t\tthis.min = max;\n\t\t\tthis.max = min;\n\t\t}\n\t},\n\tgetMax: function () {\n\t\treturn this.max;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Interval;\n\t}\n});\n","export default function DoubleBits () { }\nDoubleBits.exponent = function (d) {\n return CVTFWD(64, d) - 1023\n}\nDoubleBits.powerOf2 = function (exp) {\n return Math.pow(2, exp)\n}\n\n/**\n * Calculates the exponent of the bit-pattern for a number. Uses code from:\n * http://www.merlyn.demon.co.uk/js-exact.htm\n *\n * @param {Number}\n * NumW 32 or 64 to denote the number of bits.\n * @param {Number}\n * Qty the number to calculate the bit pattern for.\n * @return {Number} The integer value of the exponent.\n * @private\n */\nfunction CVTFWD (NumW, Qty) {\n var Sign\n var Expo\n var Mant\n var Bin\n var Inf = {\n 32: {\n d: 0x7F,\n c: 0x80,\n b: 0,\n a: 0\n },\n 64: {\n d: 0x7FF0,\n c: 0,\n b: 0,\n a: 0\n }\n }\n var ExW = {\n 32: 8,\n 64: 11\n }[NumW]\n\n if (!Bin) {\n Sign = Qty < 0 || 1 / Qty < 0 // OK for +-0\n if (!isFinite(Qty)) {\n Bin = Inf[NumW]\n if (Sign) {\n Bin.d += 1 << (NumW / 4 - 1)\n }\n Expo = Math.pow(2, ExW) - 1\n Mant = 0\n }\n }\n\n if (!Bin) {\n Expo = {\n 32: 127,\n 64: 1023\n }[NumW]\n Mant = Math.abs(Qty)\n while (Mant >= 2) {\n Expo++\n Mant /= 2\n }\n while (Mant < 1 && Expo > 0) {\n Expo--\n Mant *= 2\n }\n if (Expo <= 0) {\n Mant /= 2\n }\n if (NumW === 32 && Expo > 254) {\n Bin = {\n d: Sign ? 0xFF : 0x7F,\n c: 0x80,\n b: 0,\n a: 0\n }\n Expo = Math.pow(2, ExW) - 1\n Mant = 0\n }\n }\n\n return Expo\n}\n","import Interval from './Interval';\nimport extend from '../../../../../extend';\nimport DoubleBits from '../quadtree/DoubleBits';\nexport default function Key() {\n\tthis._pt = 0.0;\n\tthis._level = 0;\n\tthis._interval = null;\n\tlet interval = arguments[0];\n\tthis.computeKey(interval);\n}\nextend(Key.prototype, {\n\tgetInterval: function () {\n\t\treturn this._interval;\n\t},\n\tgetLevel: function () {\n\t\treturn this._level;\n\t},\n\tcomputeKey: function (itemInterval) {\n\t\tthis._level = Key.computeLevel(itemInterval);\n\t\tthis._interval = new Interval();\n\t\tthis.computeInterval(this._level, itemInterval);\n\t\twhile (!this._interval.contains(itemInterval)) {\n\t\t\tthis._level += 1;\n\t\t\tthis.computeInterval(this._level, itemInterval);\n\t\t}\n\t},\n\tcomputeInterval: function (level, itemInterval) {\n\t\tvar size = DoubleBits.powerOf2(level);\n\t\tthis._pt = Math.floor(itemInterval.getMin() / size) * size;\n\t\tthis._interval.init(this._pt, this._pt + size);\n\t},\n\tgetPoint: function () {\n\t\treturn this._pt;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Key;\n\t}\n});\nKey.computeLevel = function (interval) {\n\tvar dx = interval.getWidth();\n\tvar level = DoubleBits.exponent(dx) + 1;\n\treturn level;\n};\n","import NodeBase from './NodeBase';\nimport Interval from './Interval';\nimport extend from '../../../../../extend';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nimport Key from './Key';\nexport default function Node() {\n\tNodeBase.apply(this);\n\tthis._interval = null;\n\tthis._centre = null;\n\tthis._level = null;\n\tlet interval = arguments[0], level = arguments[1];\n\tthis._interval = interval;\n\tthis._level = level;\n\tthis._centre = (interval.getMin() + interval.getMax()) / 2;\n}\ninherits(Node, NodeBase);\nextend(Node.prototype, {\n\tgetInterval: function () {\n\t\treturn this._interval;\n\t},\n\tfind: function (searchInterval) {\n\t\tvar subnodeIndex = NodeBase.getSubnodeIndex(searchInterval, this._centre);\n\t\tif (subnodeIndex === -1) return this;\n\t\tif (this._subnode[subnodeIndex] !== null) {\n\t\t\tvar node = this._subnode[subnodeIndex];\n\t\t\treturn node.find(searchInterval);\n\t\t}\n\t\treturn this;\n\t},\n\tinsert: function (node) {\n\t\tAssert.isTrue(this._interval === null || this._interval.contains(node._interval));\n\t\tvar index = NodeBase.getSubnodeIndex(node._interval, this._centre);\n\t\tif (node._level === this._level - 1) {\n\t\t\tthis._subnode[index] = node;\n\t\t} else {\n\t\t\tvar childNode = this.createSubnode(index);\n\t\t\tchildNode.insert(node);\n\t\t\tthis._subnode[index] = childNode;\n\t\t}\n\t},\n\tisSearchMatch: function (itemInterval) {\n\t\treturn itemInterval.overlaps(this._interval);\n\t},\n\tgetSubnode: function (index) {\n\t\tif (this._subnode[index] === null) {\n\t\t\tthis._subnode[index] = this.createSubnode(index);\n\t\t}\n\t\treturn this._subnode[index];\n\t},\n\tgetNode: function (searchInterval) {\n\t\tvar subnodeIndex = NodeBase.getSubnodeIndex(searchInterval, this._centre);\n\t\tif (subnodeIndex !== -1) {\n\t\t\tvar node = this.getSubnode(subnodeIndex);\n\t\t\treturn node.getNode(searchInterval);\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t},\n\tcreateSubnode: function (index) {\n\t\tvar min = 0.0;\n\t\tvar max = 0.0;\n\t\tswitch (index) {\n\t\t\tcase 0:\n\t\t\t\tmin = this._interval.getMin();\n\t\t\t\tmax = this._centre;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tmin = this._centre;\n\t\t\t\tmax = this._interval.getMax();\n\t\t\t\tbreak;\n\t\t}\n\t\tvar subInt = new Interval(min, max);\n\t\tvar node = new Node(subInt, this._level - 1);\n\t\treturn node;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Node;\n\t}\n});\nNode.createNode = function (itemInterval) {\n\tvar key = new Key(itemInterval);\n\tvar node = new Node(key.getInterval(), key.getLevel());\n\treturn node;\n};\nNode.createExpanded = function (node, addInterval) {\n\tvar expandInt = new Interval(addInterval);\n\tif (node !== null) expandInt.expandToInclude(node._interval);\n\tvar largerNode = Node.createNode(expandInt);\n\tif (node !== null) largerNode.insert(node);\n\treturn largerNode;\n};\n","import extend from '../../../../../extend';\nimport DoubleBits from './DoubleBits';\nexport default function IntervalSize() {}\nextend(IntervalSize.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IntervalSize;\n\t}\n});\nIntervalSize.isZeroWidth = function (min, max) {\n\tvar width = max - min;\n\tif (width === 0.0) return true;\n\tvar maxAbs = Math.max(Math.abs(min), Math.abs(max));\n\tvar scaledInterval = width / maxAbs;\n\tvar level = DoubleBits.exponent(scaledInterval);\n\treturn level <= IntervalSize.MIN_BINARY_EXPONENT;\n};\nIntervalSize.MIN_BINARY_EXPONENT = -50;\n","import NodeBase from './NodeBase';\nimport Node from './Node';\nimport extend from '../../../../../extend';\nimport IntervalSize from '../quadtree/IntervalSize';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nexport default function Root() {\n\tNodeBase.apply(this);\n}\ninherits(Root, NodeBase);\nextend(Root.prototype, {\n\tinsert: function (itemInterval, item) {\n\t\tvar index = NodeBase.getSubnodeIndex(itemInterval, Root.origin);\n\t\tif (index === -1) {\n\t\t\tthis.add(item);\n\t\t\treturn null;\n\t\t}\n\t\tvar node = this._subnode[index];\n\t\tif (node === null || !node.getInterval().contains(itemInterval)) {\n\t\t\tvar largerNode = Node.createExpanded(node, itemInterval);\n\t\t\tthis._subnode[index] = largerNode;\n\t\t}\n\t\tthis.insertContained(this._subnode[index], itemInterval, item);\n\t},\n\tisSearchMatch: function (interval) {\n\t\treturn true;\n\t},\n\tinsertContained: function (tree, itemInterval, item) {\n\t\tAssert.isTrue(tree.getInterval().contains(itemInterval));\n\t\tvar isZeroArea = IntervalSize.isZeroWidth(itemInterval.getMin(), itemInterval.getMax());\n\t\tvar node = null;\n\t\tif (isZeroArea) node = tree.find(itemInterval); else node = tree.getNode(itemInterval);\n\t\tnode.add(item);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Root;\n\t}\n});\nRoot.origin = 0.0;\n","import Root from './Root';\nimport Interval from './Interval';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function Bintree() {\n\tthis._root = null;\n\tthis._minExtent = 1.0;\n\tthis._root = new Root();\n}\nextend(Bintree.prototype, {\n\tsize: function () {\n\t\tif (this._root !== null) return this._root.size();\n\t\treturn 0;\n\t},\n\tinsert: function (itemInterval, item) {\n\t\tthis.collectStats(itemInterval);\n\t\tvar insertInterval = Bintree.ensureExtent(itemInterval, this._minExtent);\n\t\tthis._root.insert(insertInterval, item);\n\t},\n\tquery: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (typeof arguments[0] === \"number\") {\n\t\t\t\tlet x = arguments[0];\n\t\t\t\treturn this.query(new Interval(x, x));\n\t\t\t} else if (arguments[0] instanceof Interval) {\n\t\t\t\tlet interval = arguments[0];\n\t\t\t\tvar foundItems = new ArrayList();\n\t\t\t\tthis.query(interval, foundItems);\n\t\t\t\treturn foundItems;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet interval = arguments[0], foundItems = arguments[1];\n\t\t\tthis._root.addAllItemsFromOverlapping(interval, foundItems);\n\t\t}\n\t},\n\titerator: function () {\n\t\tvar foundItems = new ArrayList();\n\t\tthis._root.addAllItems(foundItems);\n\t\treturn foundItems.iterator();\n\t},\n\tremove: function (itemInterval, item) {\n\t\tvar insertInterval = Bintree.ensureExtent(itemInterval, this._minExtent);\n\t\treturn this._root.remove(insertInterval, item);\n\t},\n\tcollectStats: function (interval) {\n\t\tvar del = interval.getWidth();\n\t\tif (del < this._minExtent && del > 0.0) this._minExtent = del;\n\t},\n\tdepth: function () {\n\t\tif (this._root !== null) return this._root.depth();\n\t\treturn 0;\n\t},\n\tnodeSize: function () {\n\t\tif (this._root !== null) return this._root.nodeSize();\n\t\treturn 0;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Bintree;\n\t}\n});\nBintree.ensureExtent = function (itemInterval, minExtent) {\n\tvar min = itemInterval.getMin();\n\tvar max = itemInterval.getMax();\n\tif (min !== max) return itemInterval;\n\tif (min === max) {\n\t\tmin = min - minExtent / 2.0;\n\t\tmax = min + minExtent / 2.0;\n\t}\n\treturn new Interval(min, max);\n};\n","import extend from '../../../../../extend';\nimport Envelope from '../../geom/Envelope';\nexport default function MonotoneChain() {\n\tthis._pts = null;\n\tthis._start = null;\n\tthis._end = null;\n\tthis._env = null;\n\tthis._context = null;\n\tthis._id = null;\n\tlet pts = arguments[0], start = arguments[1], end = arguments[2], context = arguments[3];\n\tthis._pts = pts;\n\tthis._start = start;\n\tthis._end = end;\n\tthis._context = context;\n}\nextend(MonotoneChain.prototype, {\n\tgetLineSegment: function (index, ls) {\n\t\tls.p0 = this._pts[index];\n\t\tls.p1 = this._pts[index + 1];\n\t},\n\tcomputeSelect: function (searchEnv, start0, end0, mcs) {\n\t\tvar p0 = this._pts[start0];\n\t\tvar p1 = this._pts[end0];\n\t\tif (end0 - start0 === 1) {\n\t\t\tmcs.select(this, start0);\n\t\t\treturn null;\n\t\t}\n\t\tif (!searchEnv.intersects(p0, p1)) return null;\n\t\tvar mid = Math.trunc((start0 + end0) / 2);\n\t\tif (start0 < mid) {\n\t\t\tthis.computeSelect(searchEnv, start0, mid, mcs);\n\t\t}\n\t\tif (mid < end0) {\n\t\t\tthis.computeSelect(searchEnv, mid, end0, mcs);\n\t\t}\n\t},\n\tgetCoordinates: function () {\n\t\tvar coord = new Array(this._end - this._start + 1).fill(null);\n\t\tvar index = 0;\n\t\tfor (var i = this._start; i <= this._end; i++) {\n\t\t\tcoord[index++] = this._pts[i];\n\t\t}\n\t\treturn coord;\n\t},\n\tcomputeOverlaps: function () {\n\t\tif (arguments.length === 2) {\n\t\t\tlet mc = arguments[0], mco = arguments[1];\n\t\t\tthis.computeOverlaps(this._start, this._end, mc, mc._start, mc._end, mco);\n\t\t} else if (arguments.length === 6) {\n\t\t\tlet start0 = arguments[0], end0 = arguments[1], mc = arguments[2], start1 = arguments[3], end1 = arguments[4], mco = arguments[5];\n\t\t\tif (end0 - start0 === 1 && end1 - start1 === 1) {\n\t\t\t\tmco.overlap(this, start0, mc, start1);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (!this.overlaps(start0, end0, mc, start1, end1)) return null;\n\t\t\tvar mid0 = Math.trunc((start0 + end0) / 2);\n\t\t\tvar mid1 = Math.trunc((start1 + end1) / 2);\n\t\t\tif (start0 < mid0) {\n\t\t\t\tif (start1 < mid1) this.computeOverlaps(start0, mid0, mc, start1, mid1, mco);\n\t\t\t\tif (mid1 < end1) this.computeOverlaps(start0, mid0, mc, mid1, end1, mco);\n\t\t\t}\n\t\t\tif (mid0 < end0) {\n\t\t\t\tif (start1 < mid1) this.computeOverlaps(mid0, end0, mc, start1, mid1, mco);\n\t\t\t\tif (mid1 < end1) this.computeOverlaps(mid0, end0, mc, mid1, end1, mco);\n\t\t\t}\n\t\t}\n\t},\n\tsetId: function (id) {\n\t\tthis._id = id;\n\t},\n\tselect: function (searchEnv, mcs) {\n\t\tthis.computeSelect(searchEnv, this._start, this._end, mcs);\n\t},\n\tgetEnvelope: function () {\n\t\tif (this._env === null) {\n\t\t\tvar p0 = this._pts[this._start];\n\t\t\tvar p1 = this._pts[this._end];\n\t\t\tthis._env = new Envelope(p0, p1);\n\t\t}\n\t\treturn this._env;\n\t},\n\toverlaps: function (start0, end0, mc, start1, end1) {\n\t\treturn Envelope.intersects(this._pts[start0], this._pts[end0], mc._pts[start1], mc._pts[end1]);\n\t},\n\tgetEndIndex: function () {\n\t\treturn this._end;\n\t},\n\tgetStartIndex: function () {\n\t\treturn this._start;\n\t},\n\tgetContext: function () {\n\t\treturn this._context;\n\t},\n\tgetId: function () {\n\t\treturn this._id;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MonotoneChain;\n\t}\n});\n","import Coordinate from '../geom/Coordinate';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nexport default function Quadrant() {}\nextend(Quadrant.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Quadrant;\n\t}\n});\nQuadrant.isNorthern = function (quad) {\n\treturn quad === Quadrant.NE || quad === Quadrant.NW;\n};\nQuadrant.isOpposite = function (quad1, quad2) {\n\tif (quad1 === quad2) return false;\n\tvar diff = (quad1 - quad2 + 4) % 4;\n\tif (diff === 2) return true;\n\treturn false;\n};\nQuadrant.commonHalfPlane = function (quad1, quad2) {\n\tif (quad1 === quad2) return quad1;\n\tvar diff = (quad1 - quad2 + 4) % 4;\n\tif (diff === 2) return -1;\n\tvar min = quad1 < quad2 ? quad1 : quad2;\n\tvar max = quad1 > quad2 ? quad1 : quad2;\n\tif (min === 0 && max === 3) return 3;\n\treturn min;\n};\nQuadrant.isInHalfPlane = function (quad, halfPlane) {\n\tif (halfPlane === Quadrant.SE) {\n\t\treturn quad === Quadrant.SE || quad === Quadrant.SW;\n\t}\n\treturn quad === halfPlane || quad === halfPlane + 1;\n};\nQuadrant.quadrant = function () {\n\tif (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\") {\n\t\tlet dx = arguments[0], dy = arguments[1];\n\t\tif (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException(\"Cannot compute the quadrant for point ( \" + dx + \", \" + dy + \" )\");\n\t\tif (dx >= 0.0) {\n\t\t\tif (dy >= 0.0) return Quadrant.NE; else return Quadrant.SE;\n\t\t} else {\n\t\t\tif (dy >= 0.0) return Quadrant.NW; else return Quadrant.SW;\n\t\t}\n\t} else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tif (p1.x === p0.x && p1.y === p0.y) throw new IllegalArgumentException(\"Cannot compute the quadrant for two identical points \" + p0);\n\t\tif (p1.x >= p0.x) {\n\t\t\tif (p1.y >= p0.y) return Quadrant.NE; else return Quadrant.SE;\n\t\t} else {\n\t\t\tif (p1.y >= p0.y) return Quadrant.NW; else return Quadrant.SW;\n\t\t}\n\t}\n};\nQuadrant.NE = 0;\nQuadrant.NW = 1;\nQuadrant.SW = 2;\nQuadrant.SE = 3;\n","import MonotoneChain from './MonotoneChain';\nimport extend from '../../../../../extend';\nimport Integer from '../../../../../java/lang/Integer';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Quadrant from '../../geomgraph/Quadrant';\nexport default function MonotoneChainBuilder() {}\nextend(MonotoneChainBuilder.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MonotoneChainBuilder;\n\t}\n});\nMonotoneChainBuilder.getChainStartIndices = function (pts) {\n\tvar start = 0;\n\tvar startIndexList = new ArrayList();\n\tstartIndexList.add(new Integer(start));\n\tdo {\n\t\tvar last = MonotoneChainBuilder.findChainEnd(pts, start);\n\t\tstartIndexList.add(new Integer(last));\n\t\tstart = last;\n\t} while (start < pts.length - 1);\n\tvar startIndex = MonotoneChainBuilder.toIntArray(startIndexList);\n\treturn startIndex;\n};\nMonotoneChainBuilder.findChainEnd = function (pts, start) {\n\tvar safeStart = start;\n\twhile (safeStart < pts.length - 1 && pts[safeStart].equals2D(pts[safeStart + 1])) {\n\t\tsafeStart++;\n\t}\n\tif (safeStart >= pts.length - 1) {\n\t\treturn pts.length - 1;\n\t}\n\tvar chainQuad = Quadrant.quadrant(pts[safeStart], pts[safeStart + 1]);\n\tvar last = start + 1;\n\twhile (last < pts.length) {\n\t\tif (!pts[last - 1].equals2D(pts[last])) {\n\t\t\tvar quad = Quadrant.quadrant(pts[last - 1], pts[last]);\n\t\t\tif (quad !== chainQuad) break;\n\t\t}\n\t\tlast++;\n\t}\n\treturn last - 1;\n};\nMonotoneChainBuilder.getChains = function () {\n\tif (arguments.length === 1) {\n\t\tlet pts = arguments[0];\n\t\treturn MonotoneChainBuilder.getChains(pts, null);\n\t} else if (arguments.length === 2) {\n\t\tlet pts = arguments[0], context = arguments[1];\n\t\tvar mcList = new ArrayList();\n\t\tvar startIndex = MonotoneChainBuilder.getChainStartIndices(pts);\n\t\tfor (var i = 0; i < startIndex.length - 1; i++) {\n\t\t\tvar mc = new MonotoneChain(pts, startIndex[i], startIndex[i + 1], context);\n\t\t\tmcList.add(mc);\n\t\t}\n\t\treturn mcList;\n\t}\n};\nMonotoneChainBuilder.toIntArray = function (list) {\n\tvar array = new Array(list.size()).fill(null);\n\tfor (var i = 0; i < array.length; i++) {\n\t\tarray[i] = list.get(i).intValue();\n\t}\n\treturn array;\n};\n","import extend from '../../../../extend';\nexport default function RobustDeterminant() {}\nextend(RobustDeterminant.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RobustDeterminant;\n\t}\n});\nRobustDeterminant.orientationIndex = function (p1, p2, q) {\n\tvar dx1 = p2.x - p1.x;\n\tvar dy1 = p2.y - p1.y;\n\tvar dx2 = q.x - p2.x;\n\tvar dy2 = q.y - p2.y;\n\treturn RobustDeterminant.signOfDet2x2(dx1, dy1, dx2, dy2);\n};\nRobustDeterminant.signOfDet2x2 = function (x1, y1, x2, y2) {\n\tvar sign = null;\n\tvar swap = null;\n\tvar k = null;\n\tvar count = 0;\n\tsign = 1;\n\tif (x1 === 0.0 || y2 === 0.0) {\n\t\tif (y1 === 0.0 || x2 === 0.0) {\n\t\t\treturn 0;\n\t\t} else if (y1 > 0) {\n\t\t\tif (x2 > 0) {\n\t\t\t\treturn -sign;\n\t\t\t} else {\n\t\t\t\treturn sign;\n\t\t\t}\n\t\t} else {\n\t\t\tif (x2 > 0) {\n\t\t\t\treturn sign;\n\t\t\t} else {\n\t\t\t\treturn -sign;\n\t\t\t}\n\t\t}\n\t}\n\tif (y1 === 0.0 || x2 === 0.0) {\n\t\tif (y2 > 0) {\n\t\t\tif (x1 > 0) {\n\t\t\t\treturn sign;\n\t\t\t} else {\n\t\t\t\treturn -sign;\n\t\t\t}\n\t\t} else {\n\t\t\tif (x1 > 0) {\n\t\t\t\treturn -sign;\n\t\t\t} else {\n\t\t\t\treturn sign;\n\t\t\t}\n\t\t}\n\t}\n\tif (0.0 < y1) {\n\t\tif (0.0 < y2) {\n\t\t\tif (y1 <= y2) {\n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\tsign = -sign;\n\t\t\t\tswap = x1;\n\t\t\t\tx1 = x2;\n\t\t\t\tx2 = swap;\n\t\t\t\tswap = y1;\n\t\t\t\ty1 = y2;\n\t\t\t\ty2 = swap;\n\t\t\t}\n\t\t} else {\n\t\t\tif (y1 <= -y2) {\n\t\t\t\tsign = -sign;\n\t\t\t\tx2 = -x2;\n\t\t\t\ty2 = -y2;\n\t\t\t} else {\n\t\t\t\tswap = x1;\n\t\t\t\tx1 = -x2;\n\t\t\t\tx2 = swap;\n\t\t\t\tswap = y1;\n\t\t\t\ty1 = -y2;\n\t\t\t\ty2 = swap;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (0.0 < y2) {\n\t\t\tif (-y1 <= y2) {\n\t\t\t\tsign = -sign;\n\t\t\t\tx1 = -x1;\n\t\t\t\ty1 = -y1;\n\t\t\t} else {\n\t\t\t\tswap = -x1;\n\t\t\t\tx1 = x2;\n\t\t\t\tx2 = swap;\n\t\t\t\tswap = -y1;\n\t\t\t\ty1 = y2;\n\t\t\t\ty2 = swap;\n\t\t\t}\n\t\t} else {\n\t\t\tif (y1 >= y2) {\n\t\t\t\tx1 = -x1;\n\t\t\t\ty1 = -y1;\n\t\t\t\tx2 = -x2;\n\t\t\t\ty2 = -y2;\n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\tsign = -sign;\n\t\t\t\tswap = -x1;\n\t\t\t\tx1 = -x2;\n\t\t\t\tx2 = swap;\n\t\t\t\tswap = -y1;\n\t\t\t\ty1 = -y2;\n\t\t\t\ty2 = swap;\n\t\t\t}\n\t\t}\n\t}\n\tif (0.0 < x1) {\n\t\tif (0.0 < x2) {\n\t\t\tif (x1 <= x2) {\n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\treturn sign;\n\t\t\t}\n\t\t} else {\n\t\t\treturn sign;\n\t\t}\n\t} else {\n\t\tif (0.0 < x2) {\n\t\t\treturn -sign;\n\t\t} else {\n\t\t\tif (x1 >= x2) {\n\t\t\t\tsign = -sign;\n\t\t\t\tx1 = -x1;\n\t\t\t\tx2 = -x2;\n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\treturn -sign;\n\t\t\t}\n\t\t}\n\t}\n\twhile (true) {\n\t\tcount = count + 1;\n\t\tk = Math.floor(x2 / x1);\n\t\tx2 = x2 - k * x1;\n\t\ty2 = y2 - k * y1;\n\t\tif (y2 < 0.0) {\n\t\t\treturn -sign;\n\t\t}\n\t\tif (y2 > y1) {\n\t\t\treturn sign;\n\t\t}\n\t\tif (x1 > x2 + x2) {\n\t\t\tif (y1 < y2 + y2) {\n\t\t\t\treturn sign;\n\t\t\t}\n\t\t} else {\n\t\t\tif (y1 > y2 + y2) {\n\t\t\t\treturn -sign;\n\t\t\t} else {\n\t\t\t\tx2 = x1 - x2;\n\t\t\t\ty2 = y1 - y2;\n\t\t\t\tsign = -sign;\n\t\t\t}\n\t\t}\n\t\tif (y2 === 0.0) {\n\t\t\tif (x2 === 0.0) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn -sign;\n\t\t\t}\n\t\t}\n\t\tif (x2 === 0.0) {\n\t\t\treturn sign;\n\t\t}\n\t\tk = Math.floor(x1 / x2);\n\t\tx1 = x1 - k * x2;\n\t\ty1 = y1 - k * y2;\n\t\tif (y1 < 0.0) {\n\t\t\treturn sign;\n\t\t}\n\t\tif (y1 > y2) {\n\t\t\treturn -sign;\n\t\t}\n\t\tif (x2 > x1 + x1) {\n\t\t\tif (y2 < y1 + y1) {\n\t\t\t\treturn -sign;\n\t\t\t}\n\t\t} else {\n\t\t\tif (y2 > y1 + y1) {\n\t\t\t\treturn sign;\n\t\t\t} else {\n\t\t\t\tx1 = x2 - x1;\n\t\t\t\ty1 = y2 - y1;\n\t\t\t\tsign = -sign;\n\t\t\t}\n\t\t}\n\t\tif (y1 === 0.0) {\n\t\t\tif (x1 === 0.0) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn sign;\n\t\t\t}\n\t\t}\n\t\tif (x1 === 0.0) {\n\t\t\treturn -sign;\n\t\t}\n\t}\n};\n","import extend from '../../../../extend';\nexport default function PointInRing() {}\nextend(PointInRing.prototype, {\n\tisInside: function (pt) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PointInRing;\n\t}\n});\n","import MonotoneChainSelectAction from '../index/chain/MonotoneChainSelectAction';\nimport Bintree from '../index/bintree/Bintree';\nimport Interval from '../index/bintree/Interval';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport MonotoneChainBuilder from '../index/chain/MonotoneChainBuilder';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport RobustDeterminant from './RobustDeterminant';\nimport Envelope from '../geom/Envelope';\nimport inherits from '../../../../inherits';\nimport PointInRing from './PointInRing';\nexport default function MCPointInRing() {\n\tthis._ring = null;\n\tthis._tree = null;\n\tthis._crossings = 0;\n\tthis._interval = new Interval();\n\tlet ring = arguments[0];\n\tthis._ring = ring;\n\tthis.buildIndex();\n}\nextend(MCPointInRing.prototype, {\n\ttestLineSegment: function (p, seg) {\n\t\tvar xInt = null;\n\t\tvar x1 = null;\n\t\tvar y1 = null;\n\t\tvar x2 = null;\n\t\tvar y2 = null;\n\t\tvar p1 = seg.p0;\n\t\tvar p2 = seg.p1;\n\t\tx1 = p1.x - p.x;\n\t\ty1 = p1.y - p.y;\n\t\tx2 = p2.x - p.x;\n\t\ty2 = p2.y - p.y;\n\t\tif (y1 > 0 && y2 <= 0 || y2 > 0 && y1 <= 0) {\n\t\t\txInt = RobustDeterminant.signOfDet2x2(x1, y1, x2, y2) / (y2 - y1);\n\t\t\tif (0.0 < xInt) {\n\t\t\t\tthis._crossings++;\n\t\t\t}\n\t\t}\n\t},\n\tbuildIndex: function () {\n\t\tthis._tree = new Bintree();\n\t\tvar pts = CoordinateArrays.removeRepeatedPoints(this._ring.getCoordinates());\n\t\tvar mcList = MonotoneChainBuilder.getChains(pts);\n\t\tfor (var i = 0; i < mcList.size(); i++) {\n\t\t\tvar mc = mcList.get(i);\n\t\t\tvar mcEnv = mc.getEnvelope();\n\t\t\tthis._interval.min = mcEnv.getMinY();\n\t\t\tthis._interval.max = mcEnv.getMaxY();\n\t\t\tthis._tree.insert(this._interval, mc);\n\t\t}\n\t},\n\ttestMonotoneChain: function (rayEnv, mcSelecter, mc) {\n\t\tmc.select(rayEnv, mcSelecter);\n\t},\n\tisInside: function (pt) {\n\t\tthis._crossings = 0;\n\t\tvar rayEnv = new Envelope(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, pt.y, pt.y);\n\t\tthis._interval.min = pt.y;\n\t\tthis._interval.max = pt.y;\n\t\tvar segs = this._tree.query(this._interval);\n\t\tvar mcSelecter = new MCSelecter(this, pt);\n\t\tfor (var i = segs.iterator(); i.hasNext(); ) {\n\t\t\tvar mc = i.next();\n\t\t\tthis.testMonotoneChain(rayEnv, mcSelecter, mc);\n\t\t}\n\t\tif (this._crossings % 2 === 1) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [PointInRing];\n\t},\n\tgetClass: function () {\n\t\treturn MCPointInRing;\n\t}\n});\nfunction MCSelecter() {\n\tMonotoneChainSelectAction.apply(this);\n\tthis.mcp = null;\n\tthis.p = null;\n\tlet mcp = arguments[0], p = arguments[1];\n\tthis.mcp = mcp;\n\tthis.p = p;\n}\ninherits(MCSelecter, MonotoneChainSelectAction);\nextend(MCSelecter.prototype, {\n\tselect: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet ls = arguments[0];\n\t\t\tthis.mcp.testLineSegment(this.p, ls);\n\t\t} else return MonotoneChainSelectAction.prototype.select.apply(this, arguments);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MCSelecter;\n\t}\n});\nMCPointInRing.MCSelecter = MCSelecter;\n","import Coordinate from '../geom/Coordinate';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport Angle from './Angle';\nimport Assert from '../util/Assert';\nimport Triangle from '../geom/Triangle';\nexport default function MinimumBoundingCircle() {\n\tthis._input = null;\n\tthis._extremalPts = null;\n\tthis._centre = null;\n\tthis._radius = 0.0;\n\tlet geom = arguments[0];\n\tthis._input = geom;\n}\nextend(MinimumBoundingCircle.prototype, {\n\tgetRadius: function () {\n\t\tthis.compute();\n\t\treturn this._radius;\n\t},\n\tgetDiameter: function () {\n\t\tthis.compute();\n\t\tswitch (this._extremalPts.length) {\n\t\t\tcase 0:\n\t\t\t\treturn this._input.getFactory().createLineString();\n\t\t\tcase 1:\n\t\t\t\treturn this._input.getFactory().createPoint(this._centre);\n\t\t}\n\t\tvar p0 = this._extremalPts[0];\n\t\tvar p1 = this._extremalPts[1];\n\t\treturn this._input.getFactory().createLineString([p0, p1]);\n\t},\n\tgetExtremalPoints: function () {\n\t\tthis.compute();\n\t\treturn this._extremalPts;\n\t},\n\tcomputeCirclePoints: function () {\n\t\tif (this._input.isEmpty()) {\n\t\t\tthis._extremalPts = new Array(0).fill(null);\n\t\t\treturn null;\n\t\t}\n\t\tif (this._input.getNumPoints() === 1) {\n\t\t\tvar pts = this._input.getCoordinates();\n\t\t\tthis._extremalPts = [new Coordinate(pts[0])];\n\t\t\treturn null;\n\t\t}\n\t\tvar convexHull = this._input.convexHull();\n\t\tvar hullPts = convexHull.getCoordinates();\n\t\tvar pts = hullPts;\n\t\tif (hullPts[0].equals2D(hullPts[hullPts.length - 1])) {\n\t\t\tpts = new Array(hullPts.length - 1).fill(null);\n\t\t\tCoordinateArrays.copyDeep(hullPts, 0, pts, 0, hullPts.length - 1);\n\t\t}\n\t\tif (pts.length <= 2) {\n\t\t\tthis._extremalPts = CoordinateArrays.copyDeep(pts);\n\t\t\treturn null;\n\t\t}\n\t\tvar P = MinimumBoundingCircle.lowestPoint(pts);\n\t\tvar Q = MinimumBoundingCircle.pointWitMinAngleWithX(pts, P);\n\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\tvar R = MinimumBoundingCircle.pointWithMinAngleWithSegment(pts, P, Q);\n\t\t\tif (Angle.isObtuse(P, R, Q)) {\n\t\t\t\tthis._extremalPts = [new Coordinate(P), new Coordinate(Q)];\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (Angle.isObtuse(R, P, Q)) {\n\t\t\t\tP = R;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (Angle.isObtuse(R, Q, P)) {\n\t\t\t\tQ = R;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._extremalPts = [new Coordinate(P), new Coordinate(Q), new Coordinate(R)];\n\t\t\treturn null;\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"Logic failure in Minimum Bounding Circle algorithm!\");\n\t},\n\tcompute: function () {\n\t\tif (this._extremalPts !== null) return null;\n\t\tthis.computeCirclePoints();\n\t\tthis.computeCentre();\n\t\tif (this._centre !== null) this._radius = this._centre.distance(this._extremalPts[0]);\n\t},\n\tgetFarthestPoints: function () {\n\t\tthis.compute();\n\t\tswitch (this._extremalPts.length) {\n\t\t\tcase 0:\n\t\t\t\treturn this._input.getFactory().createLineString();\n\t\t\tcase 1:\n\t\t\t\treturn this._input.getFactory().createPoint(this._centre);\n\t\t}\n\t\tvar p0 = this._extremalPts[0];\n\t\tvar p1 = this._extremalPts[this._extremalPts.length - 1];\n\t\treturn this._input.getFactory().createLineString([p0, p1]);\n\t},\n\tgetCircle: function () {\n\t\tthis.compute();\n\t\tif (this._centre === null) return this._input.getFactory().createPolygon();\n\t\tvar centrePoint = this._input.getFactory().createPoint(this._centre);\n\t\tif (this._radius === 0.0) return centrePoint;\n\t\treturn centrePoint.buffer(this._radius);\n\t},\n\tgetCentre: function () {\n\t\tthis.compute();\n\t\treturn this._centre;\n\t},\n\tcomputeCentre: function () {\n\t\tswitch (this._extremalPts.length) {\n\t\t\tcase 0:\n\t\t\t\tthis._centre = null;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tthis._centre = this._extremalPts[0];\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis._centre = new Coordinate((this._extremalPts[0].x + this._extremalPts[1].x) / 2.0, (this._extremalPts[0].y + this._extremalPts[1].y) / 2.0);\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tthis._centre = Triangle.circumcentre(this._extremalPts[0], this._extremalPts[1], this._extremalPts[2]);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MinimumBoundingCircle;\n\t}\n});\nMinimumBoundingCircle.pointWitMinAngleWithX = function (pts, P) {\n\tvar minSin = Double.MAX_VALUE;\n\tvar minAngPt = null;\n\tfor (var i = 0; i < pts.length; i++) {\n\t\tvar p = pts[i];\n\t\tif (p === P) continue;\n\t\tvar dx = p.x - P.x;\n\t\tvar dy = p.y - P.y;\n\t\tif (dy < 0) dy = -dy;\n\t\tvar len = Math.sqrt(dx * dx + dy * dy);\n\t\tvar sin = dy / len;\n\t\tif (sin < minSin) {\n\t\t\tminSin = sin;\n\t\t\tminAngPt = p;\n\t\t}\n\t}\n\treturn minAngPt;\n};\nMinimumBoundingCircle.lowestPoint = function (pts) {\n\tvar min = pts[0];\n\tfor (var i = 1; i < pts.length; i++) {\n\t\tif (pts[i].y < min.y) min = pts[i];\n\t}\n\treturn min;\n};\nMinimumBoundingCircle.pointWithMinAngleWithSegment = function (pts, P, Q) {\n\tvar minAng = Double.MAX_VALUE;\n\tvar minAngPt = null;\n\tfor (var i = 0; i < pts.length; i++) {\n\t\tvar p = pts[i];\n\t\tif (p === P) continue;\n\t\tif (p === Q) continue;\n\t\tvar ang = Angle.angleBetween(P, p, Q);\n\t\tif (ang < minAng) {\n\t\t\tminAng = ang;\n\t\t\tminAngPt = p;\n\t\t}\n\t}\n\treturn minAngPt;\n};\n","import Coordinate from '../geom/Coordinate';\nimport Polygon from '../geom/Polygon';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nimport ConvexHull from './ConvexHull';\nexport default function MinimumDiameter() {\n\tthis._inputGeom = null;\n\tthis._isConvex = null;\n\tthis._convexHullPts = null;\n\tthis._minBaseSeg = new LineSegment();\n\tthis._minWidthPt = null;\n\tthis._minPtIndex = null;\n\tthis._minWidth = 0.0;\n\tif (arguments.length === 1) {\n\t\tlet inputGeom = arguments[0];\n\t\tMinimumDiameter.call(this, inputGeom, false);\n\t} else if (arguments.length === 2) {\n\t\tlet inputGeom = arguments[0], isConvex = arguments[1];\n\t\tthis._inputGeom = inputGeom;\n\t\tthis._isConvex = isConvex;\n\t}\n}\nextend(MinimumDiameter.prototype, {\n\tgetWidthCoordinate: function () {\n\t\tthis.computeMinimumDiameter();\n\t\treturn this._minWidthPt;\n\t},\n\tgetSupportingSegment: function () {\n\t\tthis.computeMinimumDiameter();\n\t\treturn this._inputGeom.getFactory().createLineString([this._minBaseSeg.p0, this._minBaseSeg.p1]);\n\t},\n\tgetDiameter: function () {\n\t\tthis.computeMinimumDiameter();\n\t\tif (this._minWidthPt === null) return this._inputGeom.getFactory().createLineString();\n\t\tvar basePt = this._minBaseSeg.project(this._minWidthPt);\n\t\treturn this._inputGeom.getFactory().createLineString([basePt, this._minWidthPt]);\n\t},\n\tcomputeWidthConvex: function (convexGeom) {\n\t\tif (convexGeom instanceof Polygon) this._convexHullPts = convexGeom.getExteriorRing().getCoordinates(); else this._convexHullPts = convexGeom.getCoordinates();\n\t\tif (this._convexHullPts.length === 0) {\n\t\t\tthis._minWidth = 0.0;\n\t\t\tthis._minWidthPt = null;\n\t\t\tthis._minBaseSeg = null;\n\t\t} else if (this._convexHullPts.length === 1) {\n\t\t\tthis._minWidth = 0.0;\n\t\t\tthis._minWidthPt = this._convexHullPts[0];\n\t\t\tthis._minBaseSeg.p0 = this._convexHullPts[0];\n\t\t\tthis._minBaseSeg.p1 = this._convexHullPts[0];\n\t\t} else if (this._convexHullPts.length === 2 || this._convexHullPts.length === 3) {\n\t\t\tthis._minWidth = 0.0;\n\t\t\tthis._minWidthPt = this._convexHullPts[0];\n\t\t\tthis._minBaseSeg.p0 = this._convexHullPts[0];\n\t\t\tthis._minBaseSeg.p1 = this._convexHullPts[1];\n\t\t} else this.computeConvexRingMinDiameter(this._convexHullPts);\n\t},\n\tcomputeConvexRingMinDiameter: function (pts) {\n\t\tthis._minWidth = Double.MAX_VALUE;\n\t\tvar currMaxIndex = 1;\n\t\tvar seg = new LineSegment();\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tseg.p0 = pts[i];\n\t\t\tseg.p1 = pts[i + 1];\n\t\t\tcurrMaxIndex = this.findMaxPerpDistance(pts, seg, currMaxIndex);\n\t\t}\n\t},\n\tcomputeMinimumDiameter: function () {\n\t\tif (this._minWidthPt !== null) return null;\n\t\tif (this._isConvex) this.computeWidthConvex(this._inputGeom); else {\n\t\t\tvar convexGeom = new ConvexHull(this._inputGeom).getConvexHull();\n\t\t\tthis.computeWidthConvex(convexGeom);\n\t\t}\n\t},\n\tgetLength: function () {\n\t\tthis.computeMinimumDiameter();\n\t\treturn this._minWidth;\n\t},\n\tfindMaxPerpDistance: function (pts, seg, startIndex) {\n\t\tvar maxPerpDistance = seg.distancePerpendicular(pts[startIndex]);\n\t\tvar nextPerpDistance = maxPerpDistance;\n\t\tvar maxIndex = startIndex;\n\t\tvar nextIndex = maxIndex;\n\t\twhile (nextPerpDistance >= maxPerpDistance) {\n\t\t\tmaxPerpDistance = nextPerpDistance;\n\t\t\tmaxIndex = nextIndex;\n\t\t\tnextIndex = MinimumDiameter.nextIndex(pts, maxIndex);\n\t\t\tnextPerpDistance = seg.distancePerpendicular(pts[nextIndex]);\n\t\t}\n\t\tif (maxPerpDistance < this._minWidth) {\n\t\t\tthis._minPtIndex = maxIndex;\n\t\t\tthis._minWidth = maxPerpDistance;\n\t\t\tthis._minWidthPt = pts[this._minPtIndex];\n\t\t\tthis._minBaseSeg = new LineSegment(seg);\n\t\t}\n\t\treturn maxIndex;\n\t},\n\tgetMinimumRectangle: function () {\n\t\tthis.computeMinimumDiameter();\n\t\tif (this._minWidth === 0.0) {\n\t\t\tif (this._minBaseSeg.p0.equals2D(this._minBaseSeg.p1)) {\n\t\t\t\treturn this._inputGeom.getFactory().createPoint(this._minBaseSeg.p0);\n\t\t\t}\n\t\t\treturn this._minBaseSeg.toGeometry(this._inputGeom.getFactory());\n\t\t}\n\t\tvar dx = this._minBaseSeg.p1.x - this._minBaseSeg.p0.x;\n\t\tvar dy = this._minBaseSeg.p1.y - this._minBaseSeg.p0.y;\n\t\tvar minPara = Double.MAX_VALUE;\n\t\tvar maxPara = -Double.MAX_VALUE;\n\t\tvar minPerp = Double.MAX_VALUE;\n\t\tvar maxPerp = -Double.MAX_VALUE;\n\t\tfor (var i = 0; i < this._convexHullPts.length; i++) {\n\t\t\tvar paraC = MinimumDiameter.computeC(dx, dy, this._convexHullPts[i]);\n\t\t\tif (paraC > maxPara) maxPara = paraC;\n\t\t\tif (paraC < minPara) minPara = paraC;\n\t\t\tvar perpC = MinimumDiameter.computeC(-dy, dx, this._convexHullPts[i]);\n\t\t\tif (perpC > maxPerp) maxPerp = perpC;\n\t\t\tif (perpC < minPerp) minPerp = perpC;\n\t\t}\n\t\tvar maxPerpLine = MinimumDiameter.computeSegmentForLine(-dx, -dy, maxPerp);\n\t\tvar minPerpLine = MinimumDiameter.computeSegmentForLine(-dx, -dy, minPerp);\n\t\tvar maxParaLine = MinimumDiameter.computeSegmentForLine(-dy, dx, maxPara);\n\t\tvar minParaLine = MinimumDiameter.computeSegmentForLine(-dy, dx, minPara);\n\t\tvar p0 = maxParaLine.lineIntersection(maxPerpLine);\n\t\tvar p1 = minParaLine.lineIntersection(maxPerpLine);\n\t\tvar p2 = minParaLine.lineIntersection(minPerpLine);\n\t\tvar p3 = maxParaLine.lineIntersection(minPerpLine);\n\t\tvar shell = this._inputGeom.getFactory().createLinearRing([p0, p1, p2, p3, p0]);\n\t\treturn this._inputGeom.getFactory().createPolygon(shell);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MinimumDiameter;\n\t}\n});\nMinimumDiameter.nextIndex = function (pts, index) {\n\tindex++;\n\tif (index >= pts.length) index = 0;\n\treturn index;\n};\nMinimumDiameter.computeC = function (a, b, p) {\n\treturn a * p.y - b * p.x;\n};\nMinimumDiameter.getMinimumDiameter = function (geom) {\n\treturn new MinimumDiameter(geom).getDiameter();\n};\nMinimumDiameter.getMinimumRectangle = function (geom) {\n\treturn new MinimumDiameter(geom).getMinimumRectangle();\n};\nMinimumDiameter.computeSegmentForLine = function (a, b, c) {\n\tvar p0 = null;\n\tvar p1 = null;\n\tif (Math.abs(b) > Math.abs(a)) {\n\t\tp0 = new Coordinate(0.0, c / b);\n\t\tp1 = new Coordinate(1.0, c / b - a / b);\n\t} else {\n\t\tp0 = new Coordinate(c / a, 0.0);\n\t\tp1 = new Coordinate(c / a - b / a, 1.0);\n\t}\n\treturn new LineSegment(p0, p1);\n};\n","import LineString from '../LineString';\nimport GeometryFactory from '../GeometryFactory';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Point from '../Point';\nimport Polygon from '../Polygon';\nimport MultiPoint from '../MultiPoint';\nimport LinearRing from '../LinearRing';\nimport extend from '../../../../../extend';\nimport MultiPolygon from '../MultiPolygon';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport MultiLineString from '../MultiLineString';\nexport default function GeometryTransformer() {\n\tthis._inputGeom = null;\n\tthis._factory = null;\n\tthis._pruneEmptyGeometry = true;\n\tthis._preserveGeometryCollectionType = true;\n\tthis._preserveCollections = false;\n\tthis._preserveType = false;\n}\nextend(GeometryTransformer.prototype, {\n\ttransformPoint: function (geom, parent) {\n\t\treturn this._factory.createPoint(this.transformCoordinates(geom.getCoordinateSequence(), geom));\n\t},\n\ttransformPolygon: function (geom, parent) {\n\t\tvar isAllValidLinearRings = true;\n\t\tvar shell = this.transformLinearRing(geom.getExteriorRing(), geom);\n\t\tif (shell === null || !(shell instanceof LinearRing) || shell.isEmpty()) isAllValidLinearRings = false;\n\t\tvar holes = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumInteriorRing(); i++) {\n\t\t\tvar hole = this.transformLinearRing(geom.getInteriorRingN(i), geom);\n\t\t\tif (hole === null || hole.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(hole instanceof LinearRing)) isAllValidLinearRings = false;\n\t\t\tholes.add(hole);\n\t\t}\n\t\tif (isAllValidLinearRings) return this._factory.createPolygon(shell, holes.toArray([])); else {\n\t\t\tvar components = new ArrayList();\n\t\t\tif (shell !== null) components.add(shell);\n\t\t\tcomponents.addAll(holes);\n\t\t\treturn this._factory.buildGeometry(components);\n\t\t}\n\t},\n\tcreateCoordinateSequence: function (coords) {\n\t\treturn this._factory.getCoordinateSequenceFactory().create(coords);\n\t},\n\tgetInputGeometry: function () {\n\t\treturn this._inputGeom;\n\t},\n\ttransformMultiLineString: function (geom, parent) {\n\t\tvar transGeomList = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar transformGeom = this.transformLineString(geom.getGeometryN(i), geom);\n\t\t\tif (transformGeom === null) continue;\n\t\t\tif (transformGeom.isEmpty()) continue;\n\t\t\ttransGeomList.add(transformGeom);\n\t\t}\n\t\treturn this._factory.buildGeometry(transGeomList);\n\t},\n\ttransformCoordinates: function (coords, parent) {\n\t\treturn this.copy(coords);\n\t},\n\ttransformLineString: function (geom, parent) {\n\t\treturn this._factory.createLineString(this.transformCoordinates(geom.getCoordinateSequence(), geom));\n\t},\n\ttransformMultiPoint: function (geom, parent) {\n\t\tvar transGeomList = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar transformGeom = this.transformPoint(geom.getGeometryN(i), geom);\n\t\t\tif (transformGeom === null) continue;\n\t\t\tif (transformGeom.isEmpty()) continue;\n\t\t\ttransGeomList.add(transformGeom);\n\t\t}\n\t\treturn this._factory.buildGeometry(transGeomList);\n\t},\n\ttransformMultiPolygon: function (geom, parent) {\n\t\tvar transGeomList = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar transformGeom = this.transformPolygon(geom.getGeometryN(i), geom);\n\t\t\tif (transformGeom === null) continue;\n\t\t\tif (transformGeom.isEmpty()) continue;\n\t\t\ttransGeomList.add(transformGeom);\n\t\t}\n\t\treturn this._factory.buildGeometry(transGeomList);\n\t},\n\tcopy: function (seq) {\n\t\treturn seq.copy();\n\t},\n\ttransformGeometryCollection: function (geom, parent) {\n\t\tvar transGeomList = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar transformGeom = this.transform(geom.getGeometryN(i));\n\t\t\tif (transformGeom === null) continue;\n\t\t\tif (this._pruneEmptyGeometry && transformGeom.isEmpty()) continue;\n\t\t\ttransGeomList.add(transformGeom);\n\t\t}\n\t\tif (this._preserveGeometryCollectionType) return this._factory.createGeometryCollection(GeometryFactory.toGeometryArray(transGeomList));\n\t\treturn this._factory.buildGeometry(transGeomList);\n\t},\n\ttransform: function (inputGeom) {\n\t\tthis._inputGeom = inputGeom;\n\t\tthis._factory = inputGeom.getFactory();\n\t\tif (inputGeom instanceof Point) return this.transformPoint(inputGeom, null);\n\t\tif (inputGeom instanceof MultiPoint) return this.transformMultiPoint(inputGeom, null);\n\t\tif (inputGeom instanceof LinearRing) return this.transformLinearRing(inputGeom, null);\n\t\tif (inputGeom instanceof LineString) return this.transformLineString(inputGeom, null);\n\t\tif (inputGeom instanceof MultiLineString) return this.transformMultiLineString(inputGeom, null);\n\t\tif (inputGeom instanceof Polygon) return this.transformPolygon(inputGeom, null);\n\t\tif (inputGeom instanceof MultiPolygon) return this.transformMultiPolygon(inputGeom, null);\n\t\tif (inputGeom instanceof GeometryCollection) return this.transformGeometryCollection(inputGeom, null);\n\t\tthrow new IllegalArgumentException(\"Unknown Geometry subtype: \" + inputGeom.getClass().getName());\n\t},\n\ttransformLinearRing: function (geom, parent) {\n\t\tvar seq = this.transformCoordinates(geom.getCoordinateSequence(), geom);\n\t\tif (seq === null) return this._factory.createLinearRing(null);\n\t\tvar seqSize = seq.size();\n\t\tif (seqSize > 0 && seqSize < 4 && !this._preserveType) return this._factory.createLineString(seq);\n\t\treturn this._factory.createLinearRing(seq);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryTransformer;\n\t}\n});\n","import LineString from '../geom/LineString';\nimport CoordinateList from '../geom/CoordinateList';\nimport GeometryTransformer from '../geom/util/GeometryTransformer';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport MultiPolygon from '../geom/MultiPolygon';\nimport LineSegment from '../geom/LineSegment';\nimport inherits from '../../../../inherits';\nexport default function Densifier() {\n\tthis._inputGeom = null;\n\tthis._distanceTolerance = null;\n\tlet inputGeom = arguments[0];\n\tthis._inputGeom = inputGeom;\n}\nextend(Densifier.prototype, {\n\tgetResultGeometry: function () {\n\t\treturn new DensifyTransformer(this._distanceTolerance).transform(this._inputGeom);\n\t},\n\tsetDistanceTolerance: function (distanceTolerance) {\n\t\tif (distanceTolerance <= 0.0) throw new IllegalArgumentException(\"Tolerance must be positive\");\n\t\tthis._distanceTolerance = distanceTolerance;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Densifier;\n\t}\n});\nDensifier.densifyPoints = function (pts, distanceTolerance, precModel) {\n\tvar seg = new LineSegment();\n\tvar coordList = new CoordinateList();\n\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\tseg.p0 = pts[i];\n\t\tseg.p1 = pts[i + 1];\n\t\tcoordList.add(seg.p0, false);\n\t\tvar len = seg.getLength();\n\t\tvar densifiedSegCount = Math.trunc(len / distanceTolerance) + 1;\n\t\tif (densifiedSegCount > 1) {\n\t\t\tvar densifiedSegLen = len / densifiedSegCount;\n\t\t\tfor (var j = 1; j < densifiedSegCount; j++) {\n\t\t\t\tvar segFract = j * densifiedSegLen / len;\n\t\t\t\tvar p = seg.pointAlong(segFract);\n\t\t\t\tprecModel.makePrecise(p);\n\t\t\t\tcoordList.add(p, false);\n\t\t\t}\n\t\t}\n\t}\n\tcoordList.add(pts[pts.length - 1], false);\n\treturn coordList.toCoordinateArray();\n};\nDensifier.densify = function (geom, distanceTolerance) {\n\tvar densifier = new Densifier(geom);\n\tdensifier.setDistanceTolerance(distanceTolerance);\n\treturn densifier.getResultGeometry();\n};\nfunction DensifyTransformer() {\n\tGeometryTransformer.apply(this);\n\tthis.distanceTolerance = null;\n\tlet distanceTolerance = arguments[0];\n\tthis.distanceTolerance = distanceTolerance;\n}\ninherits(DensifyTransformer, GeometryTransformer);\nextend(DensifyTransformer.prototype, {\n\ttransformMultiPolygon: function (geom, parent) {\n\t\tvar roughGeom = GeometryTransformer.prototype.transformMultiPolygon.call(this, geom, parent);\n\t\treturn this.createValidArea(roughGeom);\n\t},\n\ttransformPolygon: function (geom, parent) {\n\t\tvar roughGeom = GeometryTransformer.prototype.transformPolygon.call(this, geom, parent);\n\t\tif (parent instanceof MultiPolygon) {\n\t\t\treturn roughGeom;\n\t\t}\n\t\treturn this.createValidArea(roughGeom);\n\t},\n\ttransformCoordinates: function (coords, parent) {\n\t\tvar inputPts = coords.toCoordinateArray();\n\t\tvar newPts = Densifier.densifyPoints(inputPts, this.distanceTolerance, parent.getPrecisionModel());\n\t\tif (parent instanceof LineString && newPts.length === 1) {\n\t\t\tnewPts = new Array(0).fill(null);\n\t\t}\n\t\treturn this._factory.getCoordinateSequenceFactory().create(newPts);\n\t},\n\tcreateValidArea: function (roughAreaGeom) {\n\t\treturn roughAreaGeom.buffer(0.0);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DensifyTransformer;\n\t}\n});\nDensifier.DensifyTransformer = DensifyTransformer;\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport Orientation from '../algorithm/Orientation';\nimport Quadrant from '../geomgraph/Quadrant';\nimport Assert from '../util/Assert';\nexport default function HalfEdge() {\n\tthis._orig = null;\n\tthis._sym = null;\n\tthis._next = null;\n\tlet orig = arguments[0];\n\tthis._orig = orig;\n}\nextend(HalfEdge.prototype, {\n\tfind: function (dest) {\n\t\tvar oNext = this;\n\t\tdo {\n\t\t\tif (oNext === null) return null;\n\t\t\tif (oNext.dest().equals2D(dest)) return oNext;\n\t\t\toNext = oNext.oNext();\n\t\t} while (oNext !== this);\n\t\treturn null;\n\t},\n\tdest: function () {\n\t\treturn this._sym._orig;\n\t},\n\toNext: function () {\n\t\treturn this._sym._next;\n\t},\n\tinsert: function (e) {\n\t\tif (this.oNext() === this) {\n\t\t\tthis.insertAfter(e);\n\t\t\treturn null;\n\t\t}\n\t\tvar ecmp = this.compareTo(e);\n\t\tvar ePrev = this;\n\t\tdo {\n\t\t\tvar oNext = ePrev.oNext();\n\t\t\tvar cmp = oNext.compareTo(e);\n\t\t\tif (cmp !== ecmp || oNext === this) {\n\t\t\t\tePrev.insertAfter(e);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tePrev = oNext;\n\t\t} while (ePrev !== this);\n\t\tAssert.shouldNeverReachHere();\n\t},\n\tinsertAfter: function (e) {\n\t\tAssert.equals(this._orig, e.orig());\n\t\tvar save = this.oNext();\n\t\tthis._sym.setNext(e);\n\t\te.sym().setNext(save);\n\t},\n\tdegree: function () {\n\t\tvar degree = 0;\n\t\tvar e = this;\n\t\tdo {\n\t\t\tdegree++;\n\t\t\te = e.oNext();\n\t\t} while (e !== this);\n\t\treturn degree;\n\t},\n\tequals: function () {\n\t\tif (arguments.length === 2 && (arguments[1] instanceof Coordinate && arguments[0] instanceof Coordinate)) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\treturn this._orig.equals2D(p0) && this._sym._orig.equals(p1);\n\t\t}\n\t},\n\tdeltaY: function () {\n\t\treturn this._sym._orig.y - this._orig.y;\n\t},\n\tsym: function () {\n\t\treturn this._sym;\n\t},\n\tprev: function () {\n\t\treturn this._sym.next()._sym;\n\t},\n\tcompareAngularDirection: function (e) {\n\t\tvar dx = this.deltaX();\n\t\tvar dy = this.deltaY();\n\t\tvar dx2 = e.deltaX();\n\t\tvar dy2 = e.deltaY();\n\t\tif (dx === dx2 && dy === dy2) return 0;\n\t\tvar quadrant = Quadrant.quadrant(dx, dy);\n\t\tvar quadrant2 = Quadrant.quadrant(dx2, dy2);\n\t\tif (quadrant > quadrant2) return 1;\n\t\tif (quadrant < quadrant2) return -1;\n\t\treturn Orientation.index(e._orig, e.dest(), this.dest());\n\t},\n\tprevNode: function () {\n\t\tvar e = this;\n\t\twhile (e.degree() === 2) {\n\t\t\te = e.prev();\n\t\t\tif (e === this) return null;\n\t\t}\n\t\treturn e;\n\t},\n\tcompareTo: function (obj) {\n\t\tvar e = obj;\n\t\tvar comp = this.compareAngularDirection(e);\n\t\treturn comp;\n\t},\n\tnext: function () {\n\t\treturn this._next;\n\t},\n\tsetSym: function (e) {\n\t\tthis._sym = e;\n\t},\n\torig: function () {\n\t\treturn this._orig;\n\t},\n\ttoString: function () {\n\t\treturn \"HE(\" + this._orig.x + \" \" + this._orig.y + \", \" + this._sym._orig.x + \" \" + this._sym._orig.y + \")\";\n\t},\n\tsetNext: function (e) {\n\t\tthis._next = e;\n\t},\n\tinit: function (e) {\n\t\tthis.setSym(e);\n\t\te.setSym(this);\n\t\tthis.setNext(e);\n\t\te.setNext(this);\n\t},\n\tdeltaX: function () {\n\t\treturn this._sym._orig.x - this._orig.x;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn HalfEdge;\n\t}\n});\nHalfEdge.init = function (e0, e1) {\n\tif (e0._sym !== null || e1._sym !== null || e0._next !== null || e1._next !== null) throw new IllegalStateException(\"Edges are already initialized\");\n\te0.init(e1);\n\treturn e0;\n};\nHalfEdge.create = function (p0, p1) {\n\tvar e0 = new HalfEdge(p0);\n\tvar e1 = new HalfEdge(p1);\n\te0.init(e1);\n\treturn e0;\n};\n","import extend from '../../../../extend';\nimport HalfEdge from './HalfEdge';\nimport inherits from '../../../../inherits';\nexport default function MarkHalfEdge() {\n\tthis._isMarked = false;\n\tlet orig = arguments[0];\n\tHalfEdge.call(this, orig);\n}\ninherits(MarkHalfEdge, HalfEdge);\nextend(MarkHalfEdge.prototype, {\n\tmark: function () {\n\t\tthis._isMarked = true;\n\t},\n\tsetMark: function (isMarked) {\n\t\tthis._isMarked = isMarked;\n\t},\n\tisMarked: function () {\n\t\treturn this._isMarked;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MarkHalfEdge;\n\t}\n});\nMarkHalfEdge.setMarkBoth = function (e, isMarked) {\n\te.setMark(isMarked);\n\te.sym().setMark(isMarked);\n};\nMarkHalfEdge.isMarked = function (e) {\n\treturn e.isMarked();\n};\nMarkHalfEdge.setMark = function (e, isMarked) {\n\te.setMark(isMarked);\n};\nMarkHalfEdge.markBoth = function (e) {\n\te.mark();\n\te.sym().mark();\n};\nMarkHalfEdge.mark = function (e) {\n\te.mark();\n};\n","import HashMap from '../../../../java/util/HashMap';\nimport extend from '../../../../extend';\nimport HalfEdge from './HalfEdge';\nexport default function EdgeGraph() {\n\tthis._vertexMap = new HashMap();\n}\nextend(EdgeGraph.prototype, {\n\tinsert: function (orig, dest, eAdj) {\n\t\tvar e = this.create(orig, dest);\n\t\tif (eAdj !== null) {\n\t\t\teAdj.insert(e);\n\t\t} else {\n\t\t\tthis._vertexMap.put(orig, e);\n\t\t}\n\t\tvar eAdjDest = this._vertexMap.get(dest);\n\t\tif (eAdjDest !== null) {\n\t\t\teAdjDest.insert(e.sym());\n\t\t} else {\n\t\t\tthis._vertexMap.put(dest, e.sym());\n\t\t}\n\t\treturn e;\n\t},\n\tcreate: function (p0, p1) {\n\t\tvar e0 = this.createEdge(p0);\n\t\tvar e1 = this.createEdge(p1);\n\t\tHalfEdge.init(e0, e1);\n\t\treturn e0;\n\t},\n\tcreateEdge: function (orig) {\n\t\treturn new HalfEdge(orig);\n\t},\n\taddEdge: function (orig, dest) {\n\t\tif (!EdgeGraph.isValidEdge(orig, dest)) return null;\n\t\tvar eAdj = this._vertexMap.get(orig);\n\t\tvar eSame = null;\n\t\tif (eAdj !== null) {\n\t\t\teSame = eAdj.find(dest);\n\t\t}\n\t\tif (eSame !== null) {\n\t\t\treturn eSame;\n\t\t}\n\t\tvar e = this.insert(orig, dest, eAdj);\n\t\treturn e;\n\t},\n\tgetVertexEdges: function () {\n\t\treturn this._vertexMap.values();\n\t},\n\tfindEdge: function (orig, dest) {\n\t\tvar e = this._vertexMap.get(orig);\n\t\tif (e === null) return null;\n\t\treturn e.find(dest);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeGraph;\n\t}\n});\nEdgeGraph.isValidEdge = function (orig, dest) {\n\tvar cmp = dest.compareTo(orig);\n\treturn cmp !== 0;\n};\n","import extend from '../../../../extend';\nimport MarkHalfEdge from '../edgegraph/MarkHalfEdge';\nimport inherits from '../../../../inherits';\nexport default function DissolveHalfEdge() {\n\tthis._isStart = false;\n\tlet orig = arguments[0];\n\tMarkHalfEdge.call(this, orig);\n}\ninherits(DissolveHalfEdge, MarkHalfEdge);\nextend(DissolveHalfEdge.prototype, {\n\tsetStart: function () {\n\t\tthis._isStart = true;\n\t},\n\tisStart: function () {\n\t\treturn this._isStart;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DissolveHalfEdge;\n\t}\n});\n","import EdgeGraph from '../edgegraph/EdgeGraph';\nimport extend from '../../../../extend';\nimport DissolveHalfEdge from './DissolveHalfEdge';\nimport inherits from '../../../../inherits';\nexport default function DissolveEdgeGraph() {\n\tEdgeGraph.apply(this);\n}\ninherits(DissolveEdgeGraph, EdgeGraph);\nextend(DissolveEdgeGraph.prototype, {\n\tcreateEdge: function (p0) {\n\t\treturn new DissolveHalfEdge(p0);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DissolveEdgeGraph;\n\t}\n});\n","import LineString from '../geom/LineString';\nimport CoordinateList from '../geom/CoordinateList';\nimport Geometry from '../geom/Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport Collection from '../../../../java/util/Collection';\nimport Stack from '../../../../java/util/Stack';\nimport extend from '../../../../extend';\nimport MarkHalfEdge from '../edgegraph/MarkHalfEdge';\nimport DissolveEdgeGraph from './DissolveEdgeGraph';\nimport GeometryComponentFilter from '../geom/GeometryComponentFilter';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function LineDissolver() {\n\tthis._result = null;\n\tthis._factory = null;\n\tthis._graph = null;\n\tthis._lines = new ArrayList();\n\tthis._nodeEdgeStack = new Stack();\n\tthis._ringStartEdge = null;\n\tthis._graph = new DissolveEdgeGraph();\n}\nextend(LineDissolver.prototype, {\n\taddLine: function (line) {\n\t\tthis._lines.add(this._factory.createLineString(line.toCoordinateArray()));\n\t},\n\tupdateRingStartEdge: function (e) {\n\t\tif (!e.isStart()) {\n\t\t\te = e.sym();\n\t\t\tif (!e.isStart()) return null;\n\t\t}\n\t\tif (this._ringStartEdge === null) {\n\t\t\tthis._ringStartEdge = e;\n\t\t\treturn null;\n\t\t}\n\t\tif (e.orig().compareTo(this._ringStartEdge.orig()) < 0) {\n\t\t\tthis._ringStartEdge = e;\n\t\t}\n\t},\n\tgetResult: function () {\n\t\tif (this._result === null) this.computeResult();\n\t\treturn this._result;\n\t},\n\tprocess: function (e) {\n\t\tvar eNode = e.prevNode();\n\t\tif (eNode === null) eNode = e;\n\t\tthis.stackEdges(eNode);\n\t\tthis.buildLines();\n\t},\n\tbuildRing: function (eStartRing) {\n\t\tvar line = new CoordinateList();\n\t\tvar e = eStartRing;\n\t\tline.add(e.orig().copy(), false);\n\t\twhile (e.sym().degree() === 2) {\n\t\t\tvar eNext = e.next();\n\t\t\tif (eNext === eStartRing) break;\n\t\t\tline.add(eNext.orig().copy(), false);\n\t\t\te = eNext;\n\t\t}\n\t\tline.add(e.dest().copy(), false);\n\t\tthis.addLine(line);\n\t},\n\tbuildLine: function (eStart) {\n\t\tvar line = new CoordinateList();\n\t\tvar e = eStart;\n\t\tthis._ringStartEdge = null;\n\t\tMarkHalfEdge.markBoth(e);\n\t\tline.add(e.orig().copy(), false);\n\t\twhile (e.sym().degree() === 2) {\n\t\t\tthis.updateRingStartEdge(e);\n\t\t\tvar eNext = e.next();\n\t\t\tif (eNext === eStart) {\n\t\t\t\tthis.buildRing(this._ringStartEdge);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tline.add(eNext.orig().copy(), false);\n\t\t\te = eNext;\n\t\t\tMarkHalfEdge.markBoth(e);\n\t\t}\n\t\tline.add(e.dest().clone(), false);\n\t\tthis.stackEdges(e.sym());\n\t\tthis.addLine(line);\n\t},\n\tstackEdges: function (node) {\n\t\tvar e = node;\n\t\tdo {\n\t\t\tif (!MarkHalfEdge.isMarked(e)) this._nodeEdgeStack.add(e);\n\t\t\te = e.oNext();\n\t\t} while (e !== node);\n\t},\n\tcomputeResult: function () {\n\t\tvar edges = this._graph.getVertexEdges();\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tif (MarkHalfEdge.isMarked(e)) continue;\n\t\t\tthis.process(e);\n\t\t}\n\t\tthis._result = this._factory.buildGeometry(this._lines);\n\t},\n\tbuildLines: function () {\n\t\twhile (!this._nodeEdgeStack.empty()) {\n\t\t\tvar e = this._nodeEdgeStack.pop();\n\t\t\tif (MarkHalfEdge.isMarked(e)) continue;\n\t\t\tthis.buildLine(e);\n\t\t}\n\t},\n\tadd: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geometry = arguments[0];\n\t\t\tgeometry.apply({\n\t\t\t\tinterfaces_: function () {\n\t\t\t\t\treturn [GeometryComponentFilter];\n\t\t\t\t},\n\t\t\t\tfilter: function (component) {\n\t\t\t\t\tif (component instanceof LineString) {\n\t\t\t\t\t\tthis.add(component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geometries = arguments[0];\n\t\t\tfor (var i = geometries.iterator(); i.hasNext(); ) {\n\t\t\t\tvar geometry = i.next();\n\t\t\t\tthis.add(geometry);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof LineString) {\n\t\t\tlet lineString = arguments[0];\n\t\t\tif (this._factory === null) {\n\t\t\t\tthis._factory = lineString.getFactory();\n\t\t\t}\n\t\t\tvar seq = lineString.getCoordinateSequence();\n\t\t\tvar doneStart = false;\n\t\t\tfor (var i = 1; i < seq.size(); i++) {\n\t\t\t\tvar e = this._graph.addEdge(seq.getCoordinate(i - 1), seq.getCoordinate(i));\n\t\t\t\tif (e === null) continue;\n\t\t\t\tif (!doneStart) {\n\t\t\t\t\te.setStart();\n\t\t\t\t\tdoneStart = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineDissolver;\n\t}\n});\nLineDissolver.dissolve = function (g) {\n\tvar d = new LineDissolver();\n\td.add(g);\n\treturn d.getResult();\n};\n","import Location from '../geom/Location';\nimport LineString from '../geom/LineString';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Point from '../geom/Point';\nimport Polygon from '../geom/Polygon';\nimport PointLocation from './PointLocation';\nimport BoundaryNodeRule from './BoundaryNodeRule';\nimport extend from '../../../../extend';\nimport MultiPolygon from '../geom/MultiPolygon';\nimport GeometryCollectionIterator from '../geom/GeometryCollectionIterator';\nimport GeometryCollection from '../geom/GeometryCollection';\nimport MultiLineString from '../geom/MultiLineString';\nexport default function PointLocator() {\n\tthis._boundaryRule = BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE;\n\tthis._isIn = null;\n\tthis._numBoundaries = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet boundaryRule = arguments[0];\n\t\tif (boundaryRule === null) throw new IllegalArgumentException(\"Rule must be non-null\");\n\t\tthis._boundaryRule = boundaryRule;\n\t}\n}\nextend(PointLocator.prototype, {\n\tlocateInPolygonRing: function (p, ring) {\n\t\tif (!ring.getEnvelopeInternal().intersects(p)) return Location.EXTERIOR;\n\t\treturn PointLocation.locateInRing(p, ring.getCoordinates());\n\t},\n\tintersects: function (p, geom) {\n\t\treturn this.locate(p, geom) !== Location.EXTERIOR;\n\t},\n\tupdateLocationInfo: function (loc) {\n\t\tif (loc === Location.INTERIOR) this._isIn = true;\n\t\tif (loc === Location.BOUNDARY) this._numBoundaries++;\n\t},\n\tcomputeLocation: function (p, geom) {\n\t\tif (geom instanceof Point) {\n\t\t\tthis.updateLocationInfo(this.locateOnPoint(p, geom));\n\t\t}\n\t\tif (geom instanceof LineString) {\n\t\t\tthis.updateLocationInfo(this.locateOnLineString(p, geom));\n\t\t} else if (geom instanceof Polygon) {\n\t\t\tthis.updateLocationInfo(this.locateInPolygon(p, geom));\n\t\t} else if (geom instanceof MultiLineString) {\n\t\t\tvar ml = geom;\n\t\t\tfor (var i = 0; i < ml.getNumGeometries(); i++) {\n\t\t\t\tvar l = ml.getGeometryN(i);\n\t\t\t\tthis.updateLocationInfo(this.locateOnLineString(p, l));\n\t\t\t}\n\t\t} else if (geom instanceof MultiPolygon) {\n\t\t\tvar mpoly = geom;\n\t\t\tfor (var i = 0; i < mpoly.getNumGeometries(); i++) {\n\t\t\t\tvar poly = mpoly.getGeometryN(i);\n\t\t\t\tthis.updateLocationInfo(this.locateInPolygon(p, poly));\n\t\t\t}\n\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\tvar geomi = new GeometryCollectionIterator(geom);\n\t\t\twhile (geomi.hasNext()) {\n\t\t\t\tvar g2 = geomi.next();\n\t\t\t\tif (g2 !== geom) this.computeLocation(p, g2);\n\t\t\t}\n\t\t}\n\t},\n\tlocateOnPoint: function (p, pt) {\n\t\tvar ptCoord = pt.getCoordinate();\n\t\tif (ptCoord.equals2D(p)) return Location.INTERIOR;\n\t\treturn Location.EXTERIOR;\n\t},\n\tlocateOnLineString: function (p, l) {\n\t\tif (!l.getEnvelopeInternal().intersects(p)) return Location.EXTERIOR;\n\t\tvar seq = l.getCoordinateSequence();\n\t\tif (!l.isClosed()) {\n\t\t\tif (p.equals(seq.getCoordinate(0)) || p.equals(seq.getCoordinate(seq.size() - 1))) {\n\t\t\t\treturn Location.BOUNDARY;\n\t\t\t}\n\t\t}\n\t\tif (PointLocation.isOnLine(p, seq)) {\n\t\t\treturn Location.INTERIOR;\n\t\t}\n\t\treturn Location.EXTERIOR;\n\t},\n\tlocateInPolygon: function (p, poly) {\n\t\tif (poly.isEmpty()) return Location.EXTERIOR;\n\t\tvar shell = poly.getExteriorRing();\n\t\tvar shellLoc = this.locateInPolygonRing(p, shell);\n\t\tif (shellLoc === Location.EXTERIOR) return Location.EXTERIOR;\n\t\tif (shellLoc === Location.BOUNDARY) return Location.BOUNDARY;\n\t\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\t\tvar hole = poly.getInteriorRingN(i);\n\t\t\tvar holeLoc = this.locateInPolygonRing(p, hole);\n\t\t\tif (holeLoc === Location.INTERIOR) return Location.EXTERIOR;\n\t\t\tif (holeLoc === Location.BOUNDARY) return Location.BOUNDARY;\n\t\t}\n\t\treturn Location.INTERIOR;\n\t},\n\tlocate: function (p, geom) {\n\t\tif (geom.isEmpty()) return Location.EXTERIOR;\n\t\tif (geom instanceof LineString) {\n\t\t\treturn this.locateOnLineString(p, geom);\n\t\t} else if (geom instanceof Polygon) {\n\t\t\treturn this.locateInPolygon(p, geom);\n\t\t}\n\t\tthis._isIn = false;\n\t\tthis._numBoundaries = 0;\n\t\tthis.computeLocation(p, geom);\n\t\tif (this._boundaryRule.isInBoundary(this._numBoundaries)) return Location.BOUNDARY;\n\t\tif (this._numBoundaries > 0 || this._isIn) return Location.INTERIOR;\n\t\treturn Location.EXTERIOR;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PointLocator;\n\t}\n});\n","import extend from '../../../../extend';\nexport default function Position() {}\nextend(Position.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Position;\n\t}\n});\nPosition.opposite = function (position) {\n\tif (position === Position.LEFT) return Position.RIGHT;\n\tif (position === Position.RIGHT) return Position.LEFT;\n\treturn position;\n};\nPosition.ON = 0;\nPosition.LEFT = 1;\nPosition.RIGHT = 2;\n","import extend from '../../../../../extend';\nexport default function MonotoneChain() {\n\tthis.mce = null;\n\tthis.chainIndex = null;\n\tlet mce = arguments[0], chainIndex = arguments[1];\n\tthis.mce = mce;\n\tthis.chainIndex = chainIndex;\n}\nextend(MonotoneChain.prototype, {\n\tcomputeIntersections: function (mc, si) {\n\t\tthis.mce.computeIntersectsForChain(this.chainIndex, mc.mce, mc.chainIndex, si);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MonotoneChain;\n\t}\n});\n","import extend from '../../../../../extend';\nimport Comparable from '../../../../../java/lang/Comparable';\nexport default function SweepLineEvent() {\n\tthis._label = null;\n\tthis._xValue = null;\n\tthis._eventType = null;\n\tthis._insertEvent = null;\n\tthis._deleteEventIndex = null;\n\tthis._obj = null;\n\tif (arguments.length === 2) {\n\t\tlet x = arguments[0], insertEvent = arguments[1];\n\t\tthis._eventType = SweepLineEvent.DELETE;\n\t\tthis._xValue = x;\n\t\tthis._insertEvent = insertEvent;\n\t} else if (arguments.length === 3) {\n\t\tlet label = arguments[0], x = arguments[1], obj = arguments[2];\n\t\tthis._eventType = SweepLineEvent.INSERT;\n\t\tthis._label = label;\n\t\tthis._xValue = x;\n\t\tthis._obj = obj;\n\t}\n}\nextend(SweepLineEvent.prototype, {\n\tisDelete: function () {\n\t\treturn this._eventType === SweepLineEvent.DELETE;\n\t},\n\tsetDeleteEventIndex: function (deleteEventIndex) {\n\t\tthis._deleteEventIndex = deleteEventIndex;\n\t},\n\tgetObject: function () {\n\t\treturn this._obj;\n\t},\n\tcompareTo: function (o) {\n\t\tvar pe = o;\n\t\tif (this._xValue < pe._xValue) return -1;\n\t\tif (this._xValue > pe._xValue) return 1;\n\t\tif (this._eventType < pe._eventType) return -1;\n\t\tif (this._eventType > pe._eventType) return 1;\n\t\treturn 0;\n\t},\n\tgetInsertEvent: function () {\n\t\treturn this._insertEvent;\n\t},\n\tisInsert: function () {\n\t\treturn this._eventType === SweepLineEvent.INSERT;\n\t},\n\tisSameLabel: function (ev) {\n\t\tif (this._label === null) return false;\n\t\treturn this._label === ev._label;\n\t},\n\tgetDeleteEventIndex: function () {\n\t\treturn this._deleteEventIndex;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn SweepLineEvent;\n\t}\n});\nSweepLineEvent.INSERT = 1;\nSweepLineEvent.DELETE = 2;\n","import extend from '../../../../../extend';\nexport default function EdgeSetIntersector() {}\nextend(EdgeSetIntersector.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeSetIntersector;\n\t}\n});\n","import extend from '../../../../../extend';\nexport default function SegmentIntersector() {\n\tthis._hasIntersection = false;\n\tthis._hasProper = false;\n\tthis._hasProperInterior = false;\n\tthis._properIntersectionPoint = null;\n\tthis._li = null;\n\tthis._includeProper = null;\n\tthis._recordIsolated = null;\n\tthis._isSelfIntersection = null;\n\tthis._numIntersections = 0;\n\tthis.numTests = 0;\n\tthis._bdyNodes = null;\n\tthis._isDone = false;\n\tthis._isDoneWhenProperInt = false;\n\tlet li = arguments[0], includeProper = arguments[1], recordIsolated = arguments[2];\n\tthis._li = li;\n\tthis._includeProper = includeProper;\n\tthis._recordIsolated = recordIsolated;\n}\nextend(SegmentIntersector.prototype, {\n\tisTrivialIntersection: function (e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1) {\n\t\t\tif (this._li.getIntersectionNum() === 1) {\n\t\t\t\tif (SegmentIntersector.isAdjacentSegments(segIndex0, segIndex1)) return true;\n\t\t\t\tif (e0.isClosed()) {\n\t\t\t\t\tvar maxSegIndex = e0.getNumPoints() - 1;\n\t\t\t\t\tif (segIndex0 === 0 && segIndex1 === maxSegIndex || segIndex1 === 0 && segIndex0 === maxSegIndex) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetProperIntersectionPoint: function () {\n\t\treturn this._properIntersectionPoint;\n\t},\n\tsetIsDoneIfProperInt: function (isDoneWhenProperInt) {\n\t\tthis._isDoneWhenProperInt = isDoneWhenProperInt;\n\t},\n\thasProperInteriorIntersection: function () {\n\t\treturn this._hasProperInterior;\n\t},\n\tisBoundaryPointInternal: function (li, bdyNodes) {\n\t\tfor (var i = bdyNodes.iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tvar pt = node.getCoordinate();\n\t\t\tif (li.isIntersection(pt)) return true;\n\t\t}\n\t\treturn false;\n\t},\n\thasProperIntersection: function () {\n\t\treturn this._hasProper;\n\t},\n\thasIntersection: function () {\n\t\treturn this._hasIntersection;\n\t},\n\tisDone: function () {\n\t\treturn this._isDone;\n\t},\n\tisBoundaryPoint: function (li, bdyNodes) {\n\t\tif (bdyNodes === null) return false;\n\t\tif (this.isBoundaryPointInternal(li, bdyNodes[0])) return true;\n\t\tif (this.isBoundaryPointInternal(li, bdyNodes[1])) return true;\n\t\treturn false;\n\t},\n\tsetBoundaryNodes: function (bdyNodes0, bdyNodes1) {\n\t\tthis._bdyNodes = new Array(2).fill(null);\n\t\tthis._bdyNodes[0] = bdyNodes0;\n\t\tthis._bdyNodes[1] = bdyNodes1;\n\t},\n\taddIntersections: function (e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\tthis.numTests++;\n\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tif (this._recordIsolated) {\n\t\t\t\te0.setIsolated(false);\n\t\t\t\te1.setIsolated(false);\n\t\t\t}\n\t\t\tthis._numIntersections++;\n\t\t\tif (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n\t\t\t\tthis._hasIntersection = true;\n\t\t\t\tif (this._includeProper || !this._li.isProper()) {\n\t\t\t\t\te0.addIntersections(this._li, segIndex0, 0);\n\t\t\t\t\te1.addIntersections(this._li, segIndex1, 1);\n\t\t\t\t}\n\t\t\t\tif (this._li.isProper()) {\n\t\t\t\t\tthis._properIntersectionPoint = this._li.getIntersection(0).copy();\n\t\t\t\t\tthis._hasProper = true;\n\t\t\t\t\tif (this._isDoneWhenProperInt) {\n\t\t\t\t\t\tthis._isDone = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.isBoundaryPoint(this._li, this._bdyNodes)) this._hasProperInterior = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentIntersector;\n\t}\n});\nSegmentIntersector.isAdjacentSegments = function (i1, i2) {\n\treturn Math.abs(i1 - i2) === 1;\n};\n","import hasInterface from '../../../../../hasInterface';\nimport MonotoneChain from './MonotoneChain';\nimport SweepLineEvent from './SweepLineEvent';\nimport EdgeSetIntersector from './EdgeSetIntersector';\nimport extend from '../../../../../extend';\nimport Collections from '../../../../../java/util/Collections';\nimport SegmentIntersector from './SegmentIntersector';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport inherits from '../../../../../inherits';\nimport List from '../../../../../java/util/List';\nexport default function SimpleMCSweepLineIntersector() {\n\tEdgeSetIntersector.apply(this);\n\tthis.events = new ArrayList();\n\tthis.nOverlaps = null;\n}\ninherits(SimpleMCSweepLineIntersector, EdgeSetIntersector);\nextend(SimpleMCSweepLineIntersector.prototype, {\n\tprepareEvents: function () {\n\t\tCollections.sort(this.events);\n\t\tfor (var i = 0; i < this.events.size(); i++) {\n\t\t\tvar ev = this.events.get(i);\n\t\t\tif (ev.isDelete()) {\n\t\t\t\tev.getInsertEvent().setDeleteEventIndex(i);\n\t\t\t}\n\t\t}\n\t},\n\tcomputeIntersections: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet si = arguments[0];\n\t\t\tthis.nOverlaps = 0;\n\t\t\tthis.prepareEvents();\n\t\t\tfor (var i = 0; i < this.events.size(); i++) {\n\t\t\t\tvar ev = this.events.get(i);\n\t\t\t\tif (ev.isInsert()) {\n\t\t\t\t\tthis.processOverlaps(i, ev.getDeleteEventIndex(), ev, si);\n\t\t\t\t}\n\t\t\t\tif (si.isDone()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (arguments[2] instanceof SegmentIntersector && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n\t\t\t\tlet edges0 = arguments[0], edges1 = arguments[1], si = arguments[2];\n\t\t\t\tthis.addEdges(edges0, edges0);\n\t\t\t\tthis.addEdges(edges1, edges1);\n\t\t\t\tthis.computeIntersections(si);\n\t\t\t} else if (typeof arguments[2] === \"boolean\" && (hasInterface(arguments[0], List) && arguments[1] instanceof SegmentIntersector)) {\n\t\t\t\tlet edges = arguments[0], si = arguments[1], testAllSegments = arguments[2];\n\t\t\t\tif (testAllSegments) this.addEdges(edges, null); else this.addEdges(edges);\n\t\t\t\tthis.computeIntersections(si);\n\t\t\t}\n\t\t}\n\t},\n\taddEdge: function (edge, edgeSet) {\n\t\tvar mce = edge.getMonotoneChainEdge();\n\t\tvar startIndex = mce.getStartIndexes();\n\t\tfor (var i = 0; i < startIndex.length - 1; i++) {\n\t\t\tvar mc = new MonotoneChain(mce, i);\n\t\t\tvar insertEvent = new SweepLineEvent(edgeSet, mce.getMinX(i), mc);\n\t\t\tthis.events.add(insertEvent);\n\t\t\tthis.events.add(new SweepLineEvent(mce.getMaxX(i), insertEvent));\n\t\t}\n\t},\n\tprocessOverlaps: function (start, end, ev0, si) {\n\t\tvar mc0 = ev0.getObject();\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar ev1 = this.events.get(i);\n\t\t\tif (ev1.isInsert()) {\n\t\t\t\tvar mc1 = ev1.getObject();\n\t\t\t\tif (!ev0.isSameLabel(ev1)) {\n\t\t\t\t\tmc0.computeIntersections(mc1, si);\n\t\t\t\t\tthis.nOverlaps++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\taddEdges: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet edges = arguments[0];\n\t\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar edge = i.next();\n\t\t\t\tthis.addEdge(edge, edge);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet edges = arguments[0], edgeSet = arguments[1];\n\t\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar edge = i.next();\n\t\t\t\tthis.addEdge(edge, edgeSet);\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SimpleMCSweepLineIntersector;\n\t}\n});\n","import StringBuffer from '../../../../java/lang/StringBuffer';\nimport Location from '../geom/Location';\nimport Position from './Position';\nimport extend from '../../../../extend';\nexport default function TopologyLocation() {\n\tthis.location = null;\n\tif (arguments.length === 1) {\n\t\tif (arguments[0] instanceof Array) {\n\t\t\tlet location = arguments[0];\n\t\t\tthis.init(location.length);\n\t\t} else if (Number.isInteger(arguments[0])) {\n\t\t\tlet on = arguments[0];\n\t\t\tthis.init(1);\n\t\t\tthis.location[Position.ON] = on;\n\t\t} else if (arguments[0] instanceof TopologyLocation) {\n\t\t\tlet gl = arguments[0];\n\t\t\tthis.init(gl.location.length);\n\t\t\tif (gl !== null) {\n\t\t\t\tfor (var i = 0; i < this.location.length; i++) {\n\t\t\t\t\tthis.location[i] = gl.location[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (arguments.length === 3) {\n\t\tlet on = arguments[0], left = arguments[1], right = arguments[2];\n\t\tthis.init(3);\n\t\tthis.location[Position.ON] = on;\n\t\tthis.location[Position.LEFT] = left;\n\t\tthis.location[Position.RIGHT] = right;\n\t}\n}\nextend(TopologyLocation.prototype, {\n\tsetAllLocations: function (locValue) {\n\t\tfor (var i = 0; i < this.location.length; i++) {\n\t\t\tthis.location[i] = locValue;\n\t\t}\n\t},\n\tisNull: function () {\n\t\tfor (var i = 0; i < this.location.length; i++) {\n\t\t\tif (this.location[i] !== Location.NONE) return false;\n\t\t}\n\t\treturn true;\n\t},\n\tsetAllLocationsIfNull: function (locValue) {\n\t\tfor (var i = 0; i < this.location.length; i++) {\n\t\t\tif (this.location[i] === Location.NONE) this.location[i] = locValue;\n\t\t}\n\t},\n\tisLine: function () {\n\t\treturn this.location.length === 1;\n\t},\n\tmerge: function (gl) {\n\t\tif (gl.location.length > this.location.length) {\n\t\t\tvar newLoc = new Array(3).fill(null);\n\t\t\tnewLoc[Position.ON] = this.location[Position.ON];\n\t\t\tnewLoc[Position.LEFT] = Location.NONE;\n\t\t\tnewLoc[Position.RIGHT] = Location.NONE;\n\t\t\tthis.location = newLoc;\n\t\t}\n\t\tfor (var i = 0; i < this.location.length; i++) {\n\t\t\tif (this.location[i] === Location.NONE && i < gl.location.length) this.location[i] = gl.location[i];\n\t\t}\n\t},\n\tgetLocations: function () {\n\t\treturn this.location;\n\t},\n\tflip: function () {\n\t\tif (this.location.length <= 1) return null;\n\t\tvar temp = this.location[Position.LEFT];\n\t\tthis.location[Position.LEFT] = this.location[Position.RIGHT];\n\t\tthis.location[Position.RIGHT] = temp;\n\t},\n\ttoString: function () {\n\t\tvar buf = new StringBuffer();\n\t\tif (this.location.length > 1) buf.append(Location.toLocationSymbol(this.location[Position.LEFT]));\n\t\tbuf.append(Location.toLocationSymbol(this.location[Position.ON]));\n\t\tif (this.location.length > 1) buf.append(Location.toLocationSymbol(this.location[Position.RIGHT]));\n\t\treturn buf.toString();\n\t},\n\tsetLocations: function (on, left, right) {\n\t\tthis.location[Position.ON] = on;\n\t\tthis.location[Position.LEFT] = left;\n\t\tthis.location[Position.RIGHT] = right;\n\t},\n\tget: function (posIndex) {\n\t\tif (posIndex < this.location.length) return this.location[posIndex];\n\t\treturn Location.NONE;\n\t},\n\tisArea: function () {\n\t\treturn this.location.length > 1;\n\t},\n\tisAnyNull: function () {\n\t\tfor (var i = 0; i < this.location.length; i++) {\n\t\t\tif (this.location[i] === Location.NONE) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tsetLocation: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet locValue = arguments[0];\n\t\t\tthis.setLocation(Position.ON, locValue);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet locIndex = arguments[0], locValue = arguments[1];\n\t\t\tthis.location[locIndex] = locValue;\n\t\t}\n\t},\n\tinit: function (size) {\n\t\tthis.location = new Array(size).fill(null);\n\t\tthis.setAllLocations(Location.NONE);\n\t},\n\tisEqualOnSide: function (le, locIndex) {\n\t\treturn this.location[locIndex] === le.location[locIndex];\n\t},\n\tallPositionsEqual: function (loc) {\n\t\tfor (var i = 0; i < this.location.length; i++) {\n\t\t\tif (this.location[i] !== loc) return false;\n\t\t}\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TopologyLocation;\n\t}\n});\n","import StringBuffer from '../../../../java/lang/StringBuffer';\nimport Location from '../geom/Location';\nimport Position from './Position';\nimport extend from '../../../../extend';\nimport TopologyLocation from './TopologyLocation';\nexport default function Label() {\n\tthis.elt = new Array(2).fill(null);\n\tif (arguments.length === 1) {\n\t\tif (Number.isInteger(arguments[0])) {\n\t\t\tlet onLoc = arguments[0];\n\t\t\tthis.elt[0] = new TopologyLocation(onLoc);\n\t\t\tthis.elt[1] = new TopologyLocation(onLoc);\n\t\t} else if (arguments[0] instanceof Label) {\n\t\t\tlet lbl = arguments[0];\n\t\t\tthis.elt[0] = new TopologyLocation(lbl.elt[0]);\n\t\t\tthis.elt[1] = new TopologyLocation(lbl.elt[1]);\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet geomIndex = arguments[0], onLoc = arguments[1];\n\t\tthis.elt[0] = new TopologyLocation(Location.NONE);\n\t\tthis.elt[1] = new TopologyLocation(Location.NONE);\n\t\tthis.elt[geomIndex].setLocation(onLoc);\n\t} else if (arguments.length === 3) {\n\t\tlet onLoc = arguments[0], leftLoc = arguments[1], rightLoc = arguments[2];\n\t\tthis.elt[0] = new TopologyLocation(onLoc, leftLoc, rightLoc);\n\t\tthis.elt[1] = new TopologyLocation(onLoc, leftLoc, rightLoc);\n\t} else if (arguments.length === 4) {\n\t\tlet geomIndex = arguments[0], onLoc = arguments[1], leftLoc = arguments[2], rightLoc = arguments[3];\n\t\tthis.elt[0] = new TopologyLocation(Location.NONE, Location.NONE, Location.NONE);\n\t\tthis.elt[1] = new TopologyLocation(Location.NONE, Location.NONE, Location.NONE);\n\t\tthis.elt[geomIndex].setLocations(onLoc, leftLoc, rightLoc);\n\t}\n}\nextend(Label.prototype, {\n\tgetGeometryCount: function () {\n\t\tvar count = 0;\n\t\tif (!this.elt[0].isNull()) count++;\n\t\tif (!this.elt[1].isNull()) count++;\n\t\treturn count;\n\t},\n\tsetAllLocations: function (geomIndex, location) {\n\t\tthis.elt[geomIndex].setAllLocations(location);\n\t},\n\tisNull: function (geomIndex) {\n\t\treturn this.elt[geomIndex].isNull();\n\t},\n\tsetAllLocationsIfNull: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet location = arguments[0];\n\t\t\tthis.setAllLocationsIfNull(0, location);\n\t\t\tthis.setAllLocationsIfNull(1, location);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geomIndex = arguments[0], location = arguments[1];\n\t\t\tthis.elt[geomIndex].setAllLocationsIfNull(location);\n\t\t}\n\t},\n\tisLine: function (geomIndex) {\n\t\treturn this.elt[geomIndex].isLine();\n\t},\n\tmerge: function (lbl) {\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (this.elt[i] === null && lbl.elt[i] !== null) {\n\t\t\t\tthis.elt[i] = new TopologyLocation(lbl.elt[i]);\n\t\t\t} else {\n\t\t\t\tthis.elt[i].merge(lbl.elt[i]);\n\t\t\t}\n\t\t}\n\t},\n\tflip: function () {\n\t\tthis.elt[0].flip();\n\t\tthis.elt[1].flip();\n\t},\n\tgetLocation: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geomIndex = arguments[0];\n\t\t\treturn this.elt[geomIndex].get(Position.ON);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geomIndex = arguments[0], posIndex = arguments[1];\n\t\t\treturn this.elt[geomIndex].get(posIndex);\n\t\t}\n\t},\n\ttoString: function () {\n\t\tvar buf = new StringBuffer();\n\t\tif (this.elt[0] !== null) {\n\t\t\tbuf.append(\"A:\");\n\t\t\tbuf.append(this.elt[0].toString());\n\t\t}\n\t\tif (this.elt[1] !== null) {\n\t\t\tbuf.append(\" B:\");\n\t\t\tbuf.append(this.elt[1].toString());\n\t\t}\n\t\treturn buf.toString();\n\t},\n\tisArea: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this.elt[0].isArea() || this.elt[1].isArea();\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet geomIndex = arguments[0];\n\t\t\treturn this.elt[geomIndex].isArea();\n\t\t}\n\t},\n\tisAnyNull: function (geomIndex) {\n\t\treturn this.elt[geomIndex].isAnyNull();\n\t},\n\tsetLocation: function () {\n\t\tif (arguments.length === 2) {\n\t\t\tlet geomIndex = arguments[0], location = arguments[1];\n\t\t\tthis.elt[geomIndex].setLocation(Position.ON, location);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet geomIndex = arguments[0], posIndex = arguments[1], location = arguments[2];\n\t\t\tthis.elt[geomIndex].setLocation(posIndex, location);\n\t\t}\n\t},\n\tisEqualOnSide: function (lbl, side) {\n\t\treturn this.elt[0].isEqualOnSide(lbl.elt[0], side) && this.elt[1].isEqualOnSide(lbl.elt[1], side);\n\t},\n\tallPositionsEqual: function (geomIndex, loc) {\n\t\treturn this.elt[geomIndex].allPositionsEqual(loc);\n\t},\n\ttoLine: function (geomIndex) {\n\t\tif (this.elt[geomIndex].isArea()) this.elt[geomIndex] = new TopologyLocation(this.elt[geomIndex].location[0]);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Label;\n\t}\n});\nLabel.toLineLabel = function (label) {\n\tvar lineLabel = new Label(Location.NONE);\n\tfor (var i = 0; i < 2; i++) {\n\t\tlineLabel.setLocation(i, label.getLocation(i));\n\t}\n\treturn lineLabel;\n};\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport Comparable from '../../../../java/lang/Comparable';\nexport default function EdgeIntersection() {\n\tthis.coord = null;\n\tthis.segmentIndex = null;\n\tthis.dist = null;\n\tlet coord = arguments[0], segmentIndex = arguments[1], dist = arguments[2];\n\tthis.coord = new Coordinate(coord);\n\tthis.segmentIndex = segmentIndex;\n\tthis.dist = dist;\n}\nextend(EdgeIntersection.prototype, {\n\tgetSegmentIndex: function () {\n\t\treturn this.segmentIndex;\n\t},\n\tgetCoordinate: function () {\n\t\treturn this.coord;\n\t},\n\tprint: function (out) {\n\t\tout.print(this.coord);\n\t\tout.print(\" seg # = \" + this.segmentIndex);\n\t\tout.println(\" dist = \" + this.dist);\n\t},\n\tcompareTo: function (obj) {\n\t\tvar other = obj;\n\t\treturn this.compare(other.segmentIndex, other.dist);\n\t},\n\tisEndPoint: function (maxSegmentIndex) {\n\t\tif (this.segmentIndex === 0 && this.dist === 0.0) return true;\n\t\tif (this.segmentIndex === maxSegmentIndex) return true;\n\t\treturn false;\n\t},\n\ttoString: function () {\n\t\treturn this.coord + \" seg # = \" + this.segmentIndex + \" dist = \" + this.dist;\n\t},\n\tgetDistance: function () {\n\t\treturn this.dist;\n\t},\n\tcompare: function (segmentIndex, dist) {\n\t\tif (this.segmentIndex < segmentIndex) return -1;\n\t\tif (this.segmentIndex > segmentIndex) return 1;\n\t\tif (this.dist < dist) return -1;\n\t\tif (this.dist > dist) return 1;\n\t\treturn 0;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeIntersection;\n\t}\n});\n","import EdgeIntersection from './EdgeIntersection';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport Label from './Label';\nimport Edge from './Edge';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default function EdgeIntersectionList() {\n\tthis._nodeMap = new TreeMap();\n\tthis.edge = null;\n\tlet edge = arguments[0];\n\tthis.edge = edge;\n}\nextend(EdgeIntersectionList.prototype, {\n\tprint: function (out) {\n\t\tout.println(\"Intersections:\");\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ei = it.next();\n\t\t\tei.print(out);\n\t\t}\n\t},\n\titerator: function () {\n\t\treturn this._nodeMap.values().iterator();\n\t},\n\taddSplitEdges: function (edgeList) {\n\t\tthis.addEndpoints();\n\t\tvar it = this.iterator();\n\t\tvar eiPrev = it.next();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ei = it.next();\n\t\t\tvar newEdge = this.createSplitEdge(eiPrev, ei);\n\t\t\tedgeList.add(newEdge);\n\t\t\teiPrev = ei;\n\t\t}\n\t},\n\taddEndpoints: function () {\n\t\tvar maxSegIndex = this.edge.pts.length - 1;\n\t\tthis.add(this.edge.pts[0], 0, 0.0);\n\t\tthis.add(this.edge.pts[maxSegIndex], maxSegIndex, 0.0);\n\t},\n\tcreateSplitEdge: function (ei0, ei1) {\n\t\tvar npts = ei1.segmentIndex - ei0.segmentIndex + 2;\n\t\tvar lastSegStartPt = this.edge.pts[ei1.segmentIndex];\n\t\tvar useIntPt1 = ei1.dist > 0.0 || !ei1.coord.equals2D(lastSegStartPt);\n\t\tif (!useIntPt1) {\n\t\t\tnpts--;\n\t\t}\n\t\tvar pts = new Array(npts).fill(null);\n\t\tvar ipt = 0;\n\t\tpts[ipt++] = new Coordinate(ei0.coord);\n\t\tfor (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n\t\t\tpts[ipt++] = this.edge.pts[i];\n\t\t}\n\t\tif (useIntPt1) pts[ipt] = ei1.coord;\n\t\treturn new Edge(pts, new Label(this.edge._label));\n\t},\n\tadd: function (intPt, segmentIndex, dist) {\n\t\tvar eiNew = new EdgeIntersection(intPt, segmentIndex, dist);\n\t\tvar ei = this._nodeMap.get(eiNew);\n\t\tif (ei !== null) {\n\t\t\treturn ei;\n\t\t}\n\t\tthis._nodeMap.put(eiNew, eiNew);\n\t\treturn eiNew;\n\t},\n\tisIntersection: function (pt) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ei = it.next();\n\t\t\tif (ei.coord.equals(pt)) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeIntersectionList;\n\t}\n});\n","import extend from '../../../../../extend';\nimport Integer from '../../../../../java/lang/Integer';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Quadrant from '../Quadrant';\nexport default function MonotoneChainIndexer() {}\nextend(MonotoneChainIndexer.prototype, {\n\tgetChainStartIndices: function (pts) {\n\t\tvar start = 0;\n\t\tvar startIndexList = new ArrayList();\n\t\tstartIndexList.add(new Integer(start));\n\t\tdo {\n\t\t\tvar last = this.findChainEnd(pts, start);\n\t\t\tstartIndexList.add(new Integer(last));\n\t\t\tstart = last;\n\t\t} while (start < pts.length - 1);\n\t\tvar startIndex = MonotoneChainIndexer.toIntArray(startIndexList);\n\t\treturn startIndex;\n\t},\n\tfindChainEnd: function (pts, start) {\n\t\tvar chainQuad = Quadrant.quadrant(pts[start], pts[start + 1]);\n\t\tvar last = start + 1;\n\t\twhile (last < pts.length) {\n\t\t\tvar quad = Quadrant.quadrant(pts[last - 1], pts[last]);\n\t\t\tif (quad !== chainQuad) break;\n\t\t\tlast++;\n\t\t}\n\t\treturn last - 1;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MonotoneChainIndexer;\n\t}\n});\nMonotoneChainIndexer.toIntArray = function (list) {\n\tvar array = new Array(list.size()).fill(null);\n\tfor (var i = 0; i < array.length; i++) {\n\t\tarray[i] = list.get(i).intValue();\n\t}\n\treturn array;\n};\n","import extend from '../../../../../extend';\nimport MonotoneChainIndexer from './MonotoneChainIndexer';\nimport Envelope from '../../geom/Envelope';\nexport default function MonotoneChainEdge() {\n\tthis.e = null;\n\tthis.pts = null;\n\tthis.startIndex = null;\n\tlet e = arguments[0];\n\tthis.e = e;\n\tthis.pts = e.getCoordinates();\n\tvar mcb = new MonotoneChainIndexer();\n\tthis.startIndex = mcb.getChainStartIndices(this.pts);\n}\nextend(MonotoneChainEdge.prototype, {\n\tgetCoordinates: function () {\n\t\treturn this.pts;\n\t},\n\tgetMaxX: function (chainIndex) {\n\t\tvar x1 = this.pts[this.startIndex[chainIndex]].x;\n\t\tvar x2 = this.pts[this.startIndex[chainIndex + 1]].x;\n\t\treturn x1 > x2 ? x1 : x2;\n\t},\n\tgetMinX: function (chainIndex) {\n\t\tvar x1 = this.pts[this.startIndex[chainIndex]].x;\n\t\tvar x2 = this.pts[this.startIndex[chainIndex + 1]].x;\n\t\treturn x1 < x2 ? x1 : x2;\n\t},\n\tcomputeIntersectsForChain: function () {\n\t\tif (arguments.length === 4) {\n\t\t\tlet chainIndex0 = arguments[0], mce = arguments[1], chainIndex1 = arguments[2], si = arguments[3];\n\t\t\tthis.computeIntersectsForChain(this.startIndex[chainIndex0], this.startIndex[chainIndex0 + 1], mce, mce.startIndex[chainIndex1], mce.startIndex[chainIndex1 + 1], si);\n\t\t} else if (arguments.length === 6) {\n\t\t\tlet start0 = arguments[0], end0 = arguments[1], mce = arguments[2], start1 = arguments[3], end1 = arguments[4], ei = arguments[5];\n\t\t\tif (end0 - start0 === 1 && end1 - start1 === 1) {\n\t\t\t\tei.addIntersections(this.e, start0, mce.e, start1);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (!this.overlaps(start0, end0, mce, start1, end1)) return null;\n\t\t\tvar mid0 = Math.trunc((start0 + end0) / 2);\n\t\t\tvar mid1 = Math.trunc((start1 + end1) / 2);\n\t\t\tif (start0 < mid0) {\n\t\t\t\tif (start1 < mid1) this.computeIntersectsForChain(start0, mid0, mce, start1, mid1, ei);\n\t\t\t\tif (mid1 < end1) this.computeIntersectsForChain(start0, mid0, mce, mid1, end1, ei);\n\t\t\t}\n\t\t\tif (mid0 < end0) {\n\t\t\t\tif (start1 < mid1) this.computeIntersectsForChain(mid0, end0, mce, start1, mid1, ei);\n\t\t\t\tif (mid1 < end1) this.computeIntersectsForChain(mid0, end0, mce, mid1, end1, ei);\n\t\t\t}\n\t\t}\n\t},\n\toverlaps: function (start0, end0, mce, start1, end1) {\n\t\treturn Envelope.intersects(this.pts[start0], this.pts[end0], mce.pts[start1], mce.pts[end1]);\n\t},\n\tgetStartIndexes: function () {\n\t\treturn this.startIndex;\n\t},\n\tcomputeIntersects: function (mce, si) {\n\t\tfor (var i = 0; i < this.startIndex.length - 1; i++) {\n\t\t\tfor (var j = 0; j < mce.startIndex.length - 1; j++) {\n\t\t\t\tthis.computeIntersectsForChain(i, mce, j, si);\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MonotoneChainEdge;\n\t}\n});\n","import Location from '../geom/Location';\nimport Position from './Position';\nimport extend from '../../../../extend';\nexport default function Depth() {\n\tthis._depth = Array(2).fill().map(() => Array(3));\n\tfor (var i = 0; i < 2; i++) {\n\t\tfor (var j = 0; j < 3; j++) {\n\t\t\tthis._depth[i][j] = Depth.NULL_VALUE;\n\t\t}\n\t}\n}\nextend(Depth.prototype, {\n\tgetDepth: function (geomIndex, posIndex) {\n\t\treturn this._depth[geomIndex][posIndex];\n\t},\n\tsetDepth: function (geomIndex, posIndex, depthValue) {\n\t\tthis._depth[geomIndex][posIndex] = depthValue;\n\t},\n\tisNull: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\tfor (var j = 0; j < 3; j++) {\n\t\t\t\t\tif (this._depth[i][j] !== Depth.NULL_VALUE) return false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet geomIndex = arguments[0];\n\t\t\treturn this._depth[geomIndex][1] === Depth.NULL_VALUE;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geomIndex = arguments[0], posIndex = arguments[1];\n\t\t\treturn this._depth[geomIndex][posIndex] === Depth.NULL_VALUE;\n\t\t}\n\t},\n\tnormalize: function () {\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (!this.isNull(i)) {\n\t\t\t\tvar minDepth = this._depth[i][1];\n\t\t\t\tif (this._depth[i][2] < minDepth) minDepth = this._depth[i][2];\n\t\t\t\tif (minDepth < 0) minDepth = 0;\n\t\t\t\tfor (var j = 1; j < 3; j++) {\n\t\t\t\t\tvar newValue = 0;\n\t\t\t\t\tif (this._depth[i][j] > minDepth) newValue = 1;\n\t\t\t\t\tthis._depth[i][j] = newValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetDelta: function (geomIndex) {\n\t\treturn this._depth[geomIndex][Position.RIGHT] - this._depth[geomIndex][Position.LEFT];\n\t},\n\tgetLocation: function (geomIndex, posIndex) {\n\t\tif (this._depth[geomIndex][posIndex] <= 0) return Location.EXTERIOR;\n\t\treturn Location.INTERIOR;\n\t},\n\ttoString: function () {\n\t\treturn \"A: \" + this._depth[0][1] + \",\" + this._depth[0][2] + \" B: \" + this._depth[1][1] + \",\" + this._depth[1][2];\n\t},\n\tadd: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet lbl = arguments[0];\n\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\tfor (var j = 1; j < 3; j++) {\n\t\t\t\t\tvar loc = lbl.getLocation(i, j);\n\t\t\t\t\tif (loc === Location.EXTERIOR || loc === Location.INTERIOR) {\n\t\t\t\t\t\tif (this.isNull(i, j)) {\n\t\t\t\t\t\t\tthis._depth[i][j] = Depth.depthAtLocation(loc);\n\t\t\t\t\t\t} else this._depth[i][j] += Depth.depthAtLocation(loc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet geomIndex = arguments[0], posIndex = arguments[1], location = arguments[2];\n\t\t\tif (location === Location.INTERIOR) this._depth[geomIndex][posIndex]++;\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Depth;\n\t}\n});\nDepth.depthAtLocation = function (location) {\n\tif (location === Location.EXTERIOR) return 0;\n\tif (location === Location.INTERIOR) return 1;\n\treturn Depth.NULL_VALUE;\n};\nDepth.NULL_VALUE = -1;\n","import extend from '../../../../extend';\nimport Assert from '../util/Assert';\nexport default function GraphComponent() {\n\tthis._label = null;\n\tthis._isInResult = false;\n\tthis._isCovered = false;\n\tthis._isCoveredSet = false;\n\tthis._isVisited = false;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet label = arguments[0];\n\t\tthis._label = label;\n\t}\n}\nextend(GraphComponent.prototype, {\n\tsetVisited: function (isVisited) {\n\t\tthis._isVisited = isVisited;\n\t},\n\tsetInResult: function (isInResult) {\n\t\tthis._isInResult = isInResult;\n\t},\n\tisCovered: function () {\n\t\treturn this._isCovered;\n\t},\n\tisCoveredSet: function () {\n\t\treturn this._isCoveredSet;\n\t},\n\tsetLabel: function (label) {\n\t\tthis._label = label;\n\t},\n\tgetLabel: function () {\n\t\treturn this._label;\n\t},\n\tsetCovered: function (isCovered) {\n\t\tthis._isCovered = isCovered;\n\t\tthis._isCoveredSet = true;\n\t},\n\tupdateIM: function (im) {\n\t\tAssert.isTrue(this._label.getGeometryCount() >= 2, \"found partial label\");\n\t\tthis.computeIM(im);\n\t},\n\tisInResult: function () {\n\t\treturn this._isInResult;\n\t},\n\tisVisited: function () {\n\t\treturn this._isVisited;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GraphComponent;\n\t}\n});\n","import EdgeIntersectionList from './EdgeIntersectionList';\nimport IntersectionMatrix from '../geom/IntersectionMatrix';\nimport MonotoneChainEdge from './index/MonotoneChainEdge';\nimport Position from './Position';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport Label from './Label';\nimport Envelope from '../geom/Envelope';\nimport inherits from '../../../../inherits';\nimport StringBuilder from '../../../../java/lang/StringBuilder';\nimport Depth from './Depth';\nimport GraphComponent from './GraphComponent';\nexport default function Edge() {\n\tGraphComponent.apply(this);\n\tthis.pts = null;\n\tthis._env = null;\n\tthis.eiList = new EdgeIntersectionList(this);\n\tthis._name = null;\n\tthis._mce = null;\n\tthis._isIsolated = true;\n\tthis._depth = new Depth();\n\tthis._depthDelta = 0;\n\tif (arguments.length === 1) {\n\t\tlet pts = arguments[0];\n\t\tEdge.call(this, pts, null);\n\t} else if (arguments.length === 2) {\n\t\tlet pts = arguments[0], label = arguments[1];\n\t\tthis.pts = pts;\n\t\tthis._label = label;\n\t}\n}\ninherits(Edge, GraphComponent);\nextend(Edge.prototype, {\n\tgetDepth: function () {\n\t\treturn this._depth;\n\t},\n\tgetCollapsedEdge: function () {\n\t\tvar newPts = new Array(2).fill(null);\n\t\tnewPts[0] = this.pts[0];\n\t\tnewPts[1] = this.pts[1];\n\t\tvar newe = new Edge(newPts, Label.toLineLabel(this._label));\n\t\treturn newe;\n\t},\n\tisIsolated: function () {\n\t\treturn this._isIsolated;\n\t},\n\tgetCoordinates: function () {\n\t\treturn this.pts;\n\t},\n\tsetIsolated: function (isIsolated) {\n\t\tthis._isIsolated = isIsolated;\n\t},\n\tsetName: function (name) {\n\t\tthis._name = name;\n\t},\n\tequals: function (o) {\n\t\tif (!(o instanceof Edge)) return false;\n\t\tvar e = o;\n\t\tif (this.pts.length !== e.pts.length) return false;\n\t\tvar isEqualForward = true;\n\t\tvar isEqualReverse = true;\n\t\tvar iRev = this.pts.length;\n\t\tfor (var i = 0; i < this.pts.length; i++) {\n\t\t\tif (!this.pts[i].equals2D(e.pts[i])) {\n\t\t\t\tisEqualForward = false;\n\t\t\t}\n\t\t\tif (!this.pts[i].equals2D(e.pts[-- iRev])) {\n\t\t\t\tisEqualReverse = false;\n\t\t\t}\n\t\t\tif (!isEqualForward && !isEqualReverse) return false;\n\t\t}\n\t\treturn true;\n\t},\n\tgetCoordinate: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tif (this.pts.length > 0) return this.pts[0];\n\t\t\treturn null;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet i = arguments[0];\n\t\t\treturn this.pts[i];\n\t\t}\n\t},\n\tprint: function (out) {\n\t\tout.print(\"edge \" + this._name + \": \");\n\t\tout.print(\"LINESTRING (\");\n\t\tfor (var i = 0; i < this.pts.length; i++) {\n\t\t\tif (i > 0) out.print(\",\");\n\t\t\tout.print(this.pts[i].x + \" \" + this.pts[i].y);\n\t\t}\n\t\tout.print(\") \" + this._label + \" \" + this._depthDelta);\n\t},\n\tcomputeIM: function (im) {\n\t\tEdge.updateIM(this._label, im);\n\t},\n\tisCollapsed: function () {\n\t\tif (!this._label.isArea()) return false;\n\t\tif (this.pts.length !== 3) return false;\n\t\tif (this.pts[0].equals(this.pts[2])) return true;\n\t\treturn false;\n\t},\n\tisClosed: function () {\n\t\treturn this.pts[0].equals(this.pts[this.pts.length - 1]);\n\t},\n\tgetMaximumSegmentIndex: function () {\n\t\treturn this.pts.length - 1;\n\t},\n\tgetDepthDelta: function () {\n\t\treturn this._depthDelta;\n\t},\n\tgetNumPoints: function () {\n\t\treturn this.pts.length;\n\t},\n\tprintReverse: function (out) {\n\t\tout.print(\"edge \" + this._name + \": \");\n\t\tfor (var i = this.pts.length - 1; i >= 0; i--) {\n\t\t\tout.print(this.pts[i] + \" \");\n\t\t}\n\t\tout.println(\"\");\n\t},\n\tgetMonotoneChainEdge: function () {\n\t\tif (this._mce === null) this._mce = new MonotoneChainEdge(this);\n\t\treturn this._mce;\n\t},\n\tgetEnvelope: function () {\n\t\tif (this._env === null) {\n\t\t\tthis._env = new Envelope();\n\t\t\tfor (var i = 0; i < this.pts.length; i++) {\n\t\t\t\tthis._env.expandToInclude(this.pts[i]);\n\t\t\t}\n\t\t}\n\t\treturn this._env;\n\t},\n\taddIntersection: function (li, segmentIndex, geomIndex, intIndex) {\n\t\tvar intPt = new Coordinate(li.getIntersection(intIndex));\n\t\tvar normalizedSegmentIndex = segmentIndex;\n\t\tvar dist = li.getEdgeDistance(geomIndex, intIndex);\n\t\tvar nextSegIndex = normalizedSegmentIndex + 1;\n\t\tif (nextSegIndex < this.pts.length) {\n\t\t\tvar nextPt = this.pts[nextSegIndex];\n\t\t\tif (intPt.equals2D(nextPt)) {\n\t\t\t\tnormalizedSegmentIndex = nextSegIndex;\n\t\t\t\tdist = 0.0;\n\t\t\t}\n\t\t}\n\t\tvar ei = this.eiList.add(intPt, normalizedSegmentIndex, dist);\n\t},\n\ttoString: function () {\n\t\tvar builder = new StringBuilder();\n\t\tbuilder.append(\"edge \" + this._name + \": \");\n\t\tbuilder.append(\"LINESTRING (\");\n\t\tfor (var i = 0; i < this.pts.length; i++) {\n\t\t\tif (i > 0) builder.append(\",\");\n\t\t\tbuilder.append(this.pts[i].x + \" \" + this.pts[i].y);\n\t\t}\n\t\tbuilder.append(\") \" + this._label + \" \" + this._depthDelta);\n\t\treturn builder.toString();\n\t},\n\tisPointwiseEqual: function (e) {\n\t\tif (this.pts.length !== e.pts.length) return false;\n\t\tfor (var i = 0; i < this.pts.length; i++) {\n\t\t\tif (!this.pts[i].equals2D(e.pts[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\tsetDepthDelta: function (depthDelta) {\n\t\tthis._depthDelta = depthDelta;\n\t},\n\tgetEdgeIntersectionList: function () {\n\t\treturn this.eiList;\n\t},\n\taddIntersections: function (li, segmentIndex, geomIndex) {\n\t\tfor (var i = 0; i < li.getIntersectionNum(); i++) {\n\t\t\tthis.addIntersection(li, segmentIndex, geomIndex, i);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Edge;\n\t}\n});\nEdge.updateIM = function () {\n\tif (arguments.length === 2 && (arguments[1] instanceof IntersectionMatrix && arguments[0] instanceof Label)) {\n\t\tlet label = arguments[0], im = arguments[1];\n\t\tim.setAtLeastIfValid(label.getLocation(0, Position.ON), label.getLocation(1, Position.ON), 1);\n\t\tif (label.isArea()) {\n\t\t\tim.setAtLeastIfValid(label.getLocation(0, Position.LEFT), label.getLocation(1, Position.LEFT), 2);\n\t\t\tim.setAtLeastIfValid(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), 2);\n\t\t}\n\t} else return GraphComponent.prototype.updateIM.apply(this, arguments);\n};\n","import Location from '../geom/Location';\nimport extend from '../../../../extend';\nimport Label from './Label';\nimport inherits from '../../../../inherits';\nimport GraphComponent from './GraphComponent';\nexport default function Node() {\n\tGraphComponent.apply(this);\n\tthis._coord = null;\n\tthis._edges = null;\n\tlet coord = arguments[0], edges = arguments[1];\n\tthis._coord = coord;\n\tthis._edges = edges;\n\tthis._label = new Label(0, Location.NONE);\n}\ninherits(Node, GraphComponent);\nextend(Node.prototype, {\n\tisIncidentEdgeInResult: function () {\n\t\tfor (var it = this.getEdges().getEdges().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.getEdge().isInResult()) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tisIsolated: function () {\n\t\treturn this._label.getGeometryCount() === 1;\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._coord;\n\t},\n\tprint: function (out) {\n\t\tout.println(\"node \" + this._coord + \" lbl: \" + this._label);\n\t},\n\tcomputeIM: function (im) {},\n\tcomputeMergedLocation: function (label2, eltIndex) {\n\t\tvar loc = Location.NONE;\n\t\tloc = this._label.getLocation(eltIndex);\n\t\tif (!label2.isNull(eltIndex)) {\n\t\t\tvar nLoc = label2.getLocation(eltIndex);\n\t\t\tif (loc !== Location.BOUNDARY) loc = nLoc;\n\t\t}\n\t\treturn loc;\n\t},\n\tsetLabel: function () {\n\t\tif (arguments.length === 2 && (Number.isInteger(arguments[1]) && Number.isInteger(arguments[0]))) {\n\t\t\tlet argIndex = arguments[0], onLocation = arguments[1];\n\t\t\tif (this._label === null) {\n\t\t\t\tthis._label = new Label(argIndex, onLocation);\n\t\t\t} else this._label.setLocation(argIndex, onLocation);\n\t\t} else return GraphComponent.prototype.setLabel.apply(this, arguments);\n\t},\n\tgetEdges: function () {\n\t\treturn this._edges;\n\t},\n\tmergeLabel: function () {\n\t\tif (arguments[0] instanceof Node) {\n\t\t\tlet n = arguments[0];\n\t\t\tthis.mergeLabel(n._label);\n\t\t} else if (arguments[0] instanceof Label) {\n\t\t\tlet label2 = arguments[0];\n\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\tvar loc = this.computeMergedLocation(label2, i);\n\t\t\t\tvar thisLoc = this._label.getLocation(i);\n\t\t\t\tif (thisLoc === Location.NONE) this._label.setLocation(i, loc);\n\t\t\t}\n\t\t}\n\t},\n\tadd: function (e) {\n\t\tthis._edges.insert(e);\n\t\te.setNode(this);\n\t},\n\tsetLabelBoundary: function (argIndex) {\n\t\tif (this._label === null) return null;\n\t\tvar loc = Location.NONE;\n\t\tif (this._label !== null) loc = this._label.getLocation(argIndex);\n\t\tvar newLoc = null;\n\t\tswitch (loc) {\n\t\t\tcase Location.BOUNDARY:\n\t\t\t\tnewLoc = Location.INTERIOR;\n\t\t\t\tbreak;\n\t\t\tcase Location.INTERIOR:\n\t\t\t\tnewLoc = Location.BOUNDARY;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tnewLoc = Location.BOUNDARY;\n\t\t\t\tbreak;\n\t\t}\n\t\tthis._label.setLocation(argIndex, newLoc);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Node;\n\t}\n});\n","import Location from '../geom/Location';\nimport Coordinate from '../geom/Coordinate';\nimport Node from './Node';\nimport extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default function NodeMap() {\n\tthis.nodeMap = new TreeMap();\n\tthis.nodeFact = null;\n\tlet nodeFact = arguments[0];\n\tthis.nodeFact = nodeFact;\n}\nextend(NodeMap.prototype, {\n\tfind: function (coord) {\n\t\treturn this.nodeMap.get(coord);\n\t},\n\taddNode: function () {\n\t\tif (arguments[0] instanceof Coordinate) {\n\t\t\tlet coord = arguments[0];\n\t\t\tvar node = this.nodeMap.get(coord);\n\t\t\tif (node === null) {\n\t\t\t\tnode = this.nodeFact.createNode(coord);\n\t\t\t\tthis.nodeMap.put(coord, node);\n\t\t\t}\n\t\t\treturn node;\n\t\t} else if (arguments[0] instanceof Node) {\n\t\t\tlet n = arguments[0];\n\t\t\tvar node = this.nodeMap.get(n.getCoordinate());\n\t\t\tif (node === null) {\n\t\t\t\tthis.nodeMap.put(n.getCoordinate(), n);\n\t\t\t\treturn n;\n\t\t\t}\n\t\t\tnode.mergeLabel(n);\n\t\t\treturn node;\n\t\t}\n\t},\n\tprint: function (out) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar n = it.next();\n\t\t\tn.print(out);\n\t\t}\n\t},\n\titerator: function () {\n\t\treturn this.nodeMap.values().iterator();\n\t},\n\tvalues: function () {\n\t\treturn this.nodeMap.values();\n\t},\n\tgetBoundaryNodes: function (geomIndex) {\n\t\tvar bdyNodes = new ArrayList();\n\t\tfor (var i = this.iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (node.getLabel().getLocation(geomIndex) === Location.BOUNDARY) bdyNodes.add(node);\n\t\t}\n\t\treturn bdyNodes;\n\t},\n\tadd: function (e) {\n\t\tvar p = e.getCoordinate();\n\t\tvar n = this.addNode(p);\n\t\tn.add(e);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn NodeMap;\n\t}\n});\n","import extend from '../../../../extend';\nimport Orientation from '../algorithm/Orientation';\nimport Comparable from '../../../../java/lang/Comparable';\nimport Quadrant from './Quadrant';\nimport Assert from '../util/Assert';\nexport default function EdgeEnd() {\n\tthis._edge = null;\n\tthis._label = null;\n\tthis._node = null;\n\tthis._p0 = null;\n\tthis._p1 = null;\n\tthis._dx = null;\n\tthis._dy = null;\n\tthis._quadrant = null;\n\tif (arguments.length === 1) {\n\t\tlet edge = arguments[0];\n\t\tthis._edge = edge;\n\t} else if (arguments.length === 3) {\n\t\tlet edge = arguments[0], p0 = arguments[1], p1 = arguments[2];\n\t\tEdgeEnd.call(this, edge, p0, p1, null);\n\t} else if (arguments.length === 4) {\n\t\tlet edge = arguments[0], p0 = arguments[1], p1 = arguments[2], label = arguments[3];\n\t\tEdgeEnd.call(this, edge);\n\t\tthis.init(p0, p1);\n\t\tthis._label = label;\n\t}\n}\nextend(EdgeEnd.prototype, {\n\tcompareDirection: function (e) {\n\t\tif (this._dx === e._dx && this._dy === e._dy) return 0;\n\t\tif (this._quadrant > e._quadrant) return 1;\n\t\tif (this._quadrant < e._quadrant) return -1;\n\t\treturn Orientation.index(e._p0, e._p1, this._p1);\n\t},\n\tgetDy: function () {\n\t\treturn this._dy;\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._p0;\n\t},\n\tsetNode: function (node) {\n\t\tthis._node = node;\n\t},\n\tprint: function (out) {\n\t\tvar angle = Math.atan2(this._dy, this._dx);\n\t\tvar className = this.getClass().getName();\n\t\tvar lastDotPos = className.lastIndexOf('.');\n\t\tvar name = className.substring(lastDotPos + 1);\n\t\tout.print(\" \" + name + \": \" + this._p0 + \" - \" + this._p1 + \" \" + this._quadrant + \":\" + angle + \" \" + this._label);\n\t},\n\tcompareTo: function (obj) {\n\t\tvar e = obj;\n\t\treturn this.compareDirection(e);\n\t},\n\tgetDirectedCoordinate: function () {\n\t\treturn this._p1;\n\t},\n\tgetDx: function () {\n\t\treturn this._dx;\n\t},\n\tgetLabel: function () {\n\t\treturn this._label;\n\t},\n\tgetEdge: function () {\n\t\treturn this._edge;\n\t},\n\tgetQuadrant: function () {\n\t\treturn this._quadrant;\n\t},\n\tgetNode: function () {\n\t\treturn this._node;\n\t},\n\ttoString: function () {\n\t\tvar angle = Math.atan2(this._dy, this._dx);\n\t\tvar className = this.getClass().getName();\n\t\tvar lastDotPos = className.lastIndexOf('.');\n\t\tvar name = className.substring(lastDotPos + 1);\n\t\treturn \" \" + name + \": \" + this._p0 + \" - \" + this._p1 + \" \" + this._quadrant + \":\" + angle + \" \" + this._label;\n\t},\n\tcomputeLabel: function (boundaryNodeRule) {},\n\tinit: function (p0, p1) {\n\t\tthis._p0 = p0;\n\t\tthis._p1 = p1;\n\t\tthis._dx = p1.x - p0.x;\n\t\tthis._dy = p1.y - p0.y;\n\t\tthis._quadrant = Quadrant.quadrant(this._dx, this._dy);\n\t\tAssert.isTrue(!(this._dx === 0 && this._dy === 0), \"EdgeEnd with identical endpoints found\");\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeEnd;\n\t}\n});\n","import Coordinate from './Coordinate';\nimport extend from '../../../../extend';\nimport RuntimeException from '../../../../java/lang/RuntimeException';\nimport inherits from '../../../../inherits';\nexport default function TopologyException() {\n\tthis.pt = null;\n\tif (arguments.length === 1) {\n\t\tlet msg = arguments[0];\n\t\tRuntimeException.call(this, msg);\n\t} else if (arguments.length === 2) {\n\t\tlet msg = arguments[0], pt = arguments[1];\n\t\tRuntimeException.call(this, TopologyException.msgWithCoord(msg, pt));\n\t\tthis.name = 'TopologyException';\n\t\tthis.pt = new Coordinate(pt);\n\t}\n}\ninherits(TopologyException, RuntimeException);\nextend(TopologyException.prototype, {\n\tgetCoordinate: function () {\n\t\treturn this.pt;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TopologyException;\n\t}\n});\nTopologyException.msgWithCoord = function (msg, pt) {\n\tif (pt !== null) return msg + \" [ \" + pt + \" ]\";\n\treturn msg;\n};\n","import Location from '../geom/Location';\nimport EdgeEnd from './EdgeEnd';\nimport Position from './Position';\nimport TopologyException from '../geom/TopologyException';\nimport extend from '../../../../extend';\nimport Label from './Label';\nimport inherits from '../../../../inherits';\nexport default function DirectedEdge() {\n\tthis._isForward = null;\n\tthis._isInResult = false;\n\tthis._isVisited = false;\n\tthis._sym = null;\n\tthis._next = null;\n\tthis._nextMin = null;\n\tthis._edgeRing = null;\n\tthis._minEdgeRing = null;\n\tthis._depth = [0, -999, -999];\n\tlet edge = arguments[0], isForward = arguments[1];\n\tEdgeEnd.call(this, edge);\n\tthis._isForward = isForward;\n\tif (isForward) {\n\t\tthis.init(edge.getCoordinate(0), edge.getCoordinate(1));\n\t} else {\n\t\tvar n = edge.getNumPoints() - 1;\n\t\tthis.init(edge.getCoordinate(n), edge.getCoordinate(n - 1));\n\t}\n\tthis.computeDirectedLabel();\n}\ninherits(DirectedEdge, EdgeEnd);\nextend(DirectedEdge.prototype, {\n\tgetNextMin: function () {\n\t\treturn this._nextMin;\n\t},\n\tgetDepth: function (position) {\n\t\treturn this._depth[position];\n\t},\n\tsetVisited: function (isVisited) {\n\t\tthis._isVisited = isVisited;\n\t},\n\tcomputeDirectedLabel: function () {\n\t\tthis._label = new Label(this._edge.getLabel());\n\t\tif (!this._isForward) this._label.flip();\n\t},\n\tgetNext: function () {\n\t\treturn this._next;\n\t},\n\tsetDepth: function (position, depthVal) {\n\t\tif (this._depth[position] !== -999) {\n\t\t\tif (this._depth[position] !== depthVal) throw new TopologyException(\"assigned depths do not match\", this.getCoordinate());\n\t\t}\n\t\tthis._depth[position] = depthVal;\n\t},\n\tisInteriorAreaEdge: function () {\n\t\tvar isInteriorAreaEdge = true;\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tif (!(this._label.isArea(i) && this._label.getLocation(i, Position.LEFT) === Location.INTERIOR && this._label.getLocation(i, Position.RIGHT) === Location.INTERIOR)) {\n\t\t\t\tisInteriorAreaEdge = false;\n\t\t\t}\n\t\t}\n\t\treturn isInteriorAreaEdge;\n\t},\n\tsetNextMin: function (nextMin) {\n\t\tthis._nextMin = nextMin;\n\t},\n\tprint: function (out) {\n\t\tEdgeEnd.prototype.print.call(this, out);\n\t\tout.print(\" \" + this._depth[Position.LEFT] + \"/\" + this._depth[Position.RIGHT]);\n\t\tout.print(\" (\" + this.getDepthDelta() + \")\");\n\t\tif (this._isInResult) out.print(\" inResult\");\n\t},\n\tsetMinEdgeRing: function (minEdgeRing) {\n\t\tthis._minEdgeRing = minEdgeRing;\n\t},\n\tisLineEdge: function () {\n\t\tvar isLine = this._label.isLine(0) || this._label.isLine(1);\n\t\tvar isExteriorIfArea0 = !this._label.isArea(0) || this._label.allPositionsEqual(0, Location.EXTERIOR);\n\t\tvar isExteriorIfArea1 = !this._label.isArea(1) || this._label.allPositionsEqual(1, Location.EXTERIOR);\n\t\treturn isLine && isExteriorIfArea0 && isExteriorIfArea1;\n\t},\n\tsetEdgeRing: function (edgeRing) {\n\t\tthis._edgeRing = edgeRing;\n\t},\n\tgetMinEdgeRing: function () {\n\t\treturn this._minEdgeRing;\n\t},\n\tgetDepthDelta: function () {\n\t\tvar depthDelta = this._edge.getDepthDelta();\n\t\tif (!this._isForward) depthDelta = -depthDelta;\n\t\treturn depthDelta;\n\t},\n\tsetInResult: function (isInResult) {\n\t\tthis._isInResult = isInResult;\n\t},\n\tgetSym: function () {\n\t\treturn this._sym;\n\t},\n\tisForward: function () {\n\t\treturn this._isForward;\n\t},\n\tgetEdge: function () {\n\t\treturn this._edge;\n\t},\n\tprintEdge: function (out) {\n\t\tthis.print(out);\n\t\tout.print(\" \");\n\t\tif (this._isForward) this._edge.print(out); else this._edge.printReverse(out);\n\t},\n\tsetSym: function (de) {\n\t\tthis._sym = de;\n\t},\n\tsetVisitedEdge: function (isVisited) {\n\t\tthis.setVisited(isVisited);\n\t\tthis._sym.setVisited(isVisited);\n\t},\n\tsetEdgeDepths: function (position, depth) {\n\t\tvar depthDelta = this.getEdge().getDepthDelta();\n\t\tif (!this._isForward) depthDelta = -depthDelta;\n\t\tvar directionFactor = 1;\n\t\tif (position === Position.LEFT) directionFactor = -1;\n\t\tvar oppositePos = Position.opposite(position);\n\t\tvar delta = depthDelta * directionFactor;\n\t\tvar oppositeDepth = depth + delta;\n\t\tthis.setDepth(position, depth);\n\t\tthis.setDepth(oppositePos, oppositeDepth);\n\t},\n\tgetEdgeRing: function () {\n\t\treturn this._edgeRing;\n\t},\n\tisInResult: function () {\n\t\treturn this._isInResult;\n\t},\n\tsetNext: function (next) {\n\t\tthis._next = next;\n\t},\n\tisVisited: function () {\n\t\treturn this._isVisited;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DirectedEdge;\n\t}\n});\nDirectedEdge.depthFactor = function (currLocation, nextLocation) {\n\tif (currLocation === Location.EXTERIOR && nextLocation === Location.INTERIOR) return 1; else if (currLocation === Location.INTERIOR && nextLocation === Location.EXTERIOR) return -1;\n\treturn 0;\n};\n","import Node from './Node';\nimport extend from '../../../../extend';\nexport default function NodeFactory() {}\nextend(NodeFactory.prototype, {\n\tcreateNode: function (coord) {\n\t\treturn new Node(coord, null);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn NodeFactory;\n\t}\n});\n","import Location from '../geom/Location';\nimport Coordinate from '../geom/Coordinate';\nimport Node from './Node';\nimport extend from '../../../../extend';\nimport NodeMap from './NodeMap';\nimport Orientation from '../algorithm/Orientation';\nimport DirectedEdge from './DirectedEdge';\nimport System from '../../../../java/lang/System';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Quadrant from './Quadrant';\nimport NodeFactory from './NodeFactory';\nexport default function PlanarGraph() {\n\tthis._edges = new ArrayList();\n\tthis._nodes = null;\n\tthis._edgeEndList = new ArrayList();\n\tif (arguments.length === 0) {\n\t\tthis._nodes = new NodeMap(new NodeFactory());\n\t} else if (arguments.length === 1) {\n\t\tlet nodeFact = arguments[0];\n\t\tthis._nodes = new NodeMap(nodeFact);\n\t}\n}\nextend(PlanarGraph.prototype, {\n\tprintEdges: function (out) {\n\t\tout.println(\"Edges:\");\n\t\tfor (var i = 0; i < this._edges.size(); i++) {\n\t\t\tout.println(\"edge \" + i + \":\");\n\t\t\tvar e = this._edges.get(i);\n\t\t\te.print(out);\n\t\t\te.eiList.print(out);\n\t\t}\n\t},\n\tfind: function (coord) {\n\t\treturn this._nodes.find(coord);\n\t},\n\taddNode: function () {\n\t\tif (arguments[0] instanceof Node) {\n\t\t\tlet node = arguments[0];\n\t\t\treturn this._nodes.addNode(node);\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet coord = arguments[0];\n\t\t\treturn this._nodes.addNode(coord);\n\t\t}\n\t},\n\tgetNodeIterator: function () {\n\t\treturn this._nodes.iterator();\n\t},\n\tlinkResultDirectedEdges: function () {\n\t\tfor (var nodeit = this._nodes.iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().linkResultDirectedEdges();\n\t\t}\n\t},\n\tdebugPrintln: function (o) {\n\t\tSystem.out.println(o);\n\t},\n\tisBoundaryNode: function (geomIndex, coord) {\n\t\tvar node = this._nodes.find(coord);\n\t\tif (node === null) return false;\n\t\tvar label = node.getLabel();\n\t\tif (label !== null && label.getLocation(geomIndex) === Location.BOUNDARY) return true;\n\t\treturn false;\n\t},\n\tlinkAllDirectedEdges: function () {\n\t\tfor (var nodeit = this._nodes.iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().linkAllDirectedEdges();\n\t\t}\n\t},\n\tmatchInSameDirection: function (p0, p1, ep0, ep1) {\n\t\tif (!p0.equals(ep0)) return false;\n\t\tif (Orientation.index(p0, p1, ep1) === Orientation.COLLINEAR && Quadrant.quadrant(p0, p1) === Quadrant.quadrant(ep0, ep1)) return true;\n\t\treturn false;\n\t},\n\tgetEdgeEnds: function () {\n\t\treturn this._edgeEndList;\n\t},\n\tdebugPrint: function (o) {\n\t\tSystem.out.print(o);\n\t},\n\tgetEdgeIterator: function () {\n\t\treturn this._edges.iterator();\n\t},\n\tfindEdgeInSameDirection: function (p0, p1) {\n\t\tfor (var i = 0; i < this._edges.size(); i++) {\n\t\t\tvar e = this._edges.get(i);\n\t\t\tvar eCoord = e.getCoordinates();\n\t\t\tif (this.matchInSameDirection(p0, p1, eCoord[0], eCoord[1])) return e;\n\t\t\tif (this.matchInSameDirection(p0, p1, eCoord[eCoord.length - 1], eCoord[eCoord.length - 2])) return e;\n\t\t}\n\t\treturn null;\n\t},\n\tinsertEdge: function (e) {\n\t\tthis._edges.add(e);\n\t},\n\tfindEdgeEnd: function (e) {\n\t\tfor (var i = this.getEdgeEnds().iterator(); i.hasNext(); ) {\n\t\t\tvar ee = i.next();\n\t\t\tif (ee.getEdge() === e) return ee;\n\t\t}\n\t\treturn null;\n\t},\n\taddEdges: function (edgesToAdd) {\n\t\tfor (var it = edgesToAdd.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tthis._edges.add(e);\n\t\t\tvar de1 = new DirectedEdge(e, true);\n\t\t\tvar de2 = new DirectedEdge(e, false);\n\t\t\tde1.setSym(de2);\n\t\t\tde2.setSym(de1);\n\t\t\tthis.add(de1);\n\t\t\tthis.add(de2);\n\t\t}\n\t},\n\tadd: function (e) {\n\t\tthis._nodes.add(e);\n\t\tthis._edgeEndList.add(e);\n\t},\n\tgetNodes: function () {\n\t\treturn this._nodes.values();\n\t},\n\tfindEdge: function (p0, p1) {\n\t\tfor (var i = 0; i < this._edges.size(); i++) {\n\t\t\tvar e = this._edges.get(i);\n\t\t\tvar eCoord = e.getCoordinates();\n\t\t\tif (p0.equals(eCoord[0]) && p1.equals(eCoord[1])) return e;\n\t\t}\n\t\treturn null;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PlanarGraph;\n\t}\n});\nPlanarGraph.linkResultDirectedEdges = function (nodes) {\n\tfor (var nodeit = nodes.iterator(); nodeit.hasNext(); ) {\n\t\tvar node = nodeit.next();\n\t\tnode.getEdges().linkResultDirectedEdges();\n\t}\n};\n","import PointLocator from '../algorithm/PointLocator';\nimport Location from '../geom/Location';\nimport LineString from '../geom/LineString';\nimport HashMap from '../../../../java/util/HashMap';\nimport Geometry from '../geom/Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport Position from './Position';\nimport Coordinate from '../geom/Coordinate';\nimport Point from '../geom/Point';\nimport Polygon from '../geom/Polygon';\nimport MultiPoint from '../geom/MultiPoint';\nimport SimpleMCSweepLineIntersector from './index/SimpleMCSweepLineIntersector';\nimport LinearRing from '../geom/LinearRing';\nimport BoundaryNodeRule from '../algorithm/BoundaryNodeRule';\nimport extend from '../../../../extend';\nimport Orientation from '../algorithm/Orientation';\nimport SegmentIntersector from './index/SegmentIntersector';\nimport MultiPolygon from '../geom/MultiPolygon';\nimport Label from './Label';\nimport GeometryCollection from '../geom/GeometryCollection';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport Polygonal from '../geom/Polygonal';\nimport IndexedPointInAreaLocator from '../algorithm/locate/IndexedPointInAreaLocator';\nimport Assert from '../util/Assert';\nimport Edge from './Edge';\nimport inherits from '../../../../inherits';\nimport MultiLineString from '../geom/MultiLineString';\nimport PlanarGraph from './PlanarGraph';\nexport default function GeometryGraph() {\n\tPlanarGraph.apply(this);\n\tthis._parentGeom = null;\n\tthis._lineEdgeMap = new HashMap();\n\tthis._boundaryNodeRule = null;\n\tthis._useBoundaryDeterminationRule = true;\n\tthis._argIndex = null;\n\tthis._boundaryNodes = null;\n\tthis._hasTooFewPoints = false;\n\tthis._invalidPoint = null;\n\tthis._areaPtLocator = null;\n\tthis._ptLocator = new PointLocator();\n\tif (arguments.length === 2) {\n\t\tlet argIndex = arguments[0], parentGeom = arguments[1];\n\t\tGeometryGraph.call(this, argIndex, parentGeom, BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE);\n\t} else if (arguments.length === 3) {\n\t\tlet argIndex = arguments[0], parentGeom = arguments[1], boundaryNodeRule = arguments[2];\n\t\tthis._argIndex = argIndex;\n\t\tthis._parentGeom = parentGeom;\n\t\tthis._boundaryNodeRule = boundaryNodeRule;\n\t\tif (parentGeom !== null) {\n\t\t\tthis.add(parentGeom);\n\t\t}\n\t}\n}\ninherits(GeometryGraph, PlanarGraph);\nextend(GeometryGraph.prototype, {\n\tinsertBoundaryPoint: function (argIndex, coord) {\n\t\tvar n = this._nodes.addNode(coord);\n\t\tvar lbl = n.getLabel();\n\t\tvar boundaryCount = 1;\n\t\tvar loc = Location.NONE;\n\t\tloc = lbl.getLocation(argIndex, Position.ON);\n\t\tif (loc === Location.BOUNDARY) boundaryCount++;\n\t\tvar newLoc = GeometryGraph.determineBoundary(this._boundaryNodeRule, boundaryCount);\n\t\tlbl.setLocation(argIndex, newLoc);\n\t},\n\tcomputeSelfNodes: function () {\n\t\tif (arguments.length === 2) {\n\t\t\tlet li = arguments[0], computeRingSelfNodes = arguments[1];\n\t\t\treturn this.computeSelfNodes(li, computeRingSelfNodes, false);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet li = arguments[0], computeRingSelfNodes = arguments[1], isDoneIfProperInt = arguments[2];\n\t\t\tvar si = new SegmentIntersector(li, true, false);\n\t\t\tsi.setIsDoneIfProperInt(isDoneIfProperInt);\n\t\t\tvar esi = this.createEdgeSetIntersector();\n\t\t\tvar isRings = this._parentGeom instanceof LinearRing || this._parentGeom instanceof Polygon || this._parentGeom instanceof MultiPolygon;\n\t\t\tvar computeAllSegments = computeRingSelfNodes || !isRings;\n\t\t\tesi.computeIntersections(this._edges, si, computeAllSegments);\n\t\t\tthis.addSelfIntersectionNodes(this._argIndex);\n\t\t\treturn si;\n\t\t}\n\t},\n\tcomputeSplitEdges: function (edgelist) {\n\t\tfor (var i = this._edges.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\te.eiList.addSplitEdges(edgelist);\n\t\t}\n\t},\n\tcomputeEdgeIntersections: function (g, li, includeProper) {\n\t\tvar si = new SegmentIntersector(li, includeProper, true);\n\t\tsi.setBoundaryNodes(this.getBoundaryNodes(), g.getBoundaryNodes());\n\t\tvar esi = this.createEdgeSetIntersector();\n\t\tesi.computeIntersections(this._edges, g._edges, si);\n\t\treturn si;\n\t},\n\tgetGeometry: function () {\n\t\treturn this._parentGeom;\n\t},\n\tgetBoundaryNodeRule: function () {\n\t\treturn this._boundaryNodeRule;\n\t},\n\thasTooFewPoints: function () {\n\t\treturn this._hasTooFewPoints;\n\t},\n\taddPoint: function () {\n\t\tif (arguments[0] instanceof Point) {\n\t\t\tlet p = arguments[0];\n\t\t\tvar coord = p.getCoordinate();\n\t\t\tthis.insertPoint(this._argIndex, coord, Location.INTERIOR);\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet pt = arguments[0];\n\t\t\tthis.insertPoint(this._argIndex, pt, Location.INTERIOR);\n\t\t}\n\t},\n\taddPolygon: function (p) {\n\t\tthis.addPolygonRing(p.getExteriorRing(), Location.EXTERIOR, Location.INTERIOR);\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar hole = p.getInteriorRingN(i);\n\t\t\tthis.addPolygonRing(hole, Location.INTERIOR, Location.EXTERIOR);\n\t\t}\n\t},\n\taddEdge: function (e) {\n\t\tthis.insertEdge(e);\n\t\tvar coord = e.getCoordinates();\n\t\tthis.insertPoint(this._argIndex, coord[0], Location.BOUNDARY);\n\t\tthis.insertPoint(this._argIndex, coord[coord.length - 1], Location.BOUNDARY);\n\t},\n\taddLineString: function (line) {\n\t\tvar coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());\n\t\tif (coord.length < 2) {\n\t\t\tthis._hasTooFewPoints = true;\n\t\t\tthis._invalidPoint = coord[0];\n\t\t\treturn null;\n\t\t}\n\t\tvar e = new Edge(coord, new Label(this._argIndex, Location.INTERIOR));\n\t\tthis._lineEdgeMap.put(line, e);\n\t\tthis.insertEdge(e);\n\t\tAssert.isTrue(coord.length >= 2, \"found LineString with single point\");\n\t\tthis.insertBoundaryPoint(this._argIndex, coord[0]);\n\t\tthis.insertBoundaryPoint(this._argIndex, coord[coord.length - 1]);\n\t},\n\tgetInvalidPoint: function () {\n\t\treturn this._invalidPoint;\n\t},\n\tgetBoundaryPoints: function () {\n\t\tvar coll = this.getBoundaryNodes();\n\t\tvar pts = new Array(coll.size()).fill(null);\n\t\tvar i = 0;\n\t\tfor (var it = coll.iterator(); it.hasNext(); ) {\n\t\t\tvar node = it.next();\n\t\t\tpts[i++] = node.getCoordinate().copy();\n\t\t}\n\t\treturn pts;\n\t},\n\tgetBoundaryNodes: function () {\n\t\tif (this._boundaryNodes === null) this._boundaryNodes = this._nodes.getBoundaryNodes(this._argIndex);\n\t\treturn this._boundaryNodes;\n\t},\n\taddSelfIntersectionNode: function (argIndex, coord, loc) {\n\t\tif (this.isBoundaryNode(argIndex, coord)) return null;\n\t\tif (loc === Location.BOUNDARY && this._useBoundaryDeterminationRule) this.insertBoundaryPoint(argIndex, coord); else this.insertPoint(argIndex, coord, loc);\n\t},\n\taddPolygonRing: function (lr, cwLeft, cwRight) {\n\t\tif (lr.isEmpty()) return null;\n\t\tvar coord = CoordinateArrays.removeRepeatedPoints(lr.getCoordinates());\n\t\tif (coord.length < 4) {\n\t\t\tthis._hasTooFewPoints = true;\n\t\t\tthis._invalidPoint = coord[0];\n\t\t\treturn null;\n\t\t}\n\t\tvar left = cwLeft;\n\t\tvar right = cwRight;\n\t\tif (Orientation.isCCW(coord)) {\n\t\t\tleft = cwRight;\n\t\t\tright = cwLeft;\n\t\t}\n\t\tvar e = new Edge(coord, new Label(this._argIndex, Location.BOUNDARY, left, right));\n\t\tthis._lineEdgeMap.put(lr, e);\n\t\tthis.insertEdge(e);\n\t\tthis.insertPoint(this._argIndex, coord[0], Location.BOUNDARY);\n\t},\n\tinsertPoint: function (argIndex, coord, onLocation) {\n\t\tvar n = this._nodes.addNode(coord);\n\t\tvar lbl = n.getLabel();\n\t\tif (lbl === null) {\n\t\t\tn._label = new Label(argIndex, onLocation);\n\t\t} else lbl.setLocation(argIndex, onLocation);\n\t},\n\tcreateEdgeSetIntersector: function () {\n\t\treturn new SimpleMCSweepLineIntersector();\n\t},\n\taddSelfIntersectionNodes: function (argIndex) {\n\t\tfor (var i = this._edges.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar eLoc = e.getLabel().getLocation(argIndex);\n\t\t\tfor (var eiIt = e.eiList.iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tthis.addSelfIntersectionNode(argIndex, ei.coord, eLoc);\n\t\t\t}\n\t\t}\n\t},\n\tadd: function () {\n\t\tif (arguments.length === 1 && arguments[0] instanceof Geometry) {\n\t\t\tlet g = arguments[0];\n\t\t\tif (g.isEmpty()) return null;\n\t\t\tif (g instanceof MultiPolygon) this._useBoundaryDeterminationRule = false;\n\t\t\tif (g instanceof Polygon) this.addPolygon(g); else if (g instanceof LineString) this.addLineString(g); else if (g instanceof Point) this.addPoint(g); else if (g instanceof MultiPoint) this.addCollection(g); else if (g instanceof MultiLineString) this.addCollection(g); else if (g instanceof MultiPolygon) this.addCollection(g); else if (g instanceof GeometryCollection) this.addCollection(g); else throw new UnsupportedOperationException(g.getClass().getName());\n\t\t} else return PlanarGraph.prototype.add.apply(this, arguments);\n\t},\n\taddCollection: function (gc) {\n\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\tvar g = gc.getGeometryN(i);\n\t\t\tthis.add(g);\n\t\t}\n\t},\n\tlocate: function (pt) {\n\t\tif (hasInterface(this._parentGeom, Polygonal) && this._parentGeom.getNumGeometries() > 50) {\n\t\t\tif (this._areaPtLocator === null) {\n\t\t\t\tthis._areaPtLocator = new IndexedPointInAreaLocator(this._parentGeom);\n\t\t\t}\n\t\t\treturn this._areaPtLocator.locate(pt);\n\t\t}\n\t\treturn this._ptLocator.locate(pt, this._parentGeom);\n\t},\n\tfindEdge: function () {\n\t\tif (arguments.length === 1 && arguments[0] instanceof LineString) {\n\t\t\tlet line = arguments[0];\n\t\t\treturn this._lineEdgeMap.get(line);\n\t\t} else return PlanarGraph.prototype.findEdge.apply(this, arguments);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryGraph;\n\t}\n});\nGeometryGraph.determineBoundary = function (boundaryNodeRule, boundaryCount) {\n\treturn boundaryNodeRule.isInBoundary(boundaryCount) ? Location.BOUNDARY : Location.INTERIOR;\n};\n","import extend from '../../../../../extend';\nexport default function KdNodeVisitor() {}\nextend(KdNodeVisitor.prototype, {\n\tvisit: function (node) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn KdNodeVisitor;\n\t}\n});\n","import Coordinate from '../../geom/Coordinate';\nimport extend from '../../../../../extend';\nexport default function KdNode() {\n\tthis._p = null;\n\tthis._data = null;\n\tthis._left = null;\n\tthis._right = null;\n\tthis._count = null;\n\tif (arguments.length === 2) {\n\t\tlet p = arguments[0], data = arguments[1];\n\t\tthis._p = new Coordinate(p);\n\t\tthis._left = null;\n\t\tthis._right = null;\n\t\tthis._count = 1;\n\t\tthis._data = data;\n\t} else if (arguments.length === 3) {\n\t\tlet _x = arguments[0], _y = arguments[1], data = arguments[2];\n\t\tthis._p = new Coordinate(_x, _y);\n\t\tthis._left = null;\n\t\tthis._right = null;\n\t\tthis._count = 1;\n\t\tthis._data = data;\n\t}\n}\nextend(KdNode.prototype, {\n\tisRepeated: function () {\n\t\treturn this._count > 1;\n\t},\n\tgetRight: function () {\n\t\treturn this._right;\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._p;\n\t},\n\tsetLeft: function (_left) {\n\t\tthis._left = _left;\n\t},\n\tgetX: function () {\n\t\treturn this._p.x;\n\t},\n\tgetData: function () {\n\t\treturn this._data;\n\t},\n\tgetCount: function () {\n\t\treturn this._count;\n\t},\n\tgetLeft: function () {\n\t\treturn this._left;\n\t},\n\tgetY: function () {\n\t\treturn this._p.y;\n\t},\n\tincrement: function () {\n\t\tthis._count = this._count + 1;\n\t},\n\tsetRight: function (_right) {\n\t\tthis._right = _right;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn KdNode;\n\t}\n});\n","import CoordinateList from '../../geom/CoordinateList';\nimport hasInterface from '../../../../../hasInterface';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport KdNodeVisitor from './KdNodeVisitor';\nimport Envelope from '../../geom/Envelope';\nimport List from '../../../../../java/util/List';\nimport KdNode from './KdNode';\nexport default function KdTree() {\n\tthis._root = null;\n\tthis._numberOfNodes = null;\n\tthis._tolerance = null;\n\tif (arguments.length === 0) {\n\t\tKdTree.call(this, 0.0);\n\t} else if (arguments.length === 1) {\n\t\tlet tolerance = arguments[0];\n\t\tthis._tolerance = tolerance;\n\t}\n}\nextend(KdTree.prototype, {\n\tinsert: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet p = arguments[0];\n\t\t\treturn this.insert(p, null);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p = arguments[0], data = arguments[1];\n\t\t\tif (this._root === null) {\n\t\t\t\tthis._root = new KdNode(p, data);\n\t\t\t\treturn this._root;\n\t\t\t}\n\t\t\tif (this._tolerance > 0) {\n\t\t\t\tvar matchNode = this.findBestMatchNode(p);\n\t\t\t\tif (matchNode !== null) {\n\t\t\t\t\tmatchNode.increment();\n\t\t\t\t\treturn matchNode;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.insertExact(p, data);\n\t\t}\n\t},\n\tquery: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet queryEnv = arguments[0];\n\t\t\tvar result = new ArrayList();\n\t\t\tthis.query(queryEnv, result);\n\t\t\treturn result;\n\t\t} else if (arguments.length === 2) {\n\t\t\tif (arguments[0] instanceof Envelope && hasInterface(arguments[1], List)) {\n\t\t\t\tlet queryEnv = arguments[0], result = arguments[1];\n\t\t\t\tthis.queryNode(this._root, queryEnv, true, {\n\t\t\t\t\tinterfaces_: function () {\n\t\t\t\t\t\treturn [KdNodeVisitor];\n\t\t\t\t\t},\n\t\t\t\t\tvisit: function (node) {\n\t\t\t\t\t\tresult.add(node);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (arguments[0] instanceof Envelope && hasInterface(arguments[1], KdNodeVisitor)) {\n\t\t\t\tlet queryEnv = arguments[0], visitor = arguments[1];\n\t\t\t\tthis.queryNode(this._root, queryEnv, true, visitor);\n\t\t\t}\n\t\t}\n\t},\n\tqueryNode: function (currentNode, queryEnv, odd, visitor) {\n\t\tif (currentNode === null) return null;\n\t\tvar min = null;\n\t\tvar max = null;\n\t\tvar discriminant = null;\n\t\tif (odd) {\n\t\t\tmin = queryEnv.getMinX();\n\t\t\tmax = queryEnv.getMaxX();\n\t\t\tdiscriminant = currentNode.getX();\n\t\t} else {\n\t\t\tmin = queryEnv.getMinY();\n\t\t\tmax = queryEnv.getMaxY();\n\t\t\tdiscriminant = currentNode.getY();\n\t\t}\n\t\tvar searchLeft = min < discriminant;\n\t\tvar searchRight = discriminant <= max;\n\t\tif (searchLeft) {\n\t\t\tthis.queryNode(currentNode.getLeft(), queryEnv, !odd, visitor);\n\t\t}\n\t\tif (queryEnv.contains(currentNode.getCoordinate())) {\n\t\t\tvisitor.visit(currentNode);\n\t\t}\n\t\tif (searchRight) {\n\t\t\tthis.queryNode(currentNode.getRight(), queryEnv, !odd, visitor);\n\t\t}\n\t},\n\tfindBestMatchNode: function (p) {\n\t\tvar visitor = new BestMatchVisitor(p, this._tolerance);\n\t\tthis.query(visitor.queryEnvelope(), visitor);\n\t\treturn visitor.getNode();\n\t},\n\tisEmpty: function () {\n\t\tif (this._root === null) return true;\n\t\treturn false;\n\t},\n\tinsertExact: function (p, data) {\n\t\tvar currentNode = this._root;\n\t\tvar leafNode = this._root;\n\t\tvar isOddLevel = true;\n\t\tvar isLessThan = true;\n\t\twhile (currentNode !== null) {\n\t\t\tif (currentNode !== null) {\n\t\t\t\tvar isInTolerance = p.distance(currentNode.getCoordinate()) <= this._tolerance;\n\t\t\t\tif (isInTolerance) {\n\t\t\t\t\tcurrentNode.increment();\n\t\t\t\t\treturn currentNode;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isOddLevel) {\n\t\t\t\tisLessThan = p.x < currentNode.getX();\n\t\t\t} else {\n\t\t\t\tisLessThan = p.y < currentNode.getY();\n\t\t\t}\n\t\t\tleafNode = currentNode;\n\t\t\tif (isLessThan) {\n\t\t\t\tcurrentNode = currentNode.getLeft();\n\t\t\t} else {\n\t\t\t\tcurrentNode = currentNode.getRight();\n\t\t\t}\n\t\t\tisOddLevel = !isOddLevel;\n\t\t}\n\t\tthis._numberOfNodes = this._numberOfNodes + 1;\n\t\tvar node = new KdNode(p, data);\n\t\tif (isLessThan) {\n\t\t\tleafNode.setLeft(node);\n\t\t} else {\n\t\t\tleafNode.setRight(node);\n\t\t}\n\t\treturn node;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn KdTree;\n\t}\n});\nKdTree.toCoordinates = function () {\n\tif (arguments.length === 1) {\n\t\tlet kdnodes = arguments[0];\n\t\treturn KdTree.toCoordinates(kdnodes, false);\n\t} else if (arguments.length === 2) {\n\t\tlet kdnodes = arguments[0], includeRepeated = arguments[1];\n\t\tvar coord = new CoordinateList();\n\t\tfor (var it = kdnodes.iterator(); it.hasNext(); ) {\n\t\t\tvar node = it.next();\n\t\t\tvar count = includeRepeated ? node.getCount() : 1;\n\t\t\tfor (var i = 0; i < count; i++) {\n\t\t\t\tcoord.add(node.getCoordinate(), true);\n\t\t\t}\n\t\t}\n\t\treturn coord.toCoordinateArray();\n\t}\n};\nfunction BestMatchVisitor() {\n\tthis._tolerance = null;\n\tthis._matchNode = null;\n\tthis._matchDist = 0.0;\n\tthis._p = null;\n\tlet p = arguments[0], tolerance = arguments[1];\n\tthis._p = p;\n\tthis._tolerance = tolerance;\n}\nextend(BestMatchVisitor.prototype, {\n\tvisit: function (node) {\n\t\tvar dist = this._p.distance(node.getCoordinate());\n\t\tvar isInTolerance = dist <= this._tolerance;\n\t\tif (!isInTolerance) return null;\n\t\tvar update = false;\n\t\tif (this._matchNode === null || dist < this._matchDist || this._matchNode !== null && dist === this._matchDist && node.getCoordinate().compareTo(this._matchNode.getCoordinate()) < 1) update = true;\n\t\tif (update) {\n\t\t\tthis._matchNode = node;\n\t\t\tthis._matchDist = dist;\n\t\t}\n\t},\n\tqueryEnvelope: function () {\n\t\tvar queryEnv = new Envelope(this._p);\n\t\tqueryEnv.expandBy(this._tolerance);\n\t\treturn queryEnv;\n\t},\n\tgetNode: function () {\n\t\treturn this._matchNode;\n\t},\n\tinterfaces_: function () {\n\t\treturn [KdNodeVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn BestMatchVisitor;\n\t}\n});\nKdTree.BestMatchVisitor = BestMatchVisitor;\n","import extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Serializable from '../../../../../java/io/Serializable';\nexport default function NodeBase() {\n\tthis._items = new ArrayList();\n\tthis._subnode = new Array(4).fill(null);\n}\nextend(NodeBase.prototype, {\n\thasChildren: function () {\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tisPrunable: function () {\n\t\treturn !(this.hasChildren() || this.hasItems());\n\t},\n\taddAllItems: function (resultItems) {\n\t\tresultItems.addAll(this._items);\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tthis._subnode[i].addAllItems(resultItems);\n\t\t\t}\n\t\t}\n\t\treturn resultItems;\n\t},\n\tgetNodeCount: function () {\n\t\tvar subSize = 0;\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tsubSize += this._subnode[i].size();\n\t\t\t}\n\t\t}\n\t\treturn subSize + 1;\n\t},\n\tsize: function () {\n\t\tvar subSize = 0;\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tsubSize += this._subnode[i].size();\n\t\t\t}\n\t\t}\n\t\treturn subSize + this._items.size();\n\t},\n\taddAllItemsFromOverlapping: function (searchEnv, resultItems) {\n\t\tif (!this.isSearchMatch(searchEnv)) return null;\n\t\tresultItems.addAll(this._items);\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tthis._subnode[i].addAllItemsFromOverlapping(searchEnv, resultItems);\n\t\t\t}\n\t\t}\n\t},\n\tvisitItems: function (searchEnv, visitor) {\n\t\tfor (var i = this._items.iterator(); i.hasNext(); ) {\n\t\t\tvisitor.visitItem(i.next());\n\t\t}\n\t},\n\thasItems: function () {\n\t\treturn !this._items.isEmpty();\n\t},\n\tremove: function (itemEnv, item) {\n\t\tif (!this.isSearchMatch(itemEnv)) return false;\n\t\tvar found = false;\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tfound = this._subnode[i].remove(itemEnv, item);\n\t\t\t\tif (found) {\n\t\t\t\t\tif (this._subnode[i].isPrunable()) this._subnode[i] = null;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (found) return found;\n\t\tfound = this._items.remove(item);\n\t\treturn found;\n\t},\n\tvisit: function (searchEnv, visitor) {\n\t\tif (!this.isSearchMatch(searchEnv)) return null;\n\t\tthis.visitItems(searchEnv, visitor);\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tthis._subnode[i].visit(searchEnv, visitor);\n\t\t\t}\n\t\t}\n\t},\n\tgetItems: function () {\n\t\treturn this._items;\n\t},\n\tdepth: function () {\n\t\tvar maxSubDepth = 0;\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\tvar sqd = this._subnode[i].depth();\n\t\t\t\tif (sqd > maxSubDepth) maxSubDepth = sqd;\n\t\t\t}\n\t\t}\n\t\treturn maxSubDepth + 1;\n\t},\n\tisEmpty: function () {\n\t\tvar isEmpty = true;\n\t\tif (!this._items.isEmpty()) isEmpty = false; else {\n\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\tif (this._subnode[i] !== null) {\n\t\t\t\t\tif (!this._subnode[i].isEmpty()) {\n\t\t\t\t\t\tisEmpty = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isEmpty;\n\t},\n\tadd: function (item) {\n\t\tthis._items.add(item);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn NodeBase;\n\t}\n});\nNodeBase.getSubnodeIndex = function (env, centrex, centrey) {\n\tvar subnodeIndex = -1;\n\tif (env.getMinX() >= centrex) {\n\t\tif (env.getMinY() >= centrey) subnodeIndex = 3;\n\t\tif (env.getMaxY() <= centrey) subnodeIndex = 1;\n\t}\n\tif (env.getMaxX() <= centrex) {\n\t\tif (env.getMinY() >= centrey) subnodeIndex = 2;\n\t\tif (env.getMaxY() <= centrey) subnodeIndex = 0;\n\t}\n\treturn subnodeIndex;\n};\n","import Coordinate from '../../geom/Coordinate';\nimport extend from '../../../../../extend';\nimport DoubleBits from './DoubleBits';\nimport Envelope from '../../geom/Envelope';\nexport default function Key() {\n\tthis._pt = new Coordinate();\n\tthis._level = 0;\n\tthis._env = null;\n\tlet itemEnv = arguments[0];\n\tthis.computeKey(itemEnv);\n}\nextend(Key.prototype, {\n\tgetLevel: function () {\n\t\treturn this._level;\n\t},\n\tcomputeKey: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet itemEnv = arguments[0];\n\t\t\tthis._level = Key.computeQuadLevel(itemEnv);\n\t\t\tthis._env = new Envelope();\n\t\t\tthis.computeKey(this._level, itemEnv);\n\t\t\twhile (!this._env.contains(itemEnv)) {\n\t\t\t\tthis._level += 1;\n\t\t\t\tthis.computeKey(this._level, itemEnv);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet level = arguments[0], itemEnv = arguments[1];\n\t\t\tvar quadSize = DoubleBits.powerOf2(level);\n\t\t\tthis._pt.x = Math.floor(itemEnv.getMinX() / quadSize) * quadSize;\n\t\t\tthis._pt.y = Math.floor(itemEnv.getMinY() / quadSize) * quadSize;\n\t\t\tthis._env.init(this._pt.x, this._pt.x + quadSize, this._pt.y, this._pt.y + quadSize);\n\t\t}\n\t},\n\tgetEnvelope: function () {\n\t\treturn this._env;\n\t},\n\tgetCentre: function () {\n\t\treturn new Coordinate((this._env.getMinX() + this._env.getMaxX()) / 2, (this._env.getMinY() + this._env.getMaxY()) / 2);\n\t},\n\tgetPoint: function () {\n\t\treturn this._pt;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Key;\n\t}\n});\nKey.computeQuadLevel = function (env) {\n\tvar dx = env.getWidth();\n\tvar dy = env.getHeight();\n\tvar dMax = dx > dy ? dx : dy;\n\tvar level = DoubleBits.exponent(dMax) + 1;\n\treturn level;\n};\n","import NodeBase from './NodeBase';\nimport extend from '../../../../../extend';\nimport Envelope from '../../geom/Envelope';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nimport Key from './Key';\nexport default function Node() {\n\tNodeBase.apply(this);\n\tthis._env = null;\n\tthis._centrex = null;\n\tthis._centrey = null;\n\tthis._level = null;\n\tlet env = arguments[0], level = arguments[1];\n\tthis._env = env;\n\tthis._level = level;\n\tthis._centrex = (env.getMinX() + env.getMaxX()) / 2;\n\tthis._centrey = (env.getMinY() + env.getMaxY()) / 2;\n}\ninherits(Node, NodeBase);\nextend(Node.prototype, {\n\tfind: function (searchEnv) {\n\t\tvar subnodeIndex = NodeBase.getSubnodeIndex(searchEnv, this._centrex, this._centrey);\n\t\tif (subnodeIndex === -1) return this;\n\t\tif (this._subnode[subnodeIndex] !== null) {\n\t\t\tvar node = this._subnode[subnodeIndex];\n\t\t\treturn node.find(searchEnv);\n\t\t}\n\t\treturn this;\n\t},\n\tisSearchMatch: function (searchEnv) {\n\t\tif (searchEnv === null) return false;\n\t\treturn this._env.intersects(searchEnv);\n\t},\n\tgetSubnode: function (index) {\n\t\tif (this._subnode[index] === null) {\n\t\t\tthis._subnode[index] = this.createSubnode(index);\n\t\t}\n\t\treturn this._subnode[index];\n\t},\n\tgetEnvelope: function () {\n\t\treturn this._env;\n\t},\n\tgetNode: function (searchEnv) {\n\t\tvar subnodeIndex = NodeBase.getSubnodeIndex(searchEnv, this._centrex, this._centrey);\n\t\tif (subnodeIndex !== -1) {\n\t\t\tvar node = this.getSubnode(subnodeIndex);\n\t\t\treturn node.getNode(searchEnv);\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t},\n\tcreateSubnode: function (index) {\n\t\tvar minx = 0.0;\n\t\tvar maxx = 0.0;\n\t\tvar miny = 0.0;\n\t\tvar maxy = 0.0;\n\t\tswitch (index) {\n\t\t\tcase 0:\n\t\t\t\tminx = this._env.getMinX();\n\t\t\t\tmaxx = this._centrex;\n\t\t\t\tminy = this._env.getMinY();\n\t\t\t\tmaxy = this._centrey;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tminx = this._centrex;\n\t\t\t\tmaxx = this._env.getMaxX();\n\t\t\t\tminy = this._env.getMinY();\n\t\t\t\tmaxy = this._centrey;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tminx = this._env.getMinX();\n\t\t\t\tmaxx = this._centrex;\n\t\t\t\tminy = this._centrey;\n\t\t\t\tmaxy = this._env.getMaxY();\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tminx = this._centrex;\n\t\t\t\tmaxx = this._env.getMaxX();\n\t\t\t\tminy = this._centrey;\n\t\t\t\tmaxy = this._env.getMaxY();\n\t\t\t\tbreak;\n\t\t}\n\t\tvar sqEnv = new Envelope(minx, maxx, miny, maxy);\n\t\tvar node = new Node(sqEnv, this._level - 1);\n\t\treturn node;\n\t},\n\tinsertNode: function (node) {\n\t\tAssert.isTrue(this._env === null || this._env.contains(node._env));\n\t\tvar index = NodeBase.getSubnodeIndex(node._env, this._centrex, this._centrey);\n\t\tif (node._level === this._level - 1) {\n\t\t\tthis._subnode[index] = node;\n\t\t} else {\n\t\t\tvar childNode = this.createSubnode(index);\n\t\t\tchildNode.insertNode(node);\n\t\t\tthis._subnode[index] = childNode;\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Node;\n\t}\n});\nNode.createNode = function (env) {\n\tvar key = new Key(env);\n\tvar node = new Node(key.getEnvelope(), key.getLevel());\n\treturn node;\n};\nNode.createExpanded = function (node, addEnv) {\n\tvar expandEnv = new Envelope(addEnv);\n\tif (node !== null) expandEnv.expandToInclude(node._env);\n\tvar largerNode = Node.createNode(expandEnv);\n\tif (node !== null) largerNode.insertNode(node);\n\treturn largerNode;\n};\n","import Coordinate from '../../geom/Coordinate';\nimport NodeBase from './NodeBase';\nimport Node from './Node';\nimport extend from '../../../../../extend';\nimport IntervalSize from './IntervalSize';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nexport default function Root() {\n\tNodeBase.apply(this);\n}\ninherits(Root, NodeBase);\nextend(Root.prototype, {\n\tinsert: function (itemEnv, item) {\n\t\tvar index = NodeBase.getSubnodeIndex(itemEnv, Root.origin.x, Root.origin.y);\n\t\tif (index === -1) {\n\t\t\tthis.add(item);\n\t\t\treturn null;\n\t\t}\n\t\tvar node = this._subnode[index];\n\t\tif (node === null || !node.getEnvelope().contains(itemEnv)) {\n\t\t\tvar largerNode = Node.createExpanded(node, itemEnv);\n\t\t\tthis._subnode[index] = largerNode;\n\t\t}\n\t\tthis.insertContained(this._subnode[index], itemEnv, item);\n\t},\n\tisSearchMatch: function (searchEnv) {\n\t\treturn true;\n\t},\n\tinsertContained: function (tree, itemEnv, item) {\n\t\tAssert.isTrue(tree.getEnvelope().contains(itemEnv));\n\t\tvar isZeroX = IntervalSize.isZeroWidth(itemEnv.getMinX(), itemEnv.getMaxX());\n\t\tvar isZeroY = IntervalSize.isZeroWidth(itemEnv.getMinY(), itemEnv.getMaxY());\n\t\tvar node = null;\n\t\tif (isZeroX || isZeroY) node = tree.find(itemEnv); else node = tree.getNode(itemEnv);\n\t\tnode.add(item);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Root;\n\t}\n});\nRoot.origin = new Coordinate(0.0, 0.0);\n","import extend from '../../../../extend';\nexport default function SpatialIndex() {}\nextend(SpatialIndex.prototype, {\n\tinsert: function (itemEnv, item) {},\n\tremove: function (itemEnv, item) {},\n\tquery: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet searchEnv = arguments[0];\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet searchEnv = arguments[0], visitor = arguments[1];\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SpatialIndex;\n\t}\n});\n","import Root from './Root';\nimport SpatialIndex from '../SpatialIndex';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport ArrayListVisitor from '../ArrayListVisitor';\nimport Serializable from '../../../../../java/io/Serializable';\nimport Envelope from '../../geom/Envelope';\nexport default function Quadtree() {\n\tthis._root = null;\n\tthis._minExtent = 1.0;\n\tthis._root = new Root();\n}\nextend(Quadtree.prototype, {\n\tsize: function () {\n\t\tif (this._root !== null) return this._root.size();\n\t\treturn 0;\n\t},\n\tinsert: function (itemEnv, item) {\n\t\tthis.collectStats(itemEnv);\n\t\tvar insertEnv = Quadtree.ensureExtent(itemEnv, this._minExtent);\n\t\tthis._root.insert(insertEnv, item);\n\t},\n\tquery: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet searchEnv = arguments[0];\n\t\t\tvar visitor = new ArrayListVisitor();\n\t\t\tthis.query(searchEnv, visitor);\n\t\t\treturn visitor.getItems();\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet searchEnv = arguments[0], visitor = arguments[1];\n\t\t\tthis._root.visit(searchEnv, visitor);\n\t\t}\n\t},\n\tqueryAll: function () {\n\t\tvar foundItems = new ArrayList();\n\t\tthis._root.addAllItems(foundItems);\n\t\treturn foundItems;\n\t},\n\tremove: function (itemEnv, item) {\n\t\tvar posEnv = Quadtree.ensureExtent(itemEnv, this._minExtent);\n\t\treturn this._root.remove(posEnv, item);\n\t},\n\tcollectStats: function (itemEnv) {\n\t\tvar delX = itemEnv.getWidth();\n\t\tif (delX < this._minExtent && delX > 0.0) this._minExtent = delX;\n\t\tvar delY = itemEnv.getHeight();\n\t\tif (delY < this._minExtent && delY > 0.0) this._minExtent = delY;\n\t},\n\tdepth: function () {\n\t\tif (this._root !== null) return this._root.depth();\n\t\treturn 0;\n\t},\n\tisEmpty: function () {\n\t\tif (this._root === null) return true;\n\t\treturn this._root.isEmpty();\n\t},\n\tinterfaces_: function () {\n\t\treturn [SpatialIndex, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn Quadtree;\n\t}\n});\nQuadtree.ensureExtent = function (itemEnv, minExtent) {\n\tvar minx = itemEnv.getMinX();\n\tvar maxx = itemEnv.getMaxX();\n\tvar miny = itemEnv.getMinY();\n\tvar maxy = itemEnv.getMaxY();\n\tif (minx !== maxx && miny !== maxy) return itemEnv;\n\tif (minx === maxx) {\n\t\tminx = minx - minExtent / 2.0;\n\t\tmaxx = minx + minExtent / 2.0;\n\t}\n\tif (miny === maxy) {\n\t\tminy = miny - minExtent / 2.0;\n\t\tmaxy = miny + minExtent / 2.0;\n\t}\n\treturn new Envelope(minx, maxx, miny, maxy);\n};\nQuadtree.serialVersionUID = -7461163625812743604;\n","import extend from '../../../../../extend';\nexport default function Boundable() {}\nextend(Boundable.prototype, {\n\tgetBounds: function () {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Boundable;\n\t}\n});\n","import Boundable from './Boundable';\nimport extend from '../../../../../extend';\nimport Serializable from '../../../../../java/io/Serializable';\nexport default function ItemBoundable() {\n\tthis._bounds = null;\n\tthis._item = null;\n\tlet bounds = arguments[0], item = arguments[1];\n\tthis._bounds = bounds;\n\tthis._item = item;\n}\nextend(ItemBoundable.prototype, {\n\tgetItem: function () {\n\t\treturn this._item;\n\t},\n\tgetBounds: function () {\n\t\treturn this._bounds;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Boundable, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn ItemBoundable;\n\t}\n});\n","import extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function PriorityQueue() {\n\tthis._size = null;\n\tthis._items = null;\n\tthis._size = 0;\n\tthis._items = new ArrayList();\n\tthis._items.add(null);\n}\nextend(PriorityQueue.prototype, {\n\tpoll: function () {\n\t\tif (this.isEmpty()) return null;\n\t\tvar minItem = this._items.get(1);\n\t\tthis._items.set(1, this._items.get(this._size));\n\t\tthis._size -= 1;\n\t\tthis.reorder(1);\n\t\treturn minItem;\n\t},\n\tsize: function () {\n\t\treturn this._size;\n\t},\n\treorder: function (hole) {\n\t\tvar child = null;\n\t\tvar tmp = this._items.get(hole);\n\t\tfor (; hole * 2 <= this._size; hole = child) {\n\t\t\tchild = hole * 2;\n\t\t\tif (child !== this._size && this._items.get(child + 1).compareTo(this._items.get(child)) < 0) child++;\n\t\t\tif (this._items.get(child).compareTo(tmp) < 0) this._items.set(hole, this._items.get(child)); else break;\n\t\t}\n\t\tthis._items.set(hole, tmp);\n\t},\n\tclear: function () {\n\t\tthis._size = 0;\n\t\tthis._items.clear();\n\t},\n\tpeek: function () {\n\t\tif (this.isEmpty()) return null;\n\t\tvar minItem = this._items.get(1);\n\t\treturn minItem;\n\t},\n\tisEmpty: function () {\n\t\treturn this._size === 0;\n\t},\n\tadd: function (x) {\n\t\tthis._items.add(null);\n\t\tthis._size += 1;\n\t\tvar hole = this._size;\n\t\tthis._items.set(0, x);\n\t\tfor (; x.compareTo(this._items.get(Math.trunc(hole / 2))) < 0; hole /= 2) {\n\t\t\tthis._items.set(hole, this._items.get(Math.trunc(hole / 2)));\n\t\t}\n\t\tthis._items.set(hole, x);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PriorityQueue;\n\t}\n});\n","import Boundable from './Boundable';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Serializable from '../../../../../java/io/Serializable';\nimport Assert from '../../util/Assert';\nexport default function AbstractNode() {\n\tthis._childBoundables = new ArrayList();\n\tthis._bounds = null;\n\tthis._level = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet level = arguments[0];\n\t\tthis._level = level;\n\t}\n}\nextend(AbstractNode.prototype, {\n\tgetLevel: function () {\n\t\treturn this._level;\n\t},\n\tsize: function () {\n\t\treturn this._childBoundables.size();\n\t},\n\tgetChildBoundables: function () {\n\t\treturn this._childBoundables;\n\t},\n\taddChildBoundable: function (childBoundable) {\n\t\tAssert.isTrue(this._bounds === null);\n\t\tthis._childBoundables.add(childBoundable);\n\t},\n\tisEmpty: function () {\n\t\treturn this._childBoundables.isEmpty();\n\t},\n\tgetBounds: function () {\n\t\tif (this._bounds === null) {\n\t\t\tthis._bounds = this.computeBounds();\n\t\t}\n\t\treturn this._bounds;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Boundable, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn AbstractNode;\n\t}\n});\nAbstractNode.serialVersionUID = 6493722185909573708;\n","import IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport AbstractNode from './AbstractNode';\nimport extend from '../../../../../extend';\nimport Comparable from '../../../../../java/lang/Comparable';\nexport default function BoundablePair() {\n\tthis._boundable1 = null;\n\tthis._boundable2 = null;\n\tthis._distance = null;\n\tthis._itemDistance = null;\n\tlet boundable1 = arguments[0], boundable2 = arguments[1], itemDistance = arguments[2];\n\tthis._boundable1 = boundable1;\n\tthis._boundable2 = boundable2;\n\tthis._itemDistance = itemDistance;\n\tthis._distance = this.distance();\n}\nextend(BoundablePair.prototype, {\n\texpandToQueue: function (priQ, minDistance) {\n\t\tvar isComp1 = BoundablePair.isComposite(this._boundable1);\n\t\tvar isComp2 = BoundablePair.isComposite(this._boundable2);\n\t\tif (isComp1 && isComp2) {\n\t\t\tif (BoundablePair.area(this._boundable1) > BoundablePair.area(this._boundable2)) {\n\t\t\t\tthis.expand(this._boundable1, this._boundable2, priQ, minDistance);\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\tthis.expand(this._boundable2, this._boundable1, priQ, minDistance);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} else if (isComp1) {\n\t\t\tthis.expand(this._boundable1, this._boundable2, priQ, minDistance);\n\t\t\treturn null;\n\t\t} else if (isComp2) {\n\t\t\tthis.expand(this._boundable2, this._boundable1, priQ, minDistance);\n\t\t\treturn null;\n\t\t}\n\t\tthrow new IllegalArgumentException(\"neither boundable is composite\");\n\t},\n\tisLeaves: function () {\n\t\treturn !(BoundablePair.isComposite(this._boundable1) || BoundablePair.isComposite(this._boundable2));\n\t},\n\tcompareTo: function (o) {\n\t\tvar nd = o;\n\t\tif (this._distance < nd._distance) return -1;\n\t\tif (this._distance > nd._distance) return 1;\n\t\treturn 0;\n\t},\n\texpand: function (bndComposite, bndOther, priQ, minDistance) {\n\t\tvar children = bndComposite.getChildBoundables();\n\t\tfor (var i = children.iterator(); i.hasNext(); ) {\n\t\t\tvar child = i.next();\n\t\t\tvar bp = new BoundablePair(child, bndOther, this._itemDistance);\n\t\t\tif (bp.getDistance() < minDistance) {\n\t\t\t\tpriQ.add(bp);\n\t\t\t}\n\t\t}\n\t},\n\tgetBoundable: function (i) {\n\t\tif (i === 0) return this._boundable1;\n\t\treturn this._boundable2;\n\t},\n\tgetDistance: function () {\n\t\treturn this._distance;\n\t},\n\tdistance: function () {\n\t\tif (this.isLeaves()) {\n\t\t\treturn this._itemDistance.distance(this._boundable1, this._boundable2);\n\t\t}\n\t\treturn this._boundable1.getBounds().distance(this._boundable2.getBounds());\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn BoundablePair;\n\t}\n});\nBoundablePair.area = function (b) {\n\treturn b.getBounds().getArea();\n};\nBoundablePair.isComposite = function (item) {\n\treturn item instanceof AbstractNode;\n};\n","import ItemBoundable from './ItemBoundable';\nimport hasInterface from '../../../../../hasInterface';\nimport ItemVisitor from '../ItemVisitor';\nimport AbstractNode from './AbstractNode';\nimport extend from '../../../../../extend';\nimport Collections from '../../../../../java/util/Collections';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Serializable from '../../../../../java/io/Serializable';\nimport Assert from '../../util/Assert';\nimport List from '../../../../../java/util/List';\nexport default function AbstractSTRtree() {\n\tthis._root = null;\n\tthis._built = false;\n\tthis._itemBoundables = new ArrayList();\n\tthis._nodeCapacity = null;\n\tif (arguments.length === 0) {\n\t\tAbstractSTRtree.call(this, AbstractSTRtree.DEFAULT_NODE_CAPACITY);\n\t} else if (arguments.length === 1) {\n\t\tlet nodeCapacity = arguments[0];\n\t\tAssert.isTrue(nodeCapacity > 1, \"Node capacity must be greater than 1\");\n\t\tthis._nodeCapacity = nodeCapacity;\n\t}\n}\nextend(AbstractSTRtree.prototype, {\n\tqueryInternal: function () {\n\t\tif (hasInterface(arguments[2], ItemVisitor) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n\t\t\tlet searchBounds = arguments[0], node = arguments[1], visitor = arguments[2];\n\t\t\tvar childBoundables = node.getChildBoundables();\n\t\t\tfor (var i = 0; i < childBoundables.size(); i++) {\n\t\t\t\tvar childBoundable = childBoundables.get(i);\n\t\t\t\tif (!this.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (childBoundable instanceof AbstractNode) {\n\t\t\t\t\tthis.queryInternal(searchBounds, childBoundable, visitor);\n\t\t\t\t} else if (childBoundable instanceof ItemBoundable) {\n\t\t\t\t\tvisitor.visitItem(childBoundable.getItem());\n\t\t\t\t} else {\n\t\t\t\t\tAssert.shouldNeverReachHere();\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n\t\t\tlet searchBounds = arguments[0], node = arguments[1], matches = arguments[2];\n\t\t\tvar childBoundables = node.getChildBoundables();\n\t\t\tfor (var i = 0; i < childBoundables.size(); i++) {\n\t\t\t\tvar childBoundable = childBoundables.get(i);\n\t\t\t\tif (!this.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (childBoundable instanceof AbstractNode) {\n\t\t\t\t\tthis.queryInternal(searchBounds, childBoundable, matches);\n\t\t\t\t} else if (childBoundable instanceof ItemBoundable) {\n\t\t\t\t\tmatches.add(childBoundable.getItem());\n\t\t\t\t} else {\n\t\t\t\t\tAssert.shouldNeverReachHere();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetNodeCapacity: function () {\n\t\treturn this._nodeCapacity;\n\t},\n\tlastNode: function (nodes) {\n\t\treturn nodes.get(nodes.size() - 1);\n\t},\n\tsize: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tthis.build();\n\t\t\treturn this.size(this._root);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet node = arguments[0];\n\t\t\tvar size = 0;\n\t\t\tfor (var i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n\t\t\t\tvar childBoundable = i.next();\n\t\t\t\tif (childBoundable instanceof AbstractNode) {\n\t\t\t\t\tsize += this.size(childBoundable);\n\t\t\t\t} else if (childBoundable instanceof ItemBoundable) {\n\t\t\t\t\tsize += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn size;\n\t\t}\n\t},\n\tremoveItem: function (node, item) {\n\t\tvar childToRemove = null;\n\t\tfor (var i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n\t\t\tvar childBoundable = i.next();\n\t\t\tif (childBoundable instanceof ItemBoundable) {\n\t\t\t\tif (childBoundable.getItem() === item) childToRemove = childBoundable;\n\t\t\t}\n\t\t}\n\t\tif (childToRemove !== null) {\n\t\t\tnode.getChildBoundables().remove(childToRemove);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\titemsTree: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tthis.build();\n\t\t\tvar valuesTree = this.itemsTree(this._root);\n\t\t\tif (valuesTree === null) return new ArrayList();\n\t\t\treturn valuesTree;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet node = arguments[0];\n\t\t\tvar valuesTreeForNode = new ArrayList();\n\t\t\tfor (var i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n\t\t\t\tvar childBoundable = i.next();\n\t\t\t\tif (childBoundable instanceof AbstractNode) {\n\t\t\t\t\tvar valuesTreeForChild = this.itemsTree(childBoundable);\n\t\t\t\t\tif (valuesTreeForChild !== null) valuesTreeForNode.add(valuesTreeForChild);\n\t\t\t\t} else if (childBoundable instanceof ItemBoundable) {\n\t\t\t\t\tvaluesTreeForNode.add(childBoundable.getItem());\n\t\t\t\t} else {\n\t\t\t\t\tAssert.shouldNeverReachHere();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (valuesTreeForNode.size() <= 0) return null;\n\t\t\treturn valuesTreeForNode;\n\t\t}\n\t},\n\tinsert: function (bounds, item) {\n\t\tAssert.isTrue(!this._built, \"Cannot insert items into an STR packed R-tree after it has been built.\");\n\t\tthis._itemBoundables.add(new ItemBoundable(bounds, item));\n\t},\n\tboundablesAtLevel: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet level = arguments[0];\n\t\t\tvar boundables = new ArrayList();\n\t\t\tthis.boundablesAtLevel(level, this._root, boundables);\n\t\t\treturn boundables;\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet level = arguments[0], top = arguments[1], boundables = arguments[2];\n\t\t\tAssert.isTrue(level > -2);\n\t\t\tif (top.getLevel() === level) {\n\t\t\t\tboundables.add(top);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tfor (var i = top.getChildBoundables().iterator(); i.hasNext(); ) {\n\t\t\t\tvar boundable = i.next();\n\t\t\t\tif (boundable instanceof AbstractNode) {\n\t\t\t\t\tthis.boundablesAtLevel(level, boundable, boundables);\n\t\t\t\t} else {\n\t\t\t\t\tAssert.isTrue(boundable instanceof ItemBoundable);\n\t\t\t\t\tif (level === -1) {\n\t\t\t\t\t\tboundables.add(boundable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t},\n\tquery: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet searchBounds = arguments[0];\n\t\t\tthis.build();\n\t\t\tvar matches = new ArrayList();\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn matches;\n\t\t\t}\n\t\t\tif (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) {\n\t\t\t\tthis.queryInternal(searchBounds, this._root, matches);\n\t\t\t}\n\t\t\treturn matches;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet searchBounds = arguments[0], visitor = arguments[1];\n\t\t\tthis.build();\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) {\n\t\t\t\tthis.queryInternal(searchBounds, this._root, visitor);\n\t\t\t}\n\t\t}\n\t},\n\tbuild: function () {\n\t\tif (this._built) return null;\n\t\tthis._root = this._itemBoundables.isEmpty() ? this.createNode(0) : this.createHigherLevels(this._itemBoundables, -1);\n\t\tthis._itemBoundables = null;\n\t\tthis._built = true;\n\t},\n\tgetRoot: function () {\n\t\tthis.build();\n\t\treturn this._root;\n\t},\n\tremove: function () {\n\t\tif (arguments.length === 2) {\n\t\t\tlet searchBounds = arguments[0], item = arguments[1];\n\t\t\tthis.build();\n\t\t\tif (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) {\n\t\t\t\treturn this.remove(searchBounds, this._root, item);\n\t\t\t}\n\t\t\treturn false;\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet searchBounds = arguments[0], node = arguments[1], item = arguments[2];\n\t\t\tvar found = this.removeItem(node, item);\n\t\t\tif (found) return true;\n\t\t\tvar childToPrune = null;\n\t\t\tfor (var i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n\t\t\t\tvar childBoundable = i.next();\n\t\t\t\tif (!this.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (childBoundable instanceof AbstractNode) {\n\t\t\t\t\tfound = this.remove(searchBounds, childBoundable, item);\n\t\t\t\t\tif (found) {\n\t\t\t\t\t\tchildToPrune = childBoundable;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (childToPrune !== null) {\n\t\t\t\tif (childToPrune.getChildBoundables().isEmpty()) {\n\t\t\t\t\tnode.getChildBoundables().remove(childToPrune);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn found;\n\t\t}\n\t},\n\tcreateHigherLevels: function (boundablesOfALevel, level) {\n\t\tAssert.isTrue(!boundablesOfALevel.isEmpty());\n\t\tvar parentBoundables = this.createParentBoundables(boundablesOfALevel, level + 1);\n\t\tif (parentBoundables.size() === 1) {\n\t\t\treturn parentBoundables.get(0);\n\t\t}\n\t\treturn this.createHigherLevels(parentBoundables, level + 1);\n\t},\n\tdepth: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tif (this.isEmpty()) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tthis.build();\n\t\t\treturn this.depth(this._root);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet node = arguments[0];\n\t\t\tvar maxChildDepth = 0;\n\t\t\tfor (var i = node.getChildBoundables().iterator(); i.hasNext(); ) {\n\t\t\t\tvar childBoundable = i.next();\n\t\t\t\tif (childBoundable instanceof AbstractNode) {\n\t\t\t\t\tvar childDepth = this.depth(childBoundable);\n\t\t\t\t\tif (childDepth > maxChildDepth) maxChildDepth = childDepth;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn maxChildDepth + 1;\n\t\t}\n\t},\n\tcreateParentBoundables: function (childBoundables, newLevel) {\n\t\tAssert.isTrue(!childBoundables.isEmpty());\n\t\tvar parentBoundables = new ArrayList();\n\t\tparentBoundables.add(this.createNode(newLevel));\n\t\tvar sortedChildBoundables = new ArrayList(childBoundables);\n\t\tCollections.sort(sortedChildBoundables, this.getComparator());\n\t\tfor (var i = sortedChildBoundables.iterator(); i.hasNext(); ) {\n\t\t\tvar childBoundable = i.next();\n\t\t\tif (this.lastNode(parentBoundables).getChildBoundables().size() === this.getNodeCapacity()) {\n\t\t\t\tparentBoundables.add(this.createNode(newLevel));\n\t\t\t}\n\t\t\tthis.lastNode(parentBoundables).addChildBoundable(childBoundable);\n\t\t}\n\t\treturn parentBoundables;\n\t},\n\tisEmpty: function () {\n\t\tif (!this._built) return this._itemBoundables.isEmpty();\n\t\treturn this._root.isEmpty();\n\t},\n\tinterfaces_: function () {\n\t\treturn [Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn AbstractSTRtree;\n\t}\n});\nAbstractSTRtree.compareDoubles = function (a, b) {\n\treturn a > b ? 1 : a < b ? -1 : 0;\n};\nfunction IntersectsOp() {}\nAbstractSTRtree.IntersectsOp = IntersectsOp;\nAbstractSTRtree.serialVersionUID = -3886435814360241337;\nAbstractSTRtree.DEFAULT_NODE_CAPACITY = 10;\n","import extend from '../../../../../extend';\nexport default function ItemDistance() {}\nextend(ItemDistance.prototype, {\n\tdistance: function (item1, item2) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ItemDistance;\n\t}\n});\n","import ItemBoundable from './ItemBoundable';\nimport PriorityQueue from '../../util/PriorityQueue';\nimport hasInterface from '../../../../../hasInterface';\nimport SpatialIndex from '../SpatialIndex';\nimport AbstractNode from './AbstractNode';\nimport Double from '../../../../../java/lang/Double';\nimport extend from '../../../../../extend';\nimport Collections from '../../../../../java/util/Collections';\nimport BoundablePair from './BoundablePair';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Comparator from '../../../../../java/util/Comparator';\nimport Serializable from '../../../../../java/io/Serializable';\nimport Envelope from '../../geom/Envelope';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nimport AbstractSTRtree from './AbstractSTRtree';\nimport ItemDistance from './ItemDistance';\nexport default function STRtree() {\n\tif (arguments.length === 0) {\n\t\tSTRtree.call(this, STRtree.DEFAULT_NODE_CAPACITY);\n\t} else if (arguments.length === 1) {\n\t\tlet nodeCapacity = arguments[0];\n\t\tAbstractSTRtree.call(this, nodeCapacity);\n\t}\n}\ninherits(STRtree, AbstractSTRtree);\nextend(STRtree.prototype, {\n\tcreateParentBoundablesFromVerticalSlices: function (verticalSlices, newLevel) {\n\t\tAssert.isTrue(verticalSlices.length > 0);\n\t\tvar parentBoundables = new ArrayList();\n\t\tfor (var i = 0; i < verticalSlices.length; i++) {\n\t\t\tparentBoundables.addAll(this.createParentBoundablesFromVerticalSlice(verticalSlices[i], newLevel));\n\t\t}\n\t\treturn parentBoundables;\n\t},\n\tcreateNode: function (level) {\n\t\treturn new STRtreeNode(level);\n\t},\n\tsize: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn AbstractSTRtree.prototype.size.call(this);\n\t\t} else return AbstractSTRtree.prototype.size.apply(this, arguments);\n\t},\n\tinsert: function () {\n\t\tif (arguments.length === 2 && (arguments[1] instanceof Object && arguments[0] instanceof Envelope)) {\n\t\t\tlet itemEnv = arguments[0], item = arguments[1];\n\t\t\tif (itemEnv.isNull()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tAbstractSTRtree.prototype.insert.call(this, itemEnv, item);\n\t\t} else return AbstractSTRtree.prototype.insert.apply(this, arguments);\n\t},\n\tgetIntersectsOp: function () {\n\t\treturn STRtree.intersectsOp;\n\t},\n\tverticalSlices: function (childBoundables, sliceCount) {\n\t\tvar sliceCapacity = Math.trunc(Math.ceil(childBoundables.size() / sliceCount));\n\t\tvar slices = new Array(sliceCount).fill(null);\n\t\tvar i = childBoundables.iterator();\n\t\tfor (var j = 0; j < sliceCount; j++) {\n\t\t\tslices[j] = new ArrayList();\n\t\t\tvar boundablesAddedToSlice = 0;\n\t\t\twhile (i.hasNext() && boundablesAddedToSlice < sliceCapacity) {\n\t\t\t\tvar childBoundable = i.next();\n\t\t\t\tslices[j].add(childBoundable);\n\t\t\t\tboundablesAddedToSlice++;\n\t\t\t}\n\t\t}\n\t\treturn slices;\n\t},\n\tquery: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet searchEnv = arguments[0];\n\t\t\treturn AbstractSTRtree.prototype.query.call(this, searchEnv);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet searchEnv = arguments[0], visitor = arguments[1];\n\t\t\tAbstractSTRtree.prototype.query.call(this, searchEnv, visitor);\n\t\t}\n\t},\n\tgetComparator: function () {\n\t\treturn STRtree.yComparator;\n\t},\n\tcreateParentBoundablesFromVerticalSlice: function (childBoundables, newLevel) {\n\t\treturn AbstractSTRtree.prototype.createParentBoundables.call(this, childBoundables, newLevel);\n\t},\n\tremove: function () {\n\t\tif (arguments.length === 2 && (arguments[1] instanceof Object && arguments[0] instanceof Envelope)) {\n\t\t\tlet itemEnv = arguments[0], item = arguments[1];\n\t\t\treturn AbstractSTRtree.prototype.remove.call(this, itemEnv, item);\n\t\t} else return AbstractSTRtree.prototype.remove.apply(this, arguments);\n\t},\n\tdepth: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn AbstractSTRtree.prototype.depth.call(this);\n\t\t} else return AbstractSTRtree.prototype.depth.apply(this, arguments);\n\t},\n\tcreateParentBoundables: function (childBoundables, newLevel) {\n\t\tAssert.isTrue(!childBoundables.isEmpty());\n\t\tvar minLeafCount = Math.trunc(Math.ceil(childBoundables.size() / this.getNodeCapacity()));\n\t\tvar sortedChildBoundables = new ArrayList(childBoundables);\n\t\tCollections.sort(sortedChildBoundables, STRtree.xComparator);\n\t\tvar verticalSlices = this.verticalSlices(sortedChildBoundables, Math.trunc(Math.ceil(Math.sqrt(minLeafCount))));\n\t\treturn this.createParentBoundablesFromVerticalSlices(verticalSlices, newLevel);\n\t},\n\tnearestNeighbour: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (hasInterface(arguments[0], ItemDistance)) {\n\t\t\t\tlet itemDist = arguments[0];\n\t\t\t\tvar bp = new BoundablePair(this.getRoot(), this.getRoot(), itemDist);\n\t\t\t\treturn this.nearestNeighbour(bp);\n\t\t\t} else if (arguments[0] instanceof BoundablePair) {\n\t\t\t\tlet initBndPair = arguments[0];\n\t\t\t\treturn this.nearestNeighbour(initBndPair, Double.POSITIVE_INFINITY);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tif (arguments[0] instanceof STRtree && hasInterface(arguments[1], ItemDistance)) {\n\t\t\t\tlet tree = arguments[0], itemDist = arguments[1];\n\t\t\t\tvar bp = new BoundablePair(this.getRoot(), tree.getRoot(), itemDist);\n\t\t\t\treturn this.nearestNeighbour(bp);\n\t\t\t} else if (arguments[0] instanceof BoundablePair && typeof arguments[1] === \"number\") {\n\t\t\t\tlet initBndPair = arguments[0], maxDistance = arguments[1];\n\t\t\t\tvar distanceLowerBound = maxDistance;\n\t\t\t\tvar minPair = null;\n\t\t\t\tvar priQ = new PriorityQueue();\n\t\t\t\tpriQ.add(initBndPair);\n\t\t\t\twhile (!priQ.isEmpty() && distanceLowerBound > 0.0) {\n\t\t\t\t\tvar bndPair = priQ.poll();\n\t\t\t\t\tvar currentDistance = bndPair.getDistance();\n\t\t\t\t\tif (currentDistance >= distanceLowerBound) break;\n\t\t\t\t\tif (bndPair.isLeaves()) {\n\t\t\t\t\t\tdistanceLowerBound = currentDistance;\n\t\t\t\t\t\tminPair = bndPair;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbndPair.expandToQueue(priQ, distanceLowerBound);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn [minPair.getBoundable(0).getItem(), minPair.getBoundable(1).getItem()];\n\t\t\t} else if (arguments[0] instanceof BoundablePair && Number.isInteger(arguments[1])) {\n\t\t\t\tlet initBndPair = arguments[0], k = arguments[1];\n\t\t\t\treturn this.nearestNeighbour(initBndPair, Double.POSITIVE_INFINITY, k);\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (hasInterface(arguments[2], ItemDistance) && (arguments[0] instanceof Envelope && arguments[1] instanceof Object)) {\n\t\t\t\tlet env = arguments[0], item = arguments[1], itemDist = arguments[2];\n\t\t\t\tvar bnd = new ItemBoundable(env, item);\n\t\t\t\tvar bp = new BoundablePair(this.getRoot(), bnd, itemDist);\n\t\t\t\treturn this.nearestNeighbour(bp)[0];\n\t\t\t} else if (Number.isInteger(arguments[2]) && (arguments[0] instanceof BoundablePair && typeof arguments[1] === \"number\")) {\n\t\t\t\tlet initBndPair = arguments[0], maxDistance = arguments[1], k = arguments[2];\n\t\t\t\tvar distanceLowerBound = maxDistance;\n\t\t\t\tvar priQ = new PriorityQueue();\n\t\t\t\tpriQ.add(initBndPair);\n\t\t\t\tvar kNearestNeighbors = new PriorityQueue();\n\t\t\t\twhile (!priQ.isEmpty() && distanceLowerBound >= 0.0) {\n\t\t\t\t\tvar bndPair = priQ.poll();\n\t\t\t\t\tvar currentDistance = bndPair.getDistance();\n\t\t\t\t\tif (currentDistance >= distanceLowerBound) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (bndPair.isLeaves()) {\n\t\t\t\t\t\tif (kNearestNeighbors.size() < k) {\n\t\t\t\t\t\t\tkNearestNeighbors.add(bndPair);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar bp1 = kNearestNeighbors.peek();\n\t\t\t\t\t\t\tif (bp1.getDistance() > currentDistance) {\n\t\t\t\t\t\t\t\tkNearestNeighbors.poll();\n\t\t\t\t\t\t\t\tkNearestNeighbors.add(bndPair);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar bp2 = kNearestNeighbors.peek();\n\t\t\t\t\t\t\tdistanceLowerBound = bp2.getDistance();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbndPair.expandToQueue(priQ, distanceLowerBound);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn STRtree.getItems(kNearestNeighbors);\n\t\t\t}\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet env = arguments[0], item = arguments[1], itemDist = arguments[2], k = arguments[3];\n\t\t\tvar bnd = new ItemBoundable(env, item);\n\t\t\tvar bp = new BoundablePair(this.getRoot(), bnd, itemDist);\n\t\t\treturn this.nearestNeighbour(bp, k);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [SpatialIndex, Serializable];\n\t},\n\tgetClass: function () {\n\t\treturn STRtree;\n\t}\n});\nSTRtree.centreX = function (e) {\n\treturn STRtree.avg(e.getMinX(), e.getMaxX());\n};\nSTRtree.avg = function (a, b) {\n\treturn (a + b) / 2;\n};\nSTRtree.getItems = function (kNearestNeighbors) {\n\tvar items = new Array(kNearestNeighbors.size()).fill(null);\n\tvar count = 0;\n\twhile (!kNearestNeighbors.isEmpty()) {\n\t\tvar bp = kNearestNeighbors.poll();\n\t\titems[count] = bp.getBoundable(0).getItem();\n\t\tcount++;\n\t}\n\treturn items;\n};\nSTRtree.centreY = function (e) {\n\treturn STRtree.avg(e.getMinY(), e.getMaxY());\n};\nfunction STRtreeNode() {\n\tlet level = arguments[0];\n\tAbstractNode.call(this, level);\n}\ninherits(STRtreeNode, AbstractNode);\nextend(STRtreeNode.prototype, {\n\tcomputeBounds: function () {\n\t\tvar bounds = null;\n\t\tfor (var i = this.getChildBoundables().iterator(); i.hasNext(); ) {\n\t\t\tvar childBoundable = i.next();\n\t\t\tif (bounds === null) {\n\t\t\t\tbounds = new Envelope(childBoundable.getBounds());\n\t\t\t} else {\n\t\t\t\tbounds.expandToInclude(childBoundable.getBounds());\n\t\t\t}\n\t\t}\n\t\treturn bounds;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn STRtreeNode;\n\t}\n});\nSTRtree.STRtreeNode = STRtreeNode;\nSTRtree.serialVersionUID = 259274702368956900;\nSTRtree.xComparator = {\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tcompare: function (o1, o2) {\n\t\treturn AbstractSTRtree.compareDoubles(STRtree.centreX(o1.getBounds()), STRtree.centreX(o2.getBounds()));\n\t}\n};\nSTRtree.yComparator = {\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tcompare: function (o1, o2) {\n\t\treturn AbstractSTRtree.compareDoubles(STRtree.centreY(o1.getBounds()), STRtree.centreY(o2.getBounds()));\n\t}\n};\nSTRtree.intersectsOp = {\n\tinterfaces_: function () {\n\t\treturn [IntersectsOp];\n\t},\n\tintersects: function (aBounds, bBounds) {\n\t\treturn aBounds.intersects(bBounds);\n\t}\n};\nSTRtree.DEFAULT_NODE_CAPACITY = 10;\n","import Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\nimport extend from '../../../../extend'\n\nconst geometryTypes = ['Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon']\n\n/**\n * Class for reading and writing Well-Known Text.Create a new parser for GeoJSON\n * NOTE: Adapted from OpenLayers 2.11 implementation.\n */\n\n/**\n * Create a new parser for GeoJSON\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of GeoJsonParser.\n * @constructor\n * @private\n */\nexport default function GeoJSONParser (geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n}\n\nextend(GeoJSONParser.prototype, {\n /**\n * Deserialize a GeoJSON object and return the Geometry or Feature(Collection) with JSTS Geometries\n *\n * @param {}\n * A GeoJSON object.\n * @return {} A Geometry instance or object representing a Feature(Collection) with Geometry instances.\n * @private\n */\n read (json) {\n let obj\n if (typeof json === 'string')\n obj = JSON.parse(json)\n else\n obj = json\n\n const type = obj.type\n\n if (!parse[type])\n throw new Error('Unknown GeoJSON type: ' + obj.type)\n\n if (geometryTypes.indexOf(type) !== -1)\n return parse[type].call(this, obj.coordinates)\n else if (type === 'GeometryCollection')\n return parse[type].call(this, obj.geometries)\n\n // feature or feature collection\n return parse[type].call(this, obj)\n },\n\n /**\n * Serialize a Geometry object into GeoJSON\n *\n * @param {Geometry}\n * geometry A Geometry or array of Geometries.\n * @return {Object} A GeoJSON object represting the input Geometry/Geometries.\n * @private\n */\n write (geometry) {\n const type = geometry.getGeometryType()\n\n if (!extract[type])\n throw new Error('Geometry is not supported')\n\n return extract[type].call(this, geometry)\n }\n})\n\nconst parse = {\n /**\n * Parse a GeoJSON Feature object\n *\n * @param {Object}\n * obj Object to parse.\n *\n * @return {Object} Feature with geometry/bbox converted to JSTS Geometries.\n */\n Feature: function (obj) {\n const feature = {}\n\n for (let key in obj)\n feature[key] = obj[key]\n\n if (obj.geometry) {\n const type = obj.geometry.type\n if (!parse[type])\n throw new Error('Unknown GeoJSON type: ' + obj.type)\n feature.geometry = this.read(obj.geometry)\n }\n\n if (obj.bbox)\n feature.bbox = parse.bbox.call(this, obj.bbox)\n\n return feature\n },\n\n /**\n * Parse a GeoJSON FeatureCollection object\n *\n * @param {Object}\n * obj Object to parse.\n *\n * @return {Object} FeatureCollection with geometry/bbox converted to JSTS Geometries.\n */\n FeatureCollection: function (obj) {\n const featureCollection = {}\n\n if (obj.features) {\n featureCollection.features = []\n\n for (let i = 0; i < obj.features.length; ++i)\n featureCollection.features.push(this.read(obj.features[i]))\n }\n\n if (obj.bbox)\n featureCollection.bbox = this.parse.bbox.call(this, obj.bbox)\n\n return featureCollection\n },\n\n /**\n * Convert the ordinates in an array to an array of Coordinates\n *\n * @param {Array}\n * array Array with {Number}s.\n *\n * @return {Array} Array with Coordinates.\n */\n coordinates: function (array) {\n const coordinates = []\n for (let i = 0; i < array.length; ++i) {\n const sub = array[i]\n coordinates.push(new Coordinate(sub[0], sub[1]))\n }\n return coordinates\n },\n\n /**\n * Convert the bbox to a LinearRing\n *\n * @param {Array}\n * array Array with [xMin, yMin, xMax, yMax].\n *\n * @return {Array} Array with Coordinates.\n */\n bbox: function (array) {\n return this.geometryFactory.createLinearRing([\n new Coordinate(array[0], array[1]),\n new Coordinate(array[2], array[1]),\n new Coordinate(array[2], array[3]),\n new Coordinate(array[0], array[3]),\n new Coordinate(array[0], array[1])\n ])\n },\n\n /**\n * Convert an Array with ordinates to a Point\n *\n * @param {Array}\n * array Array with ordinates.\n *\n * @return {Point} Point.\n */\n Point: function (array) {\n const coordinate = new Coordinate(array[0], array[1])\n return this.geometryFactory.createPoint(coordinate)\n },\n\n /**\n * Convert an Array with coordinates to a MultiPoint\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {MultiPoint} MultiPoint.\n */\n MultiPoint: function (array) {\n const points = []\n for (let i = 0; i < array.length; ++i)\n points.push(parse.Point.call(this, array[i]))\n return this.geometryFactory.createMultiPoint(points)\n },\n\n /**\n * Convert an Array with coordinates to a LineString\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {LineString} LineString.\n */\n LineString: function (array) {\n const coordinates = parse.coordinates.call(this, array)\n return this.geometryFactory.createLineString(coordinates)\n },\n\n /**\n * Convert an Array with coordinates to a MultiLineString\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {MultiLineString} MultiLineString.\n */\n MultiLineString: function (array) {\n const lineStrings = []\n for (let i = 0; i < array.length; ++i)\n lineStrings.push(parse.LineString.call(this, array[i]))\n return this.geometryFactory.createMultiLineString(lineStrings)\n },\n\n /**\n * Convert an Array to a Polygon\n *\n * @param {Array}\n * array Array with shell and holes.\n *\n * @return {Polygon} Polygon.\n */\n Polygon: function (array) {\n const shellCoordinates = parse.coordinates.call(this, array[0])\n const shell = this.geometryFactory.createLinearRing(shellCoordinates)\n const holes = []\n for (let i = 1; i < array.length; ++i) {\n var hole = array[i]\n var coordinates = parse.coordinates.call(this, hole)\n var linearRing = this.geometryFactory.createLinearRing(coordinates)\n holes.push(linearRing)\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n /**\n * Convert an Array to a MultiPolygon\n *\n * @param {Array}\n * array Array of arrays with shell and rings.\n *\n * @return {MultiPolygon} MultiPolygon.\n */\n MultiPolygon: function (array) {\n const polygons = []\n for (let i = 0; i < array.length; ++i) {\n const polygon = array[i]\n polygons.push(parse.Polygon.call(this, polygon))\n }\n return this.geometryFactory.createMultiPolygon(polygons)\n },\n\n /**\n * Convert an Array to a GeometryCollection\n *\n * @param {Array}\n * array Array of GeoJSON geometries.\n *\n * @return {GeometryCollection} GeometryCollection.\n */\n GeometryCollection: function (array) {\n const geometries = []\n for (let i = 0; i < array.length; ++i) {\n const geometry = array[i]\n geometries.push(this.read(geometry))\n }\n return this.geometryFactory.createGeometryCollection(geometries)\n }\n}\n\nconst extract = {\n /**\n * Convert a Coordinate to an Array\n *\n * @param {Coordinate}\n * coordinate Coordinate to convert.\n *\n * @return {Array} Array of ordinates.\n */\n coordinate: function (coordinate) {\n return [coordinate.x, coordinate.y]\n },\n\n /**\n * Convert a Point to a GeoJSON object\n *\n * @param {Point}\n * point Point to convert.\n *\n * @return {Array} Array of 2 ordinates (paired to a coordinate).\n */\n Point: function (point) {\n const array = extract.coordinate.call(this, point.getCoordinate())\n return {\n type: 'Point',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiPoint to a GeoJSON object\n *\n * @param {MultiPoint}\n * multipoint MultiPoint to convert.\n *\n * @return {Array} Array of coordinates.\n */\n MultiPoint: function (multipoint) {\n const array = []\n for (let i = 0; i < multipoint._geometries.length; ++i) {\n const point = multipoint._geometries[i]\n const geoJson = extract.Point.call(this, point)\n array.push(geoJson.coordinates)\n }\n return {\n type: 'MultiPoint',\n coordinates: array\n }\n },\n\n /**\n * Convert a LineString to a GeoJSON object\n *\n * @param {LineString}\n * linestring LineString to convert.\n *\n * @return {Array} Array of coordinates.\n */\n LineString: function (linestring) {\n const array = []\n const coordinates = linestring.getCoordinates()\n for (let i = 0; i < coordinates.length; ++i) {\n const coordinate = coordinates[i]\n array.push(extract.coordinate.call(this, coordinate))\n }\n return {\n type: 'LineString',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiLineString to a GeoJSON object\n *\n * @param {MultiLineString}\n * multilinestring MultiLineString to convert.\n *\n * @return {Array} Array of Array of coordinates.\n */\n MultiLineString: function (multilinestring) {\n const array = []\n for (let i = 0; i < multilinestring._geometries.length; ++i) {\n const linestring = multilinestring._geometries[i]\n const geoJson = extract.LineString.call(this, linestring)\n array.push(geoJson.coordinates)\n }\n return {\n type: 'MultiLineString',\n coordinates: array\n }\n },\n\n /**\n * Convert a Polygon to a GeoJSON object\n *\n * @param {Polygon}\n * polygon Polygon to convert.\n *\n * @return {Array} Array with shell, holes.\n */\n Polygon: function (polygon) {\n const array = []\n const shellGeoJson = extract.LineString.call(this, polygon._shell)\n array.push(shellGeoJson.coordinates)\n for (let i = 0; i < polygon._holes.length; ++i) {\n const hole = polygon._holes[i]\n const holeGeoJson = extract.LineString.call(this, hole)\n array.push(holeGeoJson.coordinates)\n }\n return {\n type: 'Polygon',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiPolygon to a GeoJSON object\n *\n * @param {MultiPolygon}\n * multipolygon MultiPolygon to convert.\n *\n * @return {Array} Array of polygons.\n */\n MultiPolygon: function (multipolygon) {\n const array = []\n for (let i = 0; i < multipolygon._geometries.length; ++i) {\n const polygon = multipolygon._geometries[i]\n const geoJson = extract.Polygon.call(this, polygon)\n array.push(geoJson.coordinates)\n }\n return {\n type: 'MultiPolygon',\n coordinates: array\n }\n },\n\n /**\n * Convert a GeometryCollection to a GeoJSON object\n *\n * @param {GeometryCollection}\n * collection GeometryCollection to convert.\n *\n * @return {Array} Array of geometries.\n */\n GeometryCollection: function (collection) {\n const array = []\n for (let i = 0; i < collection._geometries.length; ++i) {\n const geometry = collection._geometries[i]\n const type = geometry.getGeometryType()\n array.push(extract[type].call(this, geometry))\n }\n return {\n type: 'GeometryCollection',\n geometries: array\n }\n }\n}\n","/**\n * @module org/locationtech/jts/io/GeoJSONReader\n */\n\nimport GeometryFactory from '../geom/GeometryFactory'\nimport PrecisionModel from '../geom/PrecisionModel'\nimport GeoJSONParser from './GeoJSONParser'\nimport extend from '../../../../extend'\n\n/**\n * Converts a geometry in GeoJSON to a {@link Geometry}.\n */\n\n/**\n * A GeoJSONReader is parameterized by a GeometryFactory,\n * to allow it to create Geometry objects of the appropriate\n * implementation. In particular, the GeometryFactory determines\n * the PrecisionModel and SRID that is used.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\nexport default function GeoJSONReader (geometryFactory) {\n this.parser = new GeoJSONParser(geometryFactory || new GeometryFactory())\n}\n\nextend(GeoJSONReader.prototype, {\n /**\n * Reads a GeoJSON representation of a {@link Geometry}\n *\n * Will also parse GeoJSON Features/FeatureCollections as custom objects.\n *\n * @param {Object|String} geoJson a GeoJSON Object or String.\n * @return {Geometry|Object} a Geometry or Feature/FeatureCollection representation.\n * @memberof module:org/locationtech/jts/io/GeoJSONReader#\n */\n read (geoJson) {\n var geometry = this.parser.read(geoJson)\n return geometry\n }\n})\n","/**\n * @module org/locationtech/jts/io/GeoJSONWriter\n */\n\nimport GeoJSONParser from './GeoJSONParser'\nimport extend from '../../../../extend'\n\n/**\n * Writes the GeoJSON representation of a {@link Geometry}. The\n * The GeoJSON format is defined here.\n */\n\n/**\n * The GeoJSONWriter outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\nexport default function GeoJSONWriter () {\n this.parser = new GeoJSONParser(this.geometryFactory)\n}\n\nextend(GeoJSONWriter.prototype, {\n /**\n * Converts a Geometry to its GeoJSON representation.\n *\n * @param {Geometry}\n * geometry a Geometry to process.\n * @return {Object} The GeoJSON representation of the Geometry.\n * @memberof module:org/locationtech/jts/io/GeoJSONWriter#\n */\n write (geometry) {\n return this.parser.write(geometry)\n }\n})\n","/**\n * @module org/locationtech/jts/io/WKTReader\n */\n\nimport GeometryFactory from '../geom/GeometryFactory'\nimport PrecisionModel from '../geom/PrecisionModel'\nimport WKTParser from './WKTParser'\nimport extend from '../../../../extend'\n\n/**\n * Converts a geometry in Well-Known Text format to a {@link Geometry}.\n *

\n * WKTReader supports extracting Geometry objects\n * from either {@link Reader}s or {@link String}s. This allows it to function\n * as a parser to read Geometry objects from text blocks embedded\n * in other data formats (e.g. XML).\n */\n\n/**\n * A WKTReader is parameterized by a GeometryFactory,\n * to allow it to create Geometry objects of the appropriate\n * implementation. In particular, the GeometryFactory determines\n * the PrecisionModel and SRID that is used.\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\nexport default function WKTReader (geometryFactory) {\n this.parser = new WKTParser(geometryFactory || new GeometryFactory())\n}\n\nextend(WKTReader.prototype, {\n /**\n * Reads a Well-Known Text representation of a {@link Geometry}\n *\n * @param {string}\n * wkt a string (see the OpenGIS Simple Features\n * Specification).\n * @return {Geometry} a Geometry read from\n * string.\n * @memberof module:org/locationtech/jts/io/WKTReader#\n */\n read (wkt) {\n var geometry = this.parser.read(wkt)\n return geometry\n }\n})\n","/*eslint-disable no-undef */\n\n/**\n * @module org/locationtech/jts/io/OL3Parser\n */\n\nimport Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\nimport extend from '../../../../extend'\n\nfunction p2c (p) { return [p.x, p.y] }\n\n/**\n * OpenLayers Geometry parser and writer\n * @param {GeometryFactory} geometryFactory\n * @param {ol} olReference \n * @constructor\n */\nexport default function OL3Parser (geometryFactory, olReference) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.ol = olReference || (typeof ol !== 'undefined' && ol)\n}\n\nextend(OL3Parser.prototype, {\n\n /**\n * Inject OpenLayers geom classes\n */\n inject(Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection) {\n this.ol = {\n geom: {\n Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection\n }\n }\n },\n\n /**\n * @param geometry {ol.geom.Geometry}\n * @return {Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n read (geometry) {\n const ol = this.ol\n if (geometry instanceof ol.geom.Point) {\n return this.convertFromPoint(geometry)\n } else if (geometry instanceof ol.geom.LineString) {\n return this.convertFromLineString(geometry)\n } else if (geometry instanceof ol.geom.LinearRing) {\n return this.convertFromLinearRing(geometry)\n } else if (geometry instanceof ol.geom.Polygon) {\n return this.convertFromPolygon(geometry)\n } else if (geometry instanceof ol.geom.MultiPoint) {\n return this.convertFromMultiPoint(geometry)\n } else if (geometry instanceof ol.geom.MultiLineString) {\n return this.convertFromMultiLineString(geometry)\n } else if (geometry instanceof ol.geom.MultiPolygon) {\n return this.convertFromMultiPolygon(geometry)\n } else if (geometry instanceof ol.geom.GeometryCollection) {\n return this.convertFromCollection(geometry)\n }\n },\n\n convertFromPoint (point) {\n const coordinates = point.getCoordinates()\n return this.geometryFactory.createPoint(new Coordinate(coordinates[0], coordinates[1]))\n },\n\n convertFromLineString (lineString) {\n return this.geometryFactory.createLineString(lineString.getCoordinates().map(function (coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n },\n\n convertFromLinearRing (linearRing) {\n return this.geometryFactory.createLinearRing(linearRing.getCoordinates().map(function (coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n },\n\n convertFromPolygon (polygon) {\n const linearRings = polygon.getLinearRings()\n var shell = null\n var holes = []\n for (let i = 0; i < linearRings.length; i++) {\n const linearRing = this.convertFromLinearRing(linearRings[i])\n if (i === 0) {\n shell = linearRing\n } else {\n holes.push(linearRing)\n }\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n convertFromMultiPoint (multiPoint) {\n const points = multiPoint.getPoints().map(function (point) {\n return this.convertFromPoint(point)\n }, this)\n return this.geometryFactory.createMultiPoint(points)\n },\n\n convertFromMultiLineString (multiLineString) {\n const lineStrings = multiLineString.getLineStrings().map(function (lineString) {\n return this.convertFromLineString(lineString)\n }, this)\n return this.geometryFactory.createMultiLineString(lineStrings)\n },\n\n convertFromMultiPolygon (multiPolygon) {\n const polygons = multiPolygon.getPolygons().map(function (polygon) {\n return this.convertFromPolygon(polygon)\n }, this)\n return this.geometryFactory.createMultiPolygon(polygons)\n },\n\n convertFromCollection (collection) {\n const geometries = collection.getGeometries().map(function (geometry) {\n return this.read(geometry)\n }, this)\n return this.geometryFactory.createGeometryCollection(geometries)\n },\n\n /**\n * @param geometry\n * {Geometry}\n * @return {ol.geom.Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n write (geometry) {\n if (geometry.getGeometryType() === 'Point') {\n return this.convertToPoint(geometry.getCoordinate())\n } else if (geometry.getGeometryType() === 'LineString') {\n return this.convertToLineString(geometry)\n } else if (geometry.getGeometryType() === 'LinearRing') {\n return this.convertToLinearRing(geometry)\n } else if (geometry.getGeometryType() === 'Polygon') {\n return this.convertToPolygon(geometry)\n } else if (geometry.getGeometryType() === 'MultiPoint') {\n return this.convertToMultiPoint(geometry)\n } else if (geometry.getGeometryType() === 'MultiLineString') {\n return this.convertToMultiLineString(geometry)\n } else if (geometry.getGeometryType() === 'MultiPolygon') {\n return this.convertToMultiPolygon(geometry)\n } else if (geometry.getGeometryType() === 'GeometryCollection') {\n return this.convertToCollection(geometry)\n }\n },\n\n convertToPoint (coordinate) {\n return new this.ol.geom.Point([coordinate.x, coordinate.y])\n },\n\n convertToLineString (lineString) {\n var points = lineString._points._coordinates.map(p2c)\n return new this.ol.geom.LineString(points)\n },\n\n convertToLinearRing (linearRing) {\n var points = linearRing._points._coordinates.map(p2c)\n return new this.ol.geom.LinearRing(points)\n },\n\n convertToPolygon (polygon) {\n var rings = [polygon._shell._points._coordinates.map(p2c)]\n for (let i = 0; i < polygon._holes.length; i++) {\n rings.push(polygon._holes[i]._points._coordinates.map(p2c))\n }\n return new this.ol.geom.Polygon(rings)\n },\n\n convertToMultiPoint (multiPoint) {\n return new this.ol.geom.MultiPoint(multiPoint.getCoordinates().map(p2c))\n },\n\n convertToMultiLineString (multiLineString) {\n var lineStrings = []\n for (let i = 0; i < multiLineString._geometries.length; i++) {\n lineStrings.push(this.convertToLineString(multiLineString._geometries[i]).getCoordinates())\n }\n return new this.ol.geom.MultiLineString(lineStrings)\n },\n\n convertToMultiPolygon (multiPolygon) {\n var polygons = []\n for (let i = 0; i < multiPolygon._geometries.length; i++) {\n polygons.push(this.convertToPolygon(multiPolygon._geometries[i]).getCoordinates())\n }\n return new this.ol.geom.MultiPolygon(polygons)\n },\n\n convertToCollection (geometryCollection) {\n var geometries = []\n for (let i = 0; i < geometryCollection._geometries.length; i++) {\n var geometry = geometryCollection._geometries[i]\n geometries.push(this.write(geometry))\n }\n return new this.ol.geom.GeometryCollection(geometries)\n }\n})\n","import extend from '../../../../extend';\nimport Assert from '../util/Assert';\nexport default function SegmentPointComparator() {}\nextend(SegmentPointComparator.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentPointComparator;\n\t}\n});\nSegmentPointComparator.relativeSign = function (x0, x1) {\n\tif (x0 < x1) return -1;\n\tif (x0 > x1) return 1;\n\treturn 0;\n};\nSegmentPointComparator.compare = function (octant, p0, p1) {\n\tif (p0.equals2D(p1)) return 0;\n\tvar xSign = SegmentPointComparator.relativeSign(p0.x, p1.x);\n\tvar ySign = SegmentPointComparator.relativeSign(p0.y, p1.y);\n\tswitch (octant) {\n\t\tcase 0:\n\t\t\treturn SegmentPointComparator.compareValue(xSign, ySign);\n\t\tcase 1:\n\t\t\treturn SegmentPointComparator.compareValue(ySign, xSign);\n\t\tcase 2:\n\t\t\treturn SegmentPointComparator.compareValue(ySign, -xSign);\n\t\tcase 3:\n\t\t\treturn SegmentPointComparator.compareValue(-xSign, ySign);\n\t\tcase 4:\n\t\t\treturn SegmentPointComparator.compareValue(-xSign, -ySign);\n\t\tcase 5:\n\t\t\treturn SegmentPointComparator.compareValue(-ySign, -xSign);\n\t\tcase 6:\n\t\t\treturn SegmentPointComparator.compareValue(-ySign, xSign);\n\t\tcase 7:\n\t\t\treturn SegmentPointComparator.compareValue(xSign, -ySign);\n\t}\n\tAssert.shouldNeverReachHere(\"invalid octant value\");\n\treturn 0;\n};\nSegmentPointComparator.compareValue = function (compareSign0, compareSign1) {\n\tif (compareSign0 < 0) return -1;\n\tif (compareSign0 > 0) return 1;\n\tif (compareSign1 < 0) return -1;\n\tif (compareSign1 > 0) return 1;\n\treturn 0;\n};\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport SegmentPointComparator from './SegmentPointComparator';\nimport Comparable from '../../../../java/lang/Comparable';\nexport default function SegmentNode() {\n\tthis._segString = null;\n\tthis.coord = null;\n\tthis.segmentIndex = null;\n\tthis._segmentOctant = null;\n\tthis._isInterior = null;\n\tlet segString = arguments[0], coord = arguments[1], segmentIndex = arguments[2], segmentOctant = arguments[3];\n\tthis._segString = segString;\n\tthis.coord = new Coordinate(coord);\n\tthis.segmentIndex = segmentIndex;\n\tthis._segmentOctant = segmentOctant;\n\tthis._isInterior = !coord.equals2D(segString.getCoordinate(segmentIndex));\n}\nextend(SegmentNode.prototype, {\n\tgetCoordinate: function () {\n\t\treturn this.coord;\n\t},\n\tprint: function (out) {\n\t\tout.print(this.coord);\n\t\tout.print(\" seg # = \" + this.segmentIndex);\n\t},\n\tcompareTo: function (obj) {\n\t\tvar other = obj;\n\t\tif (this.segmentIndex < other.segmentIndex) return -1;\n\t\tif (this.segmentIndex > other.segmentIndex) return 1;\n\t\tif (this.coord.equals2D(other.coord)) return 0;\n\t\treturn SegmentPointComparator.compare(this._segmentOctant, this.coord, other.coord);\n\t},\n\tisEndPoint: function (maxSegmentIndex) {\n\t\tif (this.segmentIndex === 0 && !this._isInterior) return true;\n\t\tif (this.segmentIndex === maxSegmentIndex) return true;\n\t\treturn false;\n\t},\n\tisInterior: function () {\n\t\treturn this._isInterior;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentNode;\n\t}\n});\n","import CoordinateList from '../geom/CoordinateList';\nimport SegmentNode from './SegmentNode';\nimport Iterator from '../../../../java/util/Iterator';\nimport Coordinate from '../geom/Coordinate';\nimport NodedSegmentString from './NodedSegmentString';\nimport extend from '../../../../extend';\nimport Integer from '../../../../java/lang/Integer';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport RuntimeException from '../../../../java/lang/RuntimeException';\nimport Assert from '../util/Assert';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default function SegmentNodeList() {\n\tthis._nodeMap = new TreeMap();\n\tthis._edge = null;\n\tlet edge = arguments[0];\n\tthis._edge = edge;\n}\nextend(SegmentNodeList.prototype, {\n\tgetSplitCoordinates: function () {\n\t\tvar coordList = new CoordinateList();\n\t\tthis.addEndpoints();\n\t\tvar it = this.iterator();\n\t\tvar eiPrev = it.next();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ei = it.next();\n\t\t\tthis.addEdgeCoordinates(eiPrev, ei, coordList);\n\t\t\teiPrev = ei;\n\t\t}\n\t\treturn coordList.toCoordinateArray();\n\t},\n\taddCollapsedNodes: function () {\n\t\tvar collapsedVertexIndexes = new ArrayList();\n\t\tthis.findCollapsesFromInsertedNodes(collapsedVertexIndexes);\n\t\tthis.findCollapsesFromExistingVertices(collapsedVertexIndexes);\n\t\tfor (var it = collapsedVertexIndexes.iterator(); it.hasNext(); ) {\n\t\t\tvar vertexIndex = it.next().intValue();\n\t\t\tthis.add(this._edge.getCoordinate(vertexIndex), vertexIndex);\n\t\t}\n\t},\n\tprint: function (out) {\n\t\tout.println(\"Intersections:\");\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ei = it.next();\n\t\t\tei.print(out);\n\t\t}\n\t},\n\tfindCollapsesFromExistingVertices: function (collapsedVertexIndexes) {\n\t\tfor (var i = 0; i < this._edge.size() - 2; i++) {\n\t\t\tvar p0 = this._edge.getCoordinate(i);\n\t\t\tvar p1 = this._edge.getCoordinate(i + 1);\n\t\t\tvar p2 = this._edge.getCoordinate(i + 2);\n\t\t\tif (p0.equals2D(p2)) {\n\t\t\t\tcollapsedVertexIndexes.add(new Integer(i + 1));\n\t\t\t}\n\t\t}\n\t},\n\taddEdgeCoordinates: function (ei0, ei1, coordList) {\n\t\tvar npts = ei1.segmentIndex - ei0.segmentIndex + 2;\n\t\tvar lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex);\n\t\tvar useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt);\n\t\tif (!useIntPt1) {\n\t\t\tnpts--;\n\t\t}\n\t\tvar ipt = 0;\n\t\tcoordList.add(new Coordinate(ei0.coord), false);\n\t\tfor (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n\t\t\tcoordList.add(this._edge.getCoordinate(i));\n\t\t}\n\t\tif (useIntPt1) {\n\t\t\tcoordList.add(new Coordinate(ei1.coord));\n\t\t}\n\t},\n\titerator: function () {\n\t\treturn this._nodeMap.values().iterator();\n\t},\n\taddSplitEdges: function (edgeList) {\n\t\tthis.addEndpoints();\n\t\tthis.addCollapsedNodes();\n\t\tvar it = this.iterator();\n\t\tvar eiPrev = it.next();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ei = it.next();\n\t\t\tvar newEdge = this.createSplitEdge(eiPrev, ei);\n\t\t\tedgeList.add(newEdge);\n\t\t\teiPrev = ei;\n\t\t}\n\t},\n\tfindCollapseIndex: function (ei0, ei1, collapsedVertexIndex) {\n\t\tif (!ei0.coord.equals2D(ei1.coord)) return false;\n\t\tvar numVerticesBetween = ei1.segmentIndex - ei0.segmentIndex;\n\t\tif (!ei1.isInterior()) {\n\t\t\tnumVerticesBetween--;\n\t\t}\n\t\tif (numVerticesBetween === 1) {\n\t\t\tcollapsedVertexIndex[0] = ei0.segmentIndex + 1;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\tfindCollapsesFromInsertedNodes: function (collapsedVertexIndexes) {\n\t\tvar collapsedVertexIndex = new Array(1).fill(null);\n\t\tvar it = this.iterator();\n\t\tvar eiPrev = it.next();\n\t\twhile (it.hasNext()) {\n\t\t\tvar ei = it.next();\n\t\t\tvar isCollapsed = this.findCollapseIndex(eiPrev, ei, collapsedVertexIndex);\n\t\t\tif (isCollapsed) collapsedVertexIndexes.add(new Integer(collapsedVertexIndex[0]));\n\t\t\teiPrev = ei;\n\t\t}\n\t},\n\tgetEdge: function () {\n\t\treturn this._edge;\n\t},\n\taddEndpoints: function () {\n\t\tvar maxSegIndex = this._edge.size() - 1;\n\t\tthis.add(this._edge.getCoordinate(0), 0);\n\t\tthis.add(this._edge.getCoordinate(maxSegIndex), maxSegIndex);\n\t},\n\tcreateSplitEdge: function (ei0, ei1) {\n\t\tvar npts = ei1.segmentIndex - ei0.segmentIndex + 2;\n\t\tvar lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex);\n\t\tvar useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt);\n\t\tif (!useIntPt1) {\n\t\t\tnpts--;\n\t\t}\n\t\tvar pts = new Array(npts).fill(null);\n\t\tvar ipt = 0;\n\t\tpts[ipt++] = new Coordinate(ei0.coord);\n\t\tfor (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n\t\t\tpts[ipt++] = this._edge.getCoordinate(i);\n\t\t}\n\t\tif (useIntPt1) pts[ipt] = new Coordinate(ei1.coord);\n\t\treturn new NodedSegmentString(pts, this._edge.getData());\n\t},\n\tadd: function (intPt, segmentIndex) {\n\t\tvar eiNew = new SegmentNode(this._edge, intPt, segmentIndex, this._edge.getSegmentOctant(segmentIndex));\n\t\tvar ei = this._nodeMap.get(eiNew);\n\t\tif (ei !== null) {\n\t\t\tAssert.isTrue(ei.coord.equals2D(intPt), \"Found equal nodes with different coordinates\");\n\t\t\treturn ei;\n\t\t}\n\t\tthis._nodeMap.put(eiNew, eiNew);\n\t\treturn eiNew;\n\t},\n\tcheckSplitEdgesCorrectness: function (splitEdges) {\n\t\tvar edgePts = this._edge.getCoordinates();\n\t\tvar split0 = splitEdges.get(0);\n\t\tvar pt0 = split0.getCoordinate(0);\n\t\tif (!pt0.equals2D(edgePts[0])) throw new RuntimeException(\"bad split edge start point at \" + pt0);\n\t\tvar splitn = splitEdges.get(splitEdges.size() - 1);\n\t\tvar splitnPts = splitn.getCoordinates();\n\t\tvar ptn = splitnPts[splitnPts.length - 1];\n\t\tif (!ptn.equals2D(edgePts[edgePts.length - 1])) throw new RuntimeException(\"bad split edge end point at \" + ptn);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentNodeList;\n\t}\n});\nfunction NodeVertexIterator() {\n\tthis._nodeList = null;\n\tthis._edge = null;\n\tthis._nodeIt = null;\n\tthis._currNode = null;\n\tthis._nextNode = null;\n\tthis._currSegIndex = 0;\n\tlet nodeList = arguments[0];\n\tthis._nodeList = nodeList;\n\tthis._edge = nodeList.getEdge();\n\tthis._nodeIt = nodeList.iterator();\n\tthis.readNextNode();\n}\nextend(NodeVertexIterator.prototype, {\n\tnext: function () {\n\t\tif (this._currNode === null) {\n\t\t\tthis._currNode = this._nextNode;\n\t\t\tthis._currSegIndex = this._currNode.segmentIndex;\n\t\t\tthis.readNextNode();\n\t\t\treturn this._currNode;\n\t\t}\n\t\tif (this._nextNode === null) return null;\n\t\tif (this._nextNode.segmentIndex === this._currNode.segmentIndex) {\n\t\t\tthis._currNode = this._nextNode;\n\t\t\tthis._currSegIndex = this._currNode.segmentIndex;\n\t\t\tthis.readNextNode();\n\t\t\treturn this._currNode;\n\t\t}\n\t\tif (this._nextNode.segmentIndex > this._currNode.segmentIndex) {}\n\t\treturn null;\n\t},\n\tremove: function () {\n\t\tthrow new UnsupportedOperationException(this.getClass().getName());\n\t},\n\thasNext: function () {\n\t\tif (this._nextNode === null) return false;\n\t\treturn true;\n\t},\n\treadNextNode: function () {\n\t\tif (this._nodeIt.hasNext()) this._nextNode = this._nodeIt.next(); else this._nextNode = null;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Iterator];\n\t},\n\tgetClass: function () {\n\t\treturn NodeVertexIterator;\n\t}\n});\n","import Coordinate from '../geom/Coordinate';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nexport default function Octant() {}\nextend(Octant.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Octant;\n\t}\n});\nOctant.octant = function () {\n\tif (typeof arguments[0] === \"number\" && typeof arguments[1] === \"number\") {\n\t\tlet dx = arguments[0], dy = arguments[1];\n\t\tif (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException(\"Cannot compute the octant for point ( \" + dx + \", \" + dy + \" )\");\n\t\tvar adx = Math.abs(dx);\n\t\tvar ady = Math.abs(dy);\n\t\tif (dx >= 0) {\n\t\t\tif (dy >= 0) {\n\t\t\t\tif (adx >= ady) return 0; else return 1;\n\t\t\t} else {\n\t\t\t\tif (adx >= ady) return 7; else return 6;\n\t\t\t}\n\t\t} else {\n\t\t\tif (dy >= 0) {\n\t\t\t\tif (adx >= ady) return 3; else return 2;\n\t\t\t} else {\n\t\t\t\tif (adx >= ady) return 4; else return 5;\n\t\t\t}\n\t\t}\n\t} else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tvar dx = p1.x - p0.x;\n\t\tvar dy = p1.y - p0.y;\n\t\tif (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException(\"Cannot compute the octant for two identical points \" + p0);\n\t\treturn Octant.octant(dx, dy);\n\t}\n};\n","import extend from '../../../../extend';\nexport default function SegmentString() {}\nextend(SegmentString.prototype, {\n\tgetCoordinates: function () {},\n\tsize: function () {},\n\tgetCoordinate: function (i) {},\n\tisClosed: function () {},\n\tsetData: function (data) {},\n\tgetData: function () {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentString;\n\t}\n});\n","import extend from '../../../../extend';\nimport SegmentString from './SegmentString';\nexport default function NodableSegmentString() {}\nextend(NodableSegmentString.prototype, {\n\taddIntersection: function (intPt, segmentIndex) {},\n\tinterfaces_: function () {\n\t\treturn [SegmentString];\n\t},\n\tgetClass: function () {\n\t\treturn NodableSegmentString;\n\t}\n});\n","import SegmentNodeList from './SegmentNodeList';\nimport WKTWriter from '../io/WKTWriter';\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence';\nimport Coordinate from '../geom/Coordinate';\nimport Octant from './Octant';\nimport extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport NodableSegmentString from './NodableSegmentString';\nexport default function NodedSegmentString() {\n\tthis._nodeList = new SegmentNodeList(this);\n\tthis._pts = null;\n\tthis._data = null;\n\tlet pts = arguments[0], data = arguments[1];\n\tthis._pts = pts;\n\tthis._data = data;\n}\nextend(NodedSegmentString.prototype, {\n\tgetCoordinates: function () {\n\t\treturn this._pts;\n\t},\n\tsize: function () {\n\t\treturn this._pts.length;\n\t},\n\tgetCoordinate: function (i) {\n\t\treturn this._pts[i];\n\t},\n\tisClosed: function () {\n\t\treturn this._pts[0].equals(this._pts[this._pts.length - 1]);\n\t},\n\tgetSegmentOctant: function (index) {\n\t\tif (index === this._pts.length - 1) return -1;\n\t\treturn this.safeOctant(this.getCoordinate(index), this.getCoordinate(index + 1));\n\t},\n\tsetData: function (data) {\n\t\tthis._data = data;\n\t},\n\tsafeOctant: function (p0, p1) {\n\t\tif (p0.equals2D(p1)) return 0;\n\t\treturn Octant.octant(p0, p1);\n\t},\n\tgetData: function () {\n\t\treturn this._data;\n\t},\n\taddIntersection: function () {\n\t\tif (arguments.length === 2) {\n\t\t\tlet intPt = arguments[0], segmentIndex = arguments[1];\n\t\t\tthis.addIntersectionNode(intPt, segmentIndex);\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet li = arguments[0], segmentIndex = arguments[1], geomIndex = arguments[2], intIndex = arguments[3];\n\t\t\tvar intPt = new Coordinate(li.getIntersection(intIndex));\n\t\t\tthis.addIntersection(intPt, segmentIndex);\n\t\t}\n\t},\n\ttoString: function () {\n\t\treturn WKTWriter.toLineString(new CoordinateArraySequence(this._pts));\n\t},\n\tgetNodeList: function () {\n\t\treturn this._nodeList;\n\t},\n\taddIntersectionNode: function (intPt, segmentIndex) {\n\t\tvar normalizedSegmentIndex = segmentIndex;\n\t\tvar nextSegIndex = normalizedSegmentIndex + 1;\n\t\tif (nextSegIndex < this._pts.length) {\n\t\t\tvar nextPt = this._pts[nextSegIndex];\n\t\t\tif (intPt.equals2D(nextPt)) {\n\t\t\t\tnormalizedSegmentIndex = nextSegIndex;\n\t\t\t}\n\t\t}\n\t\tvar ei = this._nodeList.add(intPt, normalizedSegmentIndex);\n\t\treturn ei;\n\t},\n\taddIntersections: function (li, segmentIndex, geomIndex) {\n\t\tfor (var i = 0; i < li.getIntersectionNum(); i++) {\n\t\t\tthis.addIntersection(li, segmentIndex, geomIndex, i);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [NodableSegmentString];\n\t},\n\tgetClass: function () {\n\t\treturn NodedSegmentString;\n\t}\n});\nNodedSegmentString.getNodedSubstrings = function () {\n\tif (arguments.length === 1) {\n\t\tlet segStrings = arguments[0];\n\t\tvar resultEdgelist = new ArrayList();\n\t\tNodedSegmentString.getNodedSubstrings(segStrings, resultEdgelist);\n\t\treturn resultEdgelist;\n\t} else if (arguments.length === 2) {\n\t\tlet segStrings = arguments[0], resultEdgelist = arguments[1];\n\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\tvar ss = i.next();\n\t\t\tss.getNodeList().addSplitEdges(resultEdgelist);\n\t\t}\n\t}\n};\n","import extend from '../../../../../extend';\nimport LineSegment from '../../geom/LineSegment';\nexport default function MonotoneChainOverlapAction() {\n\tthis._overlapSeg1 = new LineSegment();\n\tthis._overlapSeg2 = new LineSegment();\n}\nextend(MonotoneChainOverlapAction.prototype, {\n\toverlap: function () {\n\t\tif (arguments.length === 2) {\n\t\t\tlet seg1 = arguments[0], seg2 = arguments[1];\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3];\n\t\t\tmc1.getLineSegment(start1, this._overlapSeg1);\n\t\t\tmc2.getLineSegment(start2, this._overlapSeg2);\n\t\t\tthis.overlap(this._overlapSeg1, this._overlapSeg2);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MonotoneChainOverlapAction;\n\t}\n});\n","import extend from '../../../../extend';\nexport default function Noder() {}\nextend(Noder.prototype, {\n\tcomputeNodes: function (segStrings) {},\n\tgetNodedSubstrings: function () {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Noder;\n\t}\n});\n","import Noder from './Noder';\nimport extend from '../../../../extend';\nexport default function SinglePassNoder() {\n\tthis._segInt = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet segInt = arguments[0];\n\t\tthis.setSegmentIntersector(segInt);\n\t}\n}\nextend(SinglePassNoder.prototype, {\n\tsetSegmentIntersector: function (segInt) {\n\t\tthis._segInt = segInt;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Noder];\n\t},\n\tgetClass: function () {\n\t\treturn SinglePassNoder;\n\t}\n});\n","import STRtree from '../index/strtree/STRtree';\nimport NodedSegmentString from './NodedSegmentString';\nimport MonotoneChainOverlapAction from '../index/chain/MonotoneChainOverlapAction';\nimport extend from '../../../../extend';\nimport MonotoneChainBuilder from '../index/chain/MonotoneChainBuilder';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport inherits from '../../../../inherits';\nimport SinglePassNoder from './SinglePassNoder';\nexport default function MCIndexNoder() {\n\tthis._monoChains = new ArrayList();\n\tthis._index = new STRtree();\n\tthis._idCounter = 0;\n\tthis._nodedSegStrings = null;\n\tthis._nOverlaps = 0;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet si = arguments[0];\n\t\tSinglePassNoder.call(this, si);\n\t}\n}\ninherits(MCIndexNoder, SinglePassNoder);\nextend(MCIndexNoder.prototype, {\n\tgetMonotoneChains: function () {\n\t\treturn this._monoChains;\n\t},\n\tgetNodedSubstrings: function () {\n\t\treturn NodedSegmentString.getNodedSubstrings(this._nodedSegStrings);\n\t},\n\tgetIndex: function () {\n\t\treturn this._index;\n\t},\n\tadd: function (segStr) {\n\t\tvar segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr);\n\t\tfor (var i = segChains.iterator(); i.hasNext(); ) {\n\t\t\tvar mc = i.next();\n\t\t\tmc.setId(this._idCounter++);\n\t\t\tthis._index.insert(mc.getEnvelope(), mc);\n\t\t\tthis._monoChains.add(mc);\n\t\t}\n\t},\n\tcomputeNodes: function (inputSegStrings) {\n\t\tthis._nodedSegStrings = inputSegStrings;\n\t\tfor (var i = inputSegStrings.iterator(); i.hasNext(); ) {\n\t\t\tthis.add(i.next());\n\t\t}\n\t\tthis.intersectChains();\n\t},\n\tintersectChains: function () {\n\t\tvar overlapAction = new SegmentOverlapAction(this._segInt);\n\t\tfor (var i = this._monoChains.iterator(); i.hasNext(); ) {\n\t\t\tvar queryChain = i.next();\n\t\t\tvar overlapChains = this._index.query(queryChain.getEnvelope());\n\t\t\tfor (var j = overlapChains.iterator(); j.hasNext(); ) {\n\t\t\t\tvar testChain = j.next();\n\t\t\t\tif (testChain.getId() > queryChain.getId()) {\n\t\t\t\t\tqueryChain.computeOverlaps(testChain, overlapAction);\n\t\t\t\t\tthis._nOverlaps++;\n\t\t\t\t}\n\t\t\t\tif (this._segInt.isDone()) return null;\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MCIndexNoder;\n\t}\n});\nfunction SegmentOverlapAction() {\n\tMonotoneChainOverlapAction.apply(this);\n\tthis._si = null;\n\tlet si = arguments[0];\n\tthis._si = si;\n}\ninherits(SegmentOverlapAction, MonotoneChainOverlapAction);\nextend(SegmentOverlapAction.prototype, {\n\toverlap: function () {\n\t\tif (arguments.length === 4) {\n\t\t\tlet mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3];\n\t\t\tvar ss1 = mc1.getContext();\n\t\t\tvar ss2 = mc2.getContext();\n\t\t\tthis._si.processIntersections(ss1, start1, ss2, start2);\n\t\t} else return MonotoneChainOverlapAction.prototype.overlap.apply(this, arguments);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentOverlapAction;\n\t}\n});\nMCIndexNoder.SegmentOverlapAction = SegmentOverlapAction;\n","import hasInterface from '../../../../hasInterface';\nimport Collection from '../../../../java/util/Collection';\nimport Noder from './Noder';\nimport Coordinate from '../geom/Coordinate';\nimport NodedSegmentString from './NodedSegmentString';\nimport extend from '../../../../extend';\nimport System from '../../../../java/lang/System';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function ScaledNoder() {\n\tthis._noder = null;\n\tthis._scaleFactor = null;\n\tthis._offsetX = null;\n\tthis._offsetY = null;\n\tthis._isScaled = false;\n\tif (arguments.length === 2) {\n\t\tlet noder = arguments[0], scaleFactor = arguments[1];\n\t\tScaledNoder.call(this, noder, scaleFactor, 0, 0);\n\t} else if (arguments.length === 4) {\n\t\tlet noder = arguments[0], scaleFactor = arguments[1], offsetX = arguments[2], offsetY = arguments[3];\n\t\tthis._noder = noder;\n\t\tthis._scaleFactor = scaleFactor;\n\t\tthis._isScaled = !this.isIntegerPrecision();\n\t}\n}\nextend(ScaledNoder.prototype, {\n\trescale: function () {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet segStrings = arguments[0];\n\t\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tthis.rescale(ss.getCoordinates());\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Array) {\n\t\t\tlet pts = arguments[0];\n\t\t\tvar p0 = null;\n\t\t\tvar p1 = null;\n\t\t\tif (pts.length === 2) {\n\t\t\t\tp0 = new Coordinate(pts[0]);\n\t\t\t\tp1 = new Coordinate(pts[1]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\t\tpts[i].x = pts[i].x / this._scaleFactor + this._offsetX;\n\t\t\t\tpts[i].y = pts[i].y / this._scaleFactor + this._offsetY;\n\t\t\t}\n\t\t\tif (pts.length === 2 && pts[0].equals2D(pts[1])) {\n\t\t\t\tSystem.out.println(pts);\n\t\t\t}\n\t\t}\n\t},\n\tscale: function () {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet segStrings = arguments[0];\n\t\t\tvar nodedSegmentStrings = new ArrayList(segStrings.size());\n\t\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tnodedSegmentStrings.add(new NodedSegmentString(this.scale(ss.getCoordinates()), ss.getData()));\n\t\t\t}\n\t\t\treturn nodedSegmentStrings;\n\t\t} else if (arguments[0] instanceof Array) {\n\t\t\tlet pts = arguments[0];\n\t\t\tvar roundPts = new Array(pts.length).fill(null);\n\t\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\t\troundPts[i] = new Coordinate(Math.round((pts[i].x - this._offsetX) * this._scaleFactor), Math.round((pts[i].y - this._offsetY) * this._scaleFactor), pts[i].z);\n\t\t\t}\n\t\t\tvar roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts);\n\t\t\treturn roundPtsNoDup;\n\t\t}\n\t},\n\tisIntegerPrecision: function () {\n\t\treturn this._scaleFactor === 1.0;\n\t},\n\tgetNodedSubstrings: function () {\n\t\tvar splitSS = this._noder.getNodedSubstrings();\n\t\tif (this._isScaled) this.rescale(splitSS);\n\t\treturn splitSS;\n\t},\n\tcomputeNodes: function (inputSegStrings) {\n\t\tvar intSegStrings = inputSegStrings;\n\t\tif (this._isScaled) intSegStrings = this.scale(inputSegStrings);\n\t\tthis._noder.computeNodes(intSegStrings);\n\t},\n\tinterfaces_: function () {\n\t\treturn [Noder];\n\t},\n\tgetClass: function () {\n\t\treturn ScaledNoder;\n\t}\n});\n","import TreeSet from '../../../../java/util/TreeSet';\nimport LineString from '../geom/LineString';\nimport hasInterface from '../../../../hasInterface';\nimport MultiPoint from '../geom/MultiPoint';\nimport extend from '../../../../extend';\nimport GeometryGraph from '../geomgraph/GeometryGraph';\nimport GeometryCollection from '../geom/GeometryCollection';\nimport Polygonal from '../geom/Polygonal';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter';\nimport TreeMap from '../../../../java/util/TreeMap';\nimport MultiLineString from '../geom/MultiLineString';\nexport default function IsSimpleOp() {\n\tthis._inputGeom = null;\n\tthis._isClosedEndpointsInInterior = true;\n\tthis._nonSimpleLocation = null;\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\tthis._inputGeom = geom;\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], boundaryNodeRule = arguments[1];\n\t\tthis._inputGeom = geom;\n\t\tthis._isClosedEndpointsInInterior = !boundaryNodeRule.isInBoundary(2);\n\t}\n}\nextend(IsSimpleOp.prototype, {\n\tisSimpleMultiPoint: function (mp) {\n\t\tif (mp.isEmpty()) return true;\n\t\tvar points = new TreeSet();\n\t\tfor (var i = 0; i < mp.getNumGeometries(); i++) {\n\t\t\tvar pt = mp.getGeometryN(i);\n\t\t\tvar p = pt.getCoordinate();\n\t\t\tif (points.contains(p)) {\n\t\t\t\tthis._nonSimpleLocation = p;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tpoints.add(p);\n\t\t}\n\t\treturn true;\n\t},\n\tisSimplePolygonal: function (geom) {\n\t\tvar rings = LinearComponentExtracter.getLines(geom);\n\t\tfor (var i = rings.iterator(); i.hasNext(); ) {\n\t\t\tvar ring = i.next();\n\t\t\tif (!this.isSimpleLinearGeometry(ring)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\thasClosedEndpointIntersection: function (graph) {\n\t\tvar endPoints = new TreeMap();\n\t\tfor (var i = graph.getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar maxSegmentIndex = e.getMaximumSegmentIndex();\n\t\t\tvar isClosed = e.isClosed();\n\t\t\tvar p0 = e.getCoordinate(0);\n\t\t\tthis.addEndpoint(endPoints, p0, isClosed);\n\t\t\tvar p1 = e.getCoordinate(e.getNumPoints() - 1);\n\t\t\tthis.addEndpoint(endPoints, p1, isClosed);\n\t\t}\n\t\tfor (var i = endPoints.values().iterator(); i.hasNext(); ) {\n\t\t\tvar eiInfo = i.next();\n\t\t\tif (eiInfo.isClosed && eiInfo.degree !== 2) {\n\t\t\t\tthis._nonSimpleLocation = eiInfo.getCoordinate();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetNonSimpleLocation: function () {\n\t\treturn this._nonSimpleLocation;\n\t},\n\tisSimpleLinearGeometry: function (geom) {\n\t\tif (geom.isEmpty()) return true;\n\t\tvar graph = new GeometryGraph(0, geom);\n\t\tvar li = new RobustLineIntersector();\n\t\tvar si = graph.computeSelfNodes(li, true);\n\t\tif (!si.hasIntersection()) return true;\n\t\tif (si.hasProperIntersection()) {\n\t\t\tthis._nonSimpleLocation = si.getProperIntersectionPoint();\n\t\t\treturn false;\n\t\t}\n\t\tif (this.hasNonEndpointIntersection(graph)) return false;\n\t\tif (this._isClosedEndpointsInInterior) {\n\t\t\tif (this.hasClosedEndpointIntersection(graph)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\thasNonEndpointIntersection: function (graph) {\n\t\tfor (var i = graph.getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar maxSegmentIndex = e.getMaximumSegmentIndex();\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tif (!ei.isEndPoint(maxSegmentIndex)) {\n\t\t\t\t\tthis._nonSimpleLocation = ei.getCoordinate();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\taddEndpoint: function (endPoints, p, isClosed) {\n\t\tvar eiInfo = endPoints.get(p);\n\t\tif (eiInfo === null) {\n\t\t\teiInfo = new EndpointInfo(p);\n\t\t\tendPoints.put(p, eiInfo);\n\t\t}\n\t\teiInfo.addEndpoint(isClosed);\n\t},\n\tcomputeSimple: function (geom) {\n\t\tthis._nonSimpleLocation = null;\n\t\tif (geom.isEmpty()) return true;\n\t\tif (geom instanceof LineString) return this.isSimpleLinearGeometry(geom);\n\t\tif (geom instanceof MultiLineString) return this.isSimpleLinearGeometry(geom);\n\t\tif (geom instanceof MultiPoint) return this.isSimpleMultiPoint(geom);\n\t\tif (hasInterface(geom, Polygonal)) return this.isSimplePolygonal(geom);\n\t\tif (geom instanceof GeometryCollection) return this.isSimpleGeometryCollection(geom);\n\t\treturn true;\n\t},\n\tisSimple: function () {\n\t\tthis._nonSimpleLocation = null;\n\t\treturn this.computeSimple(this._inputGeom);\n\t},\n\tisSimpleGeometryCollection: function (geom) {\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar comp = geom.getGeometryN(i);\n\t\t\tif (!this.computeSimple(comp)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IsSimpleOp;\n\t}\n});\nIsSimpleOp.isSimple = function () {\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\tvar op = new IsSimpleOp(geom);\n\t\treturn op.isSimple();\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], boundaryNodeRule = arguments[1];\n\t\tvar op = new IsSimpleOp(geom, boundaryNodeRule);\n\t\treturn op.isSimple();\n\t}\n};\nfunction EndpointInfo() {\n\tthis.pt = null;\n\tthis.isClosed = null;\n\tthis.degree = null;\n\tlet pt = arguments[0];\n\tthis.pt = pt;\n\tthis.isClosed = false;\n\tthis.degree = 0;\n}\nextend(EndpointInfo.prototype, {\n\taddEndpoint: function (isClosed) {\n\t\tthis.degree++;\n\t\tthis.isClosed |= isClosed;\n\t},\n\tgetCoordinate: function () {\n\t\treturn this.pt;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EndpointInfo;\n\t}\n});\nIsSimpleOp.EndpointInfo = EndpointInfo;\n","import extend from '../../../../../extend';\nexport default function BufferParameters() {\n\tthis._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS;\n\tthis._endCapStyle = BufferParameters.CAP_ROUND;\n\tthis._joinStyle = BufferParameters.JOIN_ROUND;\n\tthis._mitreLimit = BufferParameters.DEFAULT_MITRE_LIMIT;\n\tthis._isSingleSided = false;\n\tthis._simplifyFactor = BufferParameters.DEFAULT_SIMPLIFY_FACTOR;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet quadrantSegments = arguments[0];\n\t\tthis.setQuadrantSegments(quadrantSegments);\n\t} else if (arguments.length === 2) {\n\t\tlet quadrantSegments = arguments[0], endCapStyle = arguments[1];\n\t\tthis.setQuadrantSegments(quadrantSegments);\n\t\tthis.setEndCapStyle(endCapStyle);\n\t} else if (arguments.length === 4) {\n\t\tlet quadrantSegments = arguments[0], endCapStyle = arguments[1], joinStyle = arguments[2], mitreLimit = arguments[3];\n\t\tthis.setQuadrantSegments(quadrantSegments);\n\t\tthis.setEndCapStyle(endCapStyle);\n\t\tthis.setJoinStyle(joinStyle);\n\t\tthis.setMitreLimit(mitreLimit);\n\t}\n}\nextend(BufferParameters.prototype, {\n\tgetEndCapStyle: function () {\n\t\treturn this._endCapStyle;\n\t},\n\tisSingleSided: function () {\n\t\treturn this._isSingleSided;\n\t},\n\tsetQuadrantSegments: function (quadSegs) {\n\t\tthis._quadrantSegments = quadSegs;\n\t\tif (this._quadrantSegments === 0) this._joinStyle = BufferParameters.JOIN_BEVEL;\n\t\tif (this._quadrantSegments < 0) {\n\t\t\tthis._joinStyle = BufferParameters.JOIN_MITRE;\n\t\t\tthis._mitreLimit = Math.abs(this._quadrantSegments);\n\t\t}\n\t\tif (quadSegs <= 0) {\n\t\t\tthis._quadrantSegments = 1;\n\t\t}\n\t\tif (this._joinStyle !== BufferParameters.JOIN_ROUND) {\n\t\t\tthis._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS;\n\t\t}\n\t},\n\tgetJoinStyle: function () {\n\t\treturn this._joinStyle;\n\t},\n\tsetJoinStyle: function (joinStyle) {\n\t\tthis._joinStyle = joinStyle;\n\t},\n\tsetSimplifyFactor: function (simplifyFactor) {\n\t\tthis._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor;\n\t},\n\tgetSimplifyFactor: function () {\n\t\treturn this._simplifyFactor;\n\t},\n\tgetQuadrantSegments: function () {\n\t\treturn this._quadrantSegments;\n\t},\n\tsetEndCapStyle: function (endCapStyle) {\n\t\tthis._endCapStyle = endCapStyle;\n\t},\n\tgetMitreLimit: function () {\n\t\treturn this._mitreLimit;\n\t},\n\tsetMitreLimit: function (mitreLimit) {\n\t\tthis._mitreLimit = mitreLimit;\n\t},\n\tsetSingleSided: function (isSingleSided) {\n\t\tthis._isSingleSided = isSingleSided;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn BufferParameters;\n\t}\n});\nBufferParameters.bufferDistanceError = function (quadSegs) {\n\tvar alpha = Math.PI / 2.0 / quadSegs;\n\treturn 1 - Math.cos(alpha / 2.0);\n};\nBufferParameters.CAP_ROUND = 1;\nBufferParameters.CAP_FLAT = 2;\nBufferParameters.CAP_SQUARE = 3;\nBufferParameters.JOIN_ROUND = 1;\nBufferParameters.JOIN_MITRE = 2;\nBufferParameters.JOIN_BEVEL = 3;\nBufferParameters.DEFAULT_QUADRANT_SEGMENTS = 8;\nBufferParameters.DEFAULT_MITRE_LIMIT = 5.0;\nBufferParameters.DEFAULT_SIMPLIFY_FACTOR = 0.01;\n","import Position from '../../geomgraph/Position';\nimport extend from '../../../../../extend';\nimport Orientation from '../../algorithm/Orientation';\nimport Assert from '../../util/Assert';\nexport default function RightmostEdgeFinder() {\n\tthis._minIndex = -1;\n\tthis._minCoord = null;\n\tthis._minDe = null;\n\tthis._orientedDe = null;\n}\nextend(RightmostEdgeFinder.prototype, {\n\tgetCoordinate: function () {\n\t\treturn this._minCoord;\n\t},\n\tgetRightmostSide: function (de, index) {\n\t\tvar side = this.getRightmostSideOfSegment(de, index);\n\t\tif (side < 0) side = this.getRightmostSideOfSegment(de, index - 1);\n\t\tif (side < 0) {\n\t\t\tthis._minCoord = null;\n\t\t\tthis.checkForRightmostCoordinate(de);\n\t\t}\n\t\treturn side;\n\t},\n\tfindRightmostEdgeAtVertex: function () {\n\t\tvar pts = this._minDe.getEdge().getCoordinates();\n\t\tAssert.isTrue(this._minIndex > 0 && this._minIndex < pts.length, \"rightmost point expected to be interior vertex of edge\");\n\t\tvar pPrev = pts[this._minIndex - 1];\n\t\tvar pNext = pts[this._minIndex + 1];\n\t\tvar orientation = Orientation.index(this._minCoord, pNext, pPrev);\n\t\tvar usePrev = false;\n\t\tif (pPrev.y < this._minCoord.y && pNext.y < this._minCoord.y && orientation === Orientation.COUNTERCLOCKWISE) {\n\t\t\tusePrev = true;\n\t\t} else if (pPrev.y > this._minCoord.y && pNext.y > this._minCoord.y && orientation === Orientation.CLOCKWISE) {\n\t\t\tusePrev = true;\n\t\t}\n\t\tif (usePrev) {\n\t\t\tthis._minIndex = this._minIndex - 1;\n\t\t}\n\t},\n\tgetRightmostSideOfSegment: function (de, i) {\n\t\tvar e = de.getEdge();\n\t\tvar coord = e.getCoordinates();\n\t\tif (i < 0 || i + 1 >= coord.length) return -1;\n\t\tif (coord[i].y === coord[i + 1].y) return -1;\n\t\tvar pos = Position.LEFT;\n\t\tif (coord[i].y < coord[i + 1].y) pos = Position.RIGHT;\n\t\treturn pos;\n\t},\n\tgetEdge: function () {\n\t\treturn this._orientedDe;\n\t},\n\tcheckForRightmostCoordinate: function (de) {\n\t\tvar coord = de.getEdge().getCoordinates();\n\t\tfor (var i = 0; i < coord.length - 1; i++) {\n\t\t\tif (this._minCoord === null || coord[i].x > this._minCoord.x) {\n\t\t\t\tthis._minDe = de;\n\t\t\t\tthis._minIndex = i;\n\t\t\t\tthis._minCoord = coord[i];\n\t\t\t}\n\t\t}\n\t},\n\tfindRightmostEdgeAtNode: function () {\n\t\tvar node = this._minDe.getNode();\n\t\tvar star = node.getEdges();\n\t\tthis._minDe = star.getRightmostEdge();\n\t\tif (!this._minDe.isForward()) {\n\t\t\tthis._minDe = this._minDe.getSym();\n\t\t\tthis._minIndex = this._minDe.getEdge().getCoordinates().length - 1;\n\t\t}\n\t},\n\tfindEdge: function (dirEdgeList) {\n\t\tfor (var i = dirEdgeList.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (!de.isForward()) continue;\n\t\t\tthis.checkForRightmostCoordinate(de);\n\t\t}\n\t\tAssert.isTrue(this._minIndex !== 0 || this._minCoord.equals(this._minDe.getCoordinate()), \"inconsistency in rightmost processing\");\n\t\tif (this._minIndex === 0) {\n\t\t\tthis.findRightmostEdgeAtNode();\n\t\t} else {\n\t\t\tthis.findRightmostEdgeAtVertex();\n\t\t}\n\t\tthis._orientedDe = this._minDe;\n\t\tvar rightmostSide = this.getRightmostSide(this._minDe, this._minIndex);\n\t\tif (rightmostSide === Position.LEFT) {\n\t\t\tthis._orientedDe = this._minDe.getSym();\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RightmostEdgeFinder;\n\t}\n});\n","export default function LinkedList () {\n this.array_ = []\n}\nLinkedList.prototype.addLast = function (e) {\n this.array_.push(e)\n}\nLinkedList.prototype.removeFirst = function () {\n return this.array_.shift()\n}\nLinkedList.prototype.isEmpty = function () {\n return this.array_.length === 0\n}\n","import HashSet from '../../../../../java/util/HashSet';\nimport Position from '../../geomgraph/Position';\nimport Stack from '../../../../../java/util/Stack';\nimport RightmostEdgeFinder from './RightmostEdgeFinder';\nimport TopologyException from '../../geom/TopologyException';\nimport extend from '../../../../../extend';\nimport LinkedList from '../../../../../java/util/LinkedList';\nimport Comparable from '../../../../../java/lang/Comparable';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Envelope from '../../geom/Envelope';\nexport default function BufferSubgraph() {\n\tthis._finder = null;\n\tthis._dirEdgeList = new ArrayList();\n\tthis._nodes = new ArrayList();\n\tthis._rightMostCoord = null;\n\tthis._env = null;\n\tthis._finder = new RightmostEdgeFinder();\n}\nextend(BufferSubgraph.prototype, {\n\tclearVisitedEdges: function () {\n\t\tfor (var it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tde.setVisited(false);\n\t\t}\n\t},\n\tgetRightmostCoordinate: function () {\n\t\treturn this._rightMostCoord;\n\t},\n\tcomputeNodeDepth: function (n) {\n\t\tvar startEdge = null;\n\t\tfor (var i = n.getEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.isVisited() || de.getSym().isVisited()) {\n\t\t\t\tstartEdge = de;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (startEdge === null) throw new TopologyException(\"unable to find edge to compute depths at \" + n.getCoordinate());\n\t\tn.getEdges().computeDepths(startEdge);\n\t\tfor (var i = n.getEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tde.setVisited(true);\n\t\t\tthis.copySymDepths(de);\n\t\t}\n\t},\n\tcomputeDepth: function (outsideDepth) {\n\t\tthis.clearVisitedEdges();\n\t\tvar de = this._finder.getEdge();\n\t\tvar n = de.getNode();\n\t\tvar label = de.getLabel();\n\t\tde.setEdgeDepths(Position.RIGHT, outsideDepth);\n\t\tthis.copySymDepths(de);\n\t\tthis.computeDepths(de);\n\t},\n\tcreate: function (node) {\n\t\tthis.addReachable(node);\n\t\tthis._finder.findEdge(this._dirEdgeList);\n\t\tthis._rightMostCoord = this._finder.getCoordinate();\n\t},\n\tfindResultEdges: function () {\n\t\tfor (var it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.getDepth(Position.RIGHT) >= 1 && de.getDepth(Position.LEFT) <= 0 && !de.isInteriorAreaEdge()) {\n\t\t\t\tde.setInResult(true);\n\t\t\t}\n\t\t}\n\t},\n\tcomputeDepths: function (startEdge) {\n\t\tvar nodesVisited = new HashSet();\n\t\tvar nodeQueue = new LinkedList();\n\t\tvar startNode = startEdge.getNode();\n\t\tnodeQueue.addLast(startNode);\n\t\tnodesVisited.add(startNode);\n\t\tstartEdge.setVisited(true);\n\t\twhile (!nodeQueue.isEmpty()) {\n\t\t\tvar n = nodeQueue.removeFirst();\n\t\t\tnodesVisited.add(n);\n\t\t\tthis.computeNodeDepth(n);\n\t\t\tfor (var i = n.getEdges().iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tvar sym = de.getSym();\n\t\t\t\tif (sym.isVisited()) continue;\n\t\t\t\tvar adjNode = sym.getNode();\n\t\t\t\tif (!nodesVisited.contains(adjNode)) {\n\t\t\t\t\tnodeQueue.addLast(adjNode);\n\t\t\t\t\tnodesVisited.add(adjNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcompareTo: function (o) {\n\t\tvar graph = o;\n\t\tif (this._rightMostCoord.x < graph._rightMostCoord.x) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (this._rightMostCoord.x > graph._rightMostCoord.x) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t},\n\tgetEnvelope: function () {\n\t\tif (this._env === null) {\n\t\t\tvar edgeEnv = new Envelope();\n\t\t\tfor (var it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n\t\t\t\tvar dirEdge = it.next();\n\t\t\t\tvar pts = dirEdge.getEdge().getCoordinates();\n\t\t\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\t\t\tedgeEnv.expandToInclude(pts[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._env = edgeEnv;\n\t\t}\n\t\treturn this._env;\n\t},\n\taddReachable: function (startNode) {\n\t\tvar nodeStack = new Stack();\n\t\tnodeStack.add(startNode);\n\t\twhile (!nodeStack.empty()) {\n\t\t\tvar node = nodeStack.pop();\n\t\t\tthis.add(node, nodeStack);\n\t\t}\n\t},\n\tcopySymDepths: function (de) {\n\t\tvar sym = de.getSym();\n\t\tsym.setDepth(Position.LEFT, de.getDepth(Position.RIGHT));\n\t\tsym.setDepth(Position.RIGHT, de.getDepth(Position.LEFT));\n\t},\n\tadd: function (node, nodeStack) {\n\t\tnode.setVisited(true);\n\t\tthis._nodes.add(node);\n\t\tfor (var i = node.getEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tthis._dirEdgeList.add(de);\n\t\t\tvar sym = de.getSym();\n\t\t\tvar symNode = sym.getNode();\n\t\t\tif (!symNode.isVisited()) nodeStack.push(symNode);\n\t\t}\n\t},\n\tgetNodes: function () {\n\t\treturn this._nodes;\n\t},\n\tgetDirectedEdges: function () {\n\t\treturn this._dirEdgeList;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn BufferSubgraph;\n\t}\n});\n","import Location from '../geom/Location';\nimport Position from './Position';\nimport PointLocation from '../algorithm/PointLocation';\nimport TopologyException from '../geom/TopologyException';\nimport extend from '../../../../extend';\nimport Orientation from '../algorithm/Orientation';\nimport Label from './Label';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Assert from '../util/Assert';\nexport default function EdgeRing() {\n\tthis._startDe = null;\n\tthis._maxNodeDegree = -1;\n\tthis._edges = new ArrayList();\n\tthis._pts = new ArrayList();\n\tthis._label = new Label(Location.NONE);\n\tthis._ring = null;\n\tthis._isHole = null;\n\tthis._shell = null;\n\tthis._holes = new ArrayList();\n\tthis._geometryFactory = null;\n\tlet start = arguments[0], geometryFactory = arguments[1];\n\tthis._geometryFactory = geometryFactory;\n\tthis.computePoints(start);\n\tthis.computeRing();\n}\nextend(EdgeRing.prototype, {\n\tcomputeRing: function () {\n\t\tif (this._ring !== null) return null;\n\t\tvar coord = new Array(this._pts.size()).fill(null);\n\t\tfor (var i = 0; i < this._pts.size(); i++) {\n\t\t\tcoord[i] = this._pts.get(i);\n\t\t}\n\t\tthis._ring = this._geometryFactory.createLinearRing(coord);\n\t\tthis._isHole = Orientation.isCCW(this._ring.getCoordinates());\n\t},\n\tisIsolated: function () {\n\t\treturn this._label.getGeometryCount() === 1;\n\t},\n\tcomputePoints: function (start) {\n\t\tthis._startDe = start;\n\t\tvar de = start;\n\t\tvar isFirstEdge = true;\n\t\tdo {\n\t\t\tif (de === null) throw new TopologyException(\"Found null DirectedEdge\");\n\t\t\tif (de.getEdgeRing() === this) throw new TopologyException(\"Directed Edge visited twice during ring-building at \" + de.getCoordinate());\n\t\t\tthis._edges.add(de);\n\t\t\tvar label = de.getLabel();\n\t\t\tAssert.isTrue(label.isArea());\n\t\t\tthis.mergeLabel(label);\n\t\t\tthis.addPoints(de.getEdge(), de.isForward(), isFirstEdge);\n\t\t\tisFirstEdge = false;\n\t\t\tthis.setEdgeRing(de, this);\n\t\t\tde = this.getNext(de);\n\t\t} while (de !== this._startDe);\n\t},\n\tgetLinearRing: function () {\n\t\treturn this._ring;\n\t},\n\tgetCoordinate: function (i) {\n\t\treturn this._pts.get(i);\n\t},\n\tcomputeMaxNodeDegree: function () {\n\t\tthis._maxNodeDegree = 0;\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tvar node = de.getNode();\n\t\t\tvar degree = node.getEdges().getOutgoingDegree(this);\n\t\t\tif (degree > this._maxNodeDegree) this._maxNodeDegree = degree;\n\t\t\tde = this.getNext(de);\n\t\t} while (de !== this._startDe);\n\t\tthis._maxNodeDegree *= 2;\n\t},\n\taddPoints: function (edge, isForward, isFirstEdge) {\n\t\tvar edgePts = edge.getCoordinates();\n\t\tif (isForward) {\n\t\t\tvar startIndex = 1;\n\t\t\tif (isFirstEdge) startIndex = 0;\n\t\t\tfor (var i = startIndex; i < edgePts.length; i++) {\n\t\t\t\tthis._pts.add(edgePts[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tvar startIndex = edgePts.length - 2;\n\t\t\tif (isFirstEdge) startIndex = edgePts.length - 1;\n\t\t\tfor (var i = startIndex; i >= 0; i--) {\n\t\t\t\tthis._pts.add(edgePts[i]);\n\t\t\t}\n\t\t}\n\t},\n\tisHole: function () {\n\t\treturn this._isHole;\n\t},\n\tsetInResult: function () {\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tde.getEdge().setInResult(true);\n\t\t\tde = de.getNext();\n\t\t} while (de !== this._startDe);\n\t},\n\tcontainsPoint: function (p) {\n\t\tvar shell = this.getLinearRing();\n\t\tvar env = shell.getEnvelopeInternal();\n\t\tif (!env.contains(p)) return false;\n\t\tif (!PointLocation.isInRing(p, shell.getCoordinates())) return false;\n\t\tfor (var i = this._holes.iterator(); i.hasNext(); ) {\n\t\t\tvar hole = i.next();\n\t\t\tif (hole.containsPoint(p)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\taddHole: function (ring) {\n\t\tthis._holes.add(ring);\n\t},\n\tisShell: function () {\n\t\treturn this._shell === null;\n\t},\n\tgetLabel: function () {\n\t\treturn this._label;\n\t},\n\tgetEdges: function () {\n\t\treturn this._edges;\n\t},\n\tgetMaxNodeDegree: function () {\n\t\tif (this._maxNodeDegree < 0) this.computeMaxNodeDegree();\n\t\treturn this._maxNodeDegree;\n\t},\n\tgetShell: function () {\n\t\treturn this._shell;\n\t},\n\tmergeLabel: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet deLabel = arguments[0];\n\t\t\tthis.mergeLabel(deLabel, 0);\n\t\t\tthis.mergeLabel(deLabel, 1);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet deLabel = arguments[0], geomIndex = arguments[1];\n\t\t\tvar loc = deLabel.getLocation(geomIndex, Position.RIGHT);\n\t\t\tif (loc === Location.NONE) return null;\n\t\t\tif (this._label.getLocation(geomIndex) === Location.NONE) {\n\t\t\t\tthis._label.setLocation(geomIndex, loc);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t},\n\tsetShell: function (shell) {\n\t\tthis._shell = shell;\n\t\tif (shell !== null) shell.addHole(this);\n\t},\n\ttoPolygon: function (geometryFactory) {\n\t\tvar holeLR = new Array(this._holes.size()).fill(null);\n\t\tfor (var i = 0; i < this._holes.size(); i++) {\n\t\t\tholeLR[i] = this._holes.get(i).getLinearRing();\n\t\t}\n\t\tvar poly = geometryFactory.createPolygon(this.getLinearRing(), holeLR);\n\t\treturn poly;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeRing;\n\t}\n});\n","import extend from '../../../../../extend';\nimport EdgeRing from '../../geomgraph/EdgeRing';\nimport inherits from '../../../../../inherits';\nexport default function MinimalEdgeRing() {\n\tlet start = arguments[0], geometryFactory = arguments[1];\n\tEdgeRing.call(this, start, geometryFactory);\n}\ninherits(MinimalEdgeRing, EdgeRing);\nextend(MinimalEdgeRing.prototype, {\n\tsetEdgeRing: function (de, er) {\n\t\tde.setMinEdgeRing(er);\n\t},\n\tgetNext: function (de) {\n\t\treturn de.getNextMin();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MinimalEdgeRing;\n\t}\n});\n","import MinimalEdgeRing from './MinimalEdgeRing';\nimport extend from '../../../../../extend';\nimport EdgeRing from '../../geomgraph/EdgeRing';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport inherits from '../../../../../inherits';\nexport default function MaximalEdgeRing() {\n\tlet start = arguments[0], geometryFactory = arguments[1];\n\tEdgeRing.call(this, start, geometryFactory);\n}\ninherits(MaximalEdgeRing, EdgeRing);\nextend(MaximalEdgeRing.prototype, {\n\tbuildMinimalRings: function () {\n\t\tvar minEdgeRings = new ArrayList();\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tif (de.getMinEdgeRing() === null) {\n\t\t\t\tvar minEr = new MinimalEdgeRing(de, this._geometryFactory);\n\t\t\t\tminEdgeRings.add(minEr);\n\t\t\t}\n\t\t\tde = de.getNext();\n\t\t} while (de !== this._startDe);\n\t\treturn minEdgeRings;\n\t},\n\tsetEdgeRing: function (de, er) {\n\t\tde.setEdgeRing(er);\n\t},\n\tlinkDirectedEdgesForMinimalEdgeRings: function () {\n\t\tvar de = this._startDe;\n\t\tdo {\n\t\t\tvar node = de.getNode();\n\t\t\tnode.getEdges().linkMinimalDirectedEdges(this);\n\t\t\tde = de.getNext();\n\t\t} while (de !== this._startDe);\n\t},\n\tgetNext: function (de) {\n\t\treturn de.getNext();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MaximalEdgeRing;\n\t}\n});\n","import PointLocation from '../../algorithm/PointLocation';\nimport TopologyException from '../../geom/TopologyException';\nimport extend from '../../../../../extend';\nimport MaximalEdgeRing from './MaximalEdgeRing';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default function PolygonBuilder() {\n\tthis._geometryFactory = null;\n\tthis._shellList = new ArrayList();\n\tlet geometryFactory = arguments[0];\n\tthis._geometryFactory = geometryFactory;\n}\nextend(PolygonBuilder.prototype, {\n\tsortShellsAndHoles: function (edgeRings, shellList, freeHoleList) {\n\t\tfor (var it = edgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.isHole()) {\n\t\t\t\tfreeHoleList.add(er);\n\t\t\t} else {\n\t\t\t\tshellList.add(er);\n\t\t\t}\n\t\t}\n\t},\n\tcomputePolygons: function (shellList) {\n\t\tvar resultPolyList = new ArrayList();\n\t\tfor (var it = shellList.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tvar poly = er.toPolygon(this._geometryFactory);\n\t\t\tresultPolyList.add(poly);\n\t\t}\n\t\treturn resultPolyList;\n\t},\n\tplaceFreeHoles: function (shellList, freeHoleList) {\n\t\tfor (var it = freeHoleList.iterator(); it.hasNext(); ) {\n\t\t\tvar hole = it.next();\n\t\t\tif (hole.getShell() === null) {\n\t\t\t\tvar shell = this.findEdgeRingContaining(hole, shellList);\n\t\t\t\tif (shell === null) throw new TopologyException(\"unable to assign hole to a shell\", hole.getCoordinate(0));\n\t\t\t\thole.setShell(shell);\n\t\t\t}\n\t\t}\n\t},\n\tbuildMinimalEdgeRings: function (maxEdgeRings, shellList, freeHoleList) {\n\t\tvar edgeRings = new ArrayList();\n\t\tfor (var it = maxEdgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.getMaxNodeDegree() > 2) {\n\t\t\t\ter.linkDirectedEdgesForMinimalEdgeRings();\n\t\t\t\tvar minEdgeRings = er.buildMinimalRings();\n\t\t\t\tvar shell = this.findShell(minEdgeRings);\n\t\t\t\tif (shell !== null) {\n\t\t\t\t\tthis.placePolygonHoles(shell, minEdgeRings);\n\t\t\t\t\tshellList.add(shell);\n\t\t\t\t} else {\n\t\t\t\t\tfreeHoleList.addAll(minEdgeRings);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tedgeRings.add(er);\n\t\t\t}\n\t\t}\n\t\treturn edgeRings;\n\t},\n\tcontainsPoint: function (p) {\n\t\tfor (var it = this._shellList.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.containsPoint(p)) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tbuildMaximalEdgeRings: function (dirEdges) {\n\t\tvar maxEdgeRings = new ArrayList();\n\t\tfor (var it = dirEdges.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.isInResult() && de.getLabel().isArea()) {\n\t\t\t\tif (de.getEdgeRing() === null) {\n\t\t\t\t\tvar er = new MaximalEdgeRing(de, this._geometryFactory);\n\t\t\t\t\tmaxEdgeRings.add(er);\n\t\t\t\t\ter.setInResult();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn maxEdgeRings;\n\t},\n\tplacePolygonHoles: function (shell, minEdgeRings) {\n\t\tfor (var it = minEdgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (er.isHole()) {\n\t\t\t\ter.setShell(shell);\n\t\t\t}\n\t\t}\n\t},\n\tgetPolygons: function () {\n\t\tvar resultPolyList = this.computePolygons(this._shellList);\n\t\treturn resultPolyList;\n\t},\n\tfindEdgeRingContaining: function (testEr, shellList) {\n\t\tvar testRing = testEr.getLinearRing();\n\t\tvar testEnv = testRing.getEnvelopeInternal();\n\t\tvar testPt = testRing.getCoordinateN(0);\n\t\tvar minShell = null;\n\t\tvar minEnv = null;\n\t\tfor (var it = shellList.iterator(); it.hasNext(); ) {\n\t\t\tvar tryShell = it.next();\n\t\t\tvar tryRing = tryShell.getLinearRing();\n\t\t\tvar tryEnv = tryRing.getEnvelopeInternal();\n\t\t\tif (minShell !== null) minEnv = minShell.getLinearRing().getEnvelopeInternal();\n\t\t\tvar isContained = false;\n\t\t\tif (tryEnv.contains(testEnv) && PointLocation.isInRing(testPt, tryRing.getCoordinates())) isContained = true;\n\t\t\tif (isContained) {\n\t\t\t\tif (minShell === null || minEnv.contains(tryEnv)) {\n\t\t\t\t\tminShell = tryShell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn minShell;\n\t},\n\tfindShell: function (minEdgeRings) {\n\t\tvar shellCount = 0;\n\t\tvar shell = null;\n\t\tfor (var it = minEdgeRings.iterator(); it.hasNext(); ) {\n\t\t\tvar er = it.next();\n\t\t\tif (!er.isHole()) {\n\t\t\t\tshell = er;\n\t\t\t\tshellCount++;\n\t\t\t}\n\t\t}\n\t\tAssert.isTrue(shellCount <= 1, \"found two shells in MinimalEdgeRing list\");\n\t\treturn shell;\n\t},\n\tadd: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet graph = arguments[0];\n\t\t\tthis.add(graph.getEdgeEnds(), graph.getNodes());\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet dirEdges = arguments[0], nodes = arguments[1];\n\t\t\tPlanarGraph.linkResultDirectedEdges(nodes);\n\t\t\tvar maxEdgeRings = this.buildMaximalEdgeRings(dirEdges);\n\t\t\tvar freeHoleList = new ArrayList();\n\t\t\tvar edgeRings = this.buildMinimalEdgeRings(maxEdgeRings, this._shellList, freeHoleList);\n\t\t\tthis.sortShellsAndHoles(edgeRings, this._shellList, freeHoleList);\n\t\t\tthis.placeFreeHoles(this._shellList, freeHoleList);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PolygonBuilder;\n\t}\n});\n","import CoordinateList from '../../geom/CoordinateList';\nimport extend from '../../../../../extend';\nimport Orientation from '../../algorithm/Orientation';\nimport Distance from '../../algorithm/Distance';\nexport default function BufferInputLineSimplifier() {\n\tthis._inputLine = null;\n\tthis._distanceTol = null;\n\tthis._isDeleted = null;\n\tthis._angleOrientation = Orientation.COUNTERCLOCKWISE;\n\tlet inputLine = arguments[0];\n\tthis._inputLine = inputLine;\n}\nextend(BufferInputLineSimplifier.prototype, {\n\tisDeletable: function (i0, i1, i2, distanceTol) {\n\t\tvar p0 = this._inputLine[i0];\n\t\tvar p1 = this._inputLine[i1];\n\t\tvar p2 = this._inputLine[i2];\n\t\tif (!this.isConcave(p0, p1, p2)) return false;\n\t\tif (!this.isShallow(p0, p1, p2, distanceTol)) return false;\n\t\treturn this.isShallowSampled(p0, p1, i0, i2, distanceTol);\n\t},\n\tdeleteShallowConcavities: function () {\n\t\tvar index = 1;\n\t\tvar maxIndex = this._inputLine.length - 1;\n\t\tvar midIndex = this.findNextNonDeletedIndex(index);\n\t\tvar lastIndex = this.findNextNonDeletedIndex(midIndex);\n\t\tvar isChanged = false;\n\t\twhile (lastIndex < this._inputLine.length) {\n\t\t\tvar isMiddleVertexDeleted = false;\n\t\t\tif (this.isDeletable(index, midIndex, lastIndex, this._distanceTol)) {\n\t\t\t\tthis._isDeleted[midIndex] = BufferInputLineSimplifier.DELETE;\n\t\t\t\tisMiddleVertexDeleted = true;\n\t\t\t\tisChanged = true;\n\t\t\t}\n\t\t\tif (isMiddleVertexDeleted) index = lastIndex; else index = midIndex;\n\t\t\tmidIndex = this.findNextNonDeletedIndex(index);\n\t\t\tlastIndex = this.findNextNonDeletedIndex(midIndex);\n\t\t}\n\t\treturn isChanged;\n\t},\n\tisShallowConcavity: function (p0, p1, p2, distanceTol) {\n\t\tvar orientation = Orientation.index(p0, p1, p2);\n\t\tvar isAngleToSimplify = orientation === this._angleOrientation;\n\t\tif (!isAngleToSimplify) return false;\n\t\tvar dist = Distance.pointToSegment(p1, p0, p2);\n\t\treturn dist < distanceTol;\n\t},\n\tisShallowSampled: function (p0, p2, i0, i2, distanceTol) {\n\t\tvar inc = Math.trunc((i2 - i0) / BufferInputLineSimplifier.NUM_PTS_TO_CHECK);\n\t\tif (inc <= 0) inc = 1;\n\t\tfor (var i = i0; i < i2; i += inc) {\n\t\t\tif (!this.isShallow(p0, p2, this._inputLine[i], distanceTol)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\tisConcave: function (p0, p1, p2) {\n\t\tvar orientation = Orientation.index(p0, p1, p2);\n\t\tvar isConcave = orientation === this._angleOrientation;\n\t\treturn isConcave;\n\t},\n\tsimplify: function (distanceTol) {\n\t\tthis._distanceTol = Math.abs(distanceTol);\n\t\tif (distanceTol < 0) this._angleOrientation = Orientation.CLOCKWISE;\n\t\tthis._isDeleted = new Array(this._inputLine.length).fill(null);\n\t\tvar isChanged = false;\n\t\tdo {\n\t\t\tisChanged = this.deleteShallowConcavities();\n\t\t} while (isChanged);\n\t\treturn this.collapseLine();\n\t},\n\tfindNextNonDeletedIndex: function (index) {\n\t\tvar next = index + 1;\n\t\twhile (next < this._inputLine.length && this._isDeleted[next] === BufferInputLineSimplifier.DELETE) next++;\n\t\treturn next;\n\t},\n\tisShallow: function (p0, p1, p2, distanceTol) {\n\t\tvar dist = Distance.pointToSegment(p1, p0, p2);\n\t\treturn dist < distanceTol;\n\t},\n\tcollapseLine: function () {\n\t\tvar coordList = new CoordinateList();\n\t\tfor (var i = 0; i < this._inputLine.length; i++) {\n\t\t\tif (this._isDeleted[i] !== BufferInputLineSimplifier.DELETE) coordList.add(this._inputLine[i]);\n\t\t}\n\t\treturn coordList.toCoordinateArray();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn BufferInputLineSimplifier;\n\t}\n});\nBufferInputLineSimplifier.simplify = function (inputLine, distanceTol) {\n\tvar simp = new BufferInputLineSimplifier(inputLine);\n\treturn simp.simplify(distanceTol);\n};\nBufferInputLineSimplifier.INIT = 0;\nBufferInputLineSimplifier.DELETE = 1;\nBufferInputLineSimplifier.KEEP = 1;\nBufferInputLineSimplifier.NUM_PTS_TO_CHECK = 10;\n","import GeometryFactory from '../../geom/GeometryFactory';\nimport Coordinate from '../../geom/Coordinate';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function OffsetSegmentString() {\n\tthis._ptList = null;\n\tthis._precisionModel = null;\n\tthis._minimimVertexDistance = 0.0;\n\tthis._ptList = new ArrayList();\n}\nextend(OffsetSegmentString.prototype, {\n\tgetCoordinates: function () {\n\t\tvar coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE);\n\t\treturn coord;\n\t},\n\tsetPrecisionModel: function (precisionModel) {\n\t\tthis._precisionModel = precisionModel;\n\t},\n\taddPt: function (pt) {\n\t\tvar bufPt = new Coordinate(pt);\n\t\tthis._precisionModel.makePrecise(bufPt);\n\t\tif (this.isRedundant(bufPt)) return null;\n\t\tthis._ptList.add(bufPt);\n\t},\n\treverse: function () {},\n\taddPts: function (pt, isForward) {\n\t\tif (isForward) {\n\t\t\tfor (var i = 0; i < pt.length; i++) {\n\t\t\t\tthis.addPt(pt[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = pt.length - 1; i >= 0; i--) {\n\t\t\t\tthis.addPt(pt[i]);\n\t\t\t}\n\t\t}\n\t},\n\tisRedundant: function (pt) {\n\t\tif (this._ptList.size() < 1) return false;\n\t\tvar lastPt = this._ptList.get(this._ptList.size() - 1);\n\t\tvar ptDist = pt.distance(lastPt);\n\t\tif (ptDist < this._minimimVertexDistance) return true;\n\t\treturn false;\n\t},\n\ttoString: function () {\n\t\tvar fact = new GeometryFactory();\n\t\tvar line = fact.createLineString(this.getCoordinates());\n\t\treturn line.toString();\n\t},\n\tcloseRing: function () {\n\t\tif (this._ptList.size() < 1) return null;\n\t\tvar startPt = new Coordinate(this._ptList.get(0));\n\t\tvar lastPt = this._ptList.get(this._ptList.size() - 1);\n\t\tvar last2Pt = null;\n\t\tif (this._ptList.size() >= 2) last2Pt = this._ptList.get(this._ptList.size() - 2);\n\t\tif (startPt.equals(lastPt)) return null;\n\t\tthis._ptList.add(startPt);\n\t},\n\tsetMinimumVertexDistance: function (minimimVertexDistance) {\n\t\tthis._minimimVertexDistance = minimimVertexDistance;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn OffsetSegmentString;\n\t}\n});\nOffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null);\n","import BufferParameters from './BufferParameters';\nimport NotRepresentableException from '../../algorithm/NotRepresentableException';\nimport Position from '../../geomgraph/Position';\nimport Coordinate from '../../geom/Coordinate';\nimport extend from '../../../../../extend';\nimport Orientation from '../../algorithm/Orientation';\nimport OffsetSegmentString from './OffsetSegmentString';\nimport LineSegment from '../../geom/LineSegment';\nimport Angle from '../../algorithm/Angle';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport HCoordinate from '../../algorithm/HCoordinate';\nexport default function OffsetSegmentGenerator() {\n\tthis._maxCurveSegmentError = 0.0;\n\tthis._filletAngleQuantum = null;\n\tthis._closingSegLengthFactor = 1;\n\tthis._segList = null;\n\tthis._distance = 0.0;\n\tthis._precisionModel = null;\n\tthis._bufParams = null;\n\tthis._li = null;\n\tthis._s0 = null;\n\tthis._s1 = null;\n\tthis._s2 = null;\n\tthis._seg0 = new LineSegment();\n\tthis._seg1 = new LineSegment();\n\tthis._offset0 = new LineSegment();\n\tthis._offset1 = new LineSegment();\n\tthis._side = 0;\n\tthis._hasNarrowConcaveAngle = false;\n\tlet precisionModel = arguments[0], bufParams = arguments[1], distance = arguments[2];\n\tthis._precisionModel = precisionModel;\n\tthis._bufParams = bufParams;\n\tthis._li = new RobustLineIntersector();\n\tthis._filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments();\n\tif (bufParams.getQuadrantSegments() >= 8 && bufParams.getJoinStyle() === BufferParameters.JOIN_ROUND) this._closingSegLengthFactor = OffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR;\n\tthis.init(distance);\n}\nextend(OffsetSegmentGenerator.prototype, {\n\taddNextSegment: function (p, addStartPoint) {\n\t\tthis._s0 = this._s1;\n\t\tthis._s1 = this._s2;\n\t\tthis._s2 = p;\n\t\tthis._seg0.setCoordinates(this._s0, this._s1);\n\t\tthis.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0);\n\t\tthis._seg1.setCoordinates(this._s1, this._s2);\n\t\tthis.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1);\n\t\tif (this._s1.equals(this._s2)) return null;\n\t\tvar orientation = Orientation.index(this._s0, this._s1, this._s2);\n\t\tvar outsideTurn = orientation === Orientation.CLOCKWISE && this._side === Position.LEFT || orientation === Orientation.COUNTERCLOCKWISE && this._side === Position.RIGHT;\n\t\tif (orientation === 0) {\n\t\t\tthis.addCollinear(addStartPoint);\n\t\t} else if (outsideTurn) {\n\t\t\tthis.addOutsideTurn(orientation, addStartPoint);\n\t\t} else {\n\t\t\tthis.addInsideTurn(orientation, addStartPoint);\n\t\t}\n\t},\n\taddLineEndCap: function (p0, p1) {\n\t\tvar seg = new LineSegment(p0, p1);\n\t\tvar offsetL = new LineSegment();\n\t\tthis.computeOffsetSegment(seg, Position.LEFT, this._distance, offsetL);\n\t\tvar offsetR = new LineSegment();\n\t\tthis.computeOffsetSegment(seg, Position.RIGHT, this._distance, offsetR);\n\t\tvar dx = p1.x - p0.x;\n\t\tvar dy = p1.y - p0.y;\n\t\tvar angle = Math.atan2(dy, dx);\n\t\tswitch (this._bufParams.getEndCapStyle()) {\n\t\t\tcase BufferParameters.CAP_ROUND:\n\t\t\t\tthis._segList.addPt(offsetL.p1);\n\t\t\t\tthis.addDirectedFillet(p1, angle + Math.PI / 2, angle - Math.PI / 2, Orientation.CLOCKWISE, this._distance);\n\t\t\t\tthis._segList.addPt(offsetR.p1);\n\t\t\t\tbreak;\n\t\t\tcase BufferParameters.CAP_FLAT:\n\t\t\t\tthis._segList.addPt(offsetL.p1);\n\t\t\t\tthis._segList.addPt(offsetR.p1);\n\t\t\t\tbreak;\n\t\t\tcase BufferParameters.CAP_SQUARE:\n\t\t\t\tvar squareCapSideOffset = new Coordinate();\n\t\t\t\tsquareCapSideOffset.x = Math.abs(this._distance) * Math.cos(angle);\n\t\t\t\tsquareCapSideOffset.y = Math.abs(this._distance) * Math.sin(angle);\n\t\t\t\tvar squareCapLOffset = new Coordinate(offsetL.p1.x + squareCapSideOffset.x, offsetL.p1.y + squareCapSideOffset.y);\n\t\t\t\tvar squareCapROffset = new Coordinate(offsetR.p1.x + squareCapSideOffset.x, offsetR.p1.y + squareCapSideOffset.y);\n\t\t\t\tthis._segList.addPt(squareCapLOffset);\n\t\t\t\tthis._segList.addPt(squareCapROffset);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tgetCoordinates: function () {\n\t\tvar pts = this._segList.getCoordinates();\n\t\treturn pts;\n\t},\n\taddMitreJoin: function (p, offset0, offset1, distance) {\n\t\tvar isMitreWithinLimit = true;\n\t\tvar intPt = null;\n\t\ttry {\n\t\t\tintPt = HCoordinate.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1);\n\t\t\tvar mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance);\n\t\t\tif (mitreRatio > this._bufParams.getMitreLimit()) isMitreWithinLimit = false;\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof NotRepresentableException) {\n\t\t\t\tintPt = new Coordinate(0, 0);\n\t\t\t\tisMitreWithinLimit = false;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\tif (isMitreWithinLimit) {\n\t\t\tthis._segList.addPt(intPt);\n\t\t} else {\n\t\t\tthis.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit());\n\t\t}\n\t},\n\taddOutsideTurn: function (orientation, addStartPoint) {\n\t\tif (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR) {\n\t\t\tthis._segList.addPt(this._offset0.p1);\n\t\t\treturn null;\n\t\t}\n\t\tif (this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n\t\t\tthis.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance);\n\t\t} else if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL) {\n\t\t\tthis.addBevelJoin(this._offset0, this._offset1);\n\t\t} else {\n\t\t\tif (addStartPoint) this._segList.addPt(this._offset0.p1);\n\t\t\tthis.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, orientation, this._distance);\n\t\t\tthis._segList.addPt(this._offset1.p0);\n\t\t}\n\t},\n\tcreateSquare: function (p) {\n\t\tthis._segList.addPt(new Coordinate(p.x + this._distance, p.y + this._distance));\n\t\tthis._segList.addPt(new Coordinate(p.x + this._distance, p.y - this._distance));\n\t\tthis._segList.addPt(new Coordinate(p.x - this._distance, p.y - this._distance));\n\t\tthis._segList.addPt(new Coordinate(p.x - this._distance, p.y + this._distance));\n\t\tthis._segList.closeRing();\n\t},\n\taddSegments: function (pt, isForward) {\n\t\tthis._segList.addPts(pt, isForward);\n\t},\n\taddFirstSegment: function () {\n\t\tthis._segList.addPt(this._offset1.p0);\n\t},\n\taddCornerFillet: function (p, p0, p1, direction, radius) {\n\t\tvar dx0 = p0.x - p.x;\n\t\tvar dy0 = p0.y - p.y;\n\t\tvar startAngle = Math.atan2(dy0, dx0);\n\t\tvar dx1 = p1.x - p.x;\n\t\tvar dy1 = p1.y - p.y;\n\t\tvar endAngle = Math.atan2(dy1, dx1);\n\t\tif (direction === Orientation.CLOCKWISE) {\n\t\t\tif (startAngle <= endAngle) startAngle += 2.0 * Math.PI;\n\t\t} else {\n\t\t\tif (startAngle >= endAngle) startAngle -= 2.0 * Math.PI;\n\t\t}\n\t\tthis._segList.addPt(p0);\n\t\tthis.addDirectedFillet(p, startAngle, endAngle, direction, radius);\n\t\tthis._segList.addPt(p1);\n\t},\n\taddLastSegment: function () {\n\t\tthis._segList.addPt(this._offset1.p1);\n\t},\n\tinitSideSegments: function (s1, s2, side) {\n\t\tthis._s1 = s1;\n\t\tthis._s2 = s2;\n\t\tthis._side = side;\n\t\tthis._seg1.setCoordinates(s1, s2);\n\t\tthis.computeOffsetSegment(this._seg1, side, this._distance, this._offset1);\n\t},\n\taddLimitedMitreJoin: function (offset0, offset1, distance, mitreLimit) {\n\t\tvar basePt = this._seg0.p1;\n\t\tvar ang0 = Angle.angle(basePt, this._seg0.p0);\n\t\tvar ang1 = Angle.angle(basePt, this._seg1.p1);\n\t\tvar angDiff = Angle.angleBetweenOriented(this._seg0.p0, basePt, this._seg1.p1);\n\t\tvar angDiffHalf = angDiff / 2;\n\t\tvar midAng = Angle.normalize(ang0 + angDiffHalf);\n\t\tvar mitreMidAng = Angle.normalize(midAng + Math.PI);\n\t\tvar mitreDist = mitreLimit * distance;\n\t\tvar bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf));\n\t\tvar bevelHalfLen = distance - bevelDelta;\n\t\tvar bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng);\n\t\tvar bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng);\n\t\tvar bevelMidPt = new Coordinate(bevelMidX, bevelMidY);\n\t\tvar mitreMidLine = new LineSegment(basePt, bevelMidPt);\n\t\tvar bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen);\n\t\tvar bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen);\n\t\tif (this._side === Position.LEFT) {\n\t\t\tthis._segList.addPt(bevelEndLeft);\n\t\t\tthis._segList.addPt(bevelEndRight);\n\t\t} else {\n\t\t\tthis._segList.addPt(bevelEndRight);\n\t\t\tthis._segList.addPt(bevelEndLeft);\n\t\t}\n\t},\n\taddDirectedFillet: function (p, startAngle, endAngle, direction, radius) {\n\t\tvar directionFactor = direction === Orientation.CLOCKWISE ? -1 : 1;\n\t\tvar totalAngle = Math.abs(startAngle - endAngle);\n\t\tvar nSegs = Math.trunc(totalAngle / this._filletAngleQuantum + 0.5);\n\t\tif (nSegs < 1) return null;\n\t\tvar initAngle = null, currAngleInc = null;\n\t\tinitAngle = 0.0;\n\t\tcurrAngleInc = totalAngle / nSegs;\n\t\tvar currAngle = initAngle;\n\t\tvar pt = new Coordinate();\n\t\twhile (currAngle < totalAngle) {\n\t\t\tvar angle = startAngle + directionFactor * currAngle;\n\t\t\tpt.x = p.x + radius * Math.cos(angle);\n\t\t\tpt.y = p.y + radius * Math.sin(angle);\n\t\t\tthis._segList.addPt(pt);\n\t\t\tcurrAngle += currAngleInc;\n\t\t}\n\t},\n\tcomputeOffsetSegment: function (seg, side, distance, offset) {\n\t\tvar sideSign = side === Position.LEFT ? 1 : -1;\n\t\tvar dx = seg.p1.x - seg.p0.x;\n\t\tvar dy = seg.p1.y - seg.p0.y;\n\t\tvar len = Math.sqrt(dx * dx + dy * dy);\n\t\tvar ux = sideSign * distance * dx / len;\n\t\tvar uy = sideSign * distance * dy / len;\n\t\toffset.p0.x = seg.p0.x - uy;\n\t\toffset.p0.y = seg.p0.y + ux;\n\t\toffset.p1.x = seg.p1.x - uy;\n\t\toffset.p1.y = seg.p1.y + ux;\n\t},\n\taddInsideTurn: function (orientation, addStartPoint) {\n\t\tthis._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tthis._segList.addPt(this._li.getIntersection(0));\n\t\t} else {\n\t\t\tthis._hasNarrowConcaveAngle = true;\n\t\t\tif (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {\n\t\t\t\tthis._segList.addPt(this._offset0.p1);\n\t\t\t} else {\n\t\t\t\tthis._segList.addPt(this._offset0.p1);\n\t\t\t\tif (this._closingSegLengthFactor > 0) {\n\t\t\t\t\tvar mid0 = new Coordinate((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n\t\t\t\t\tthis._segList.addPt(mid0);\n\t\t\t\t\tvar mid1 = new Coordinate((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n\t\t\t\t\tthis._segList.addPt(mid1);\n\t\t\t\t} else {\n\t\t\t\t\tthis._segList.addPt(this._s1);\n\t\t\t\t}\n\t\t\t\tthis._segList.addPt(this._offset1.p0);\n\t\t\t}\n\t\t}\n\t},\n\tcreateCircle: function (p) {\n\t\tvar pt = new Coordinate(p.x + this._distance, p.y);\n\t\tthis._segList.addPt(pt);\n\t\tthis.addDirectedFillet(p, 0.0, 2.0 * Math.PI, -1, this._distance);\n\t\tthis._segList.closeRing();\n\t},\n\taddBevelJoin: function (offset0, offset1) {\n\t\tthis._segList.addPt(offset0.p1);\n\t\tthis._segList.addPt(offset1.p0);\n\t},\n\tinit: function (distance) {\n\t\tthis._distance = distance;\n\t\tthis._maxCurveSegmentError = distance * (1 - Math.cos(this._filletAngleQuantum / 2.0));\n\t\tthis._segList = new OffsetSegmentString();\n\t\tthis._segList.setPrecisionModel(this._precisionModel);\n\t\tthis._segList.setMinimumVertexDistance(distance * OffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR);\n\t},\n\taddCollinear: function (addStartPoint) {\n\t\tthis._li.computeIntersection(this._s0, this._s1, this._s1, this._s2);\n\t\tvar numInt = this._li.getIntersectionNum();\n\t\tif (numInt >= 2) {\n\t\t\tif (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL || this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n\t\t\t\tif (addStartPoint) this._segList.addPt(this._offset0.p1);\n\t\t\t\tthis._segList.addPt(this._offset1.p0);\n\t\t\t} else {\n\t\t\t\tthis.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, Orientation.CLOCKWISE, this._distance);\n\t\t\t}\n\t\t}\n\t},\n\tcloseRing: function () {\n\t\tthis._segList.closeRing();\n\t},\n\thasNarrowConcaveAngle: function () {\n\t\treturn this._hasNarrowConcaveAngle;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn OffsetSegmentGenerator;\n\t}\n});\nOffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3;\nOffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3;\nOffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6;\nOffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR = 80;\n","import BufferParameters from './BufferParameters';\nimport Position from '../../geomgraph/Position';\nimport Coordinate from '../../geom/Coordinate';\nimport extend from '../../../../../extend';\nimport BufferInputLineSimplifier from './BufferInputLineSimplifier';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport OffsetSegmentGenerator from './OffsetSegmentGenerator';\nexport default function OffsetCurveBuilder() {\n\tthis._distance = 0.0;\n\tthis._precisionModel = null;\n\tthis._bufParams = null;\n\tlet precisionModel = arguments[0], bufParams = arguments[1];\n\tthis._precisionModel = precisionModel;\n\tthis._bufParams = bufParams;\n}\nextend(OffsetCurveBuilder.prototype, {\n\tgetOffsetCurve: function (inputPts, distance) {\n\t\tthis._distance = distance;\n\t\tif (distance === 0.0) return null;\n\t\tvar isRightSide = distance < 0.0;\n\t\tvar posDistance = Math.abs(distance);\n\t\tvar segGen = this.getSegGen(posDistance);\n\t\tif (inputPts.length <= 1) {\n\t\t\tthis.computePointCurve(inputPts[0], segGen);\n\t\t} else {\n\t\t\tthis.computeOffsetCurve(inputPts, isRightSide, segGen);\n\t\t}\n\t\tvar curvePts = segGen.getCoordinates();\n\t\tif (isRightSide) CoordinateArrays.reverse(curvePts);\n\t\treturn curvePts;\n\t},\n\tcomputeSingleSidedBufferCurve: function (inputPts, isRightSide, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tif (isRightSide) {\n\t\t\tsegGen.addSegments(inputPts, true);\n\t\t\tvar simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n\t\t\tvar n2 = simp2.length - 1;\n\t\t\tsegGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = n2 - 2; i >= 0; i--) {\n\t\t\t\tsegGen.addNextSegment(simp2[i], true);\n\t\t\t}\n\t\t} else {\n\t\t\tsegGen.addSegments(inputPts, false);\n\t\t\tvar simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\t\tvar n1 = simp1.length - 1;\n\t\t\tsegGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = 2; i <= n1; i++) {\n\t\t\t\tsegGen.addNextSegment(simp1[i], true);\n\t\t\t}\n\t\t}\n\t\tsegGen.addLastSegment();\n\t\tsegGen.closeRing();\n\t},\n\tcomputeRingBufferCurve: function (inputPts, side, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tif (side === Position.RIGHT) distTol = -distTol;\n\t\tvar simp = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\tvar n = simp.length - 1;\n\t\tsegGen.initSideSegments(simp[n - 1], simp[0], side);\n\t\tfor (var i = 1; i <= n; i++) {\n\t\t\tvar addStartPoint = i !== 1;\n\t\t\tsegGen.addNextSegment(simp[i], addStartPoint);\n\t\t}\n\t\tsegGen.closeRing();\n\t},\n\tcomputeLineBufferCurve: function (inputPts, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tvar simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\tvar n1 = simp1.length - 1;\n\t\tsegGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n\t\tfor (var i = 2; i <= n1; i++) {\n\t\t\tsegGen.addNextSegment(simp1[i], true);\n\t\t}\n\t\tsegGen.addLastSegment();\n\t\tsegGen.addLineEndCap(simp1[n1 - 1], simp1[n1]);\n\t\tvar simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n\t\tvar n2 = simp2.length - 1;\n\t\tsegGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n\t\tfor (var i = n2 - 2; i >= 0; i--) {\n\t\t\tsegGen.addNextSegment(simp2[i], true);\n\t\t}\n\t\tsegGen.addLastSegment();\n\t\tsegGen.addLineEndCap(simp2[1], simp2[0]);\n\t\tsegGen.closeRing();\n\t},\n\tcomputePointCurve: function (pt, segGen) {\n\t\tswitch (this._bufParams.getEndCapStyle()) {\n\t\t\tcase BufferParameters.CAP_ROUND:\n\t\t\t\tsegGen.createCircle(pt);\n\t\t\t\tbreak;\n\t\t\tcase BufferParameters.CAP_SQUARE:\n\t\t\t\tsegGen.createSquare(pt);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tgetLineCurve: function (inputPts, distance) {\n\t\tthis._distance = distance;\n\t\tif (distance < 0.0 && !this._bufParams.isSingleSided()) return null;\n\t\tif (distance === 0.0) return null;\n\t\tvar posDistance = Math.abs(distance);\n\t\tvar segGen = this.getSegGen(posDistance);\n\t\tif (inputPts.length <= 1) {\n\t\t\tthis.computePointCurve(inputPts[0], segGen);\n\t\t} else {\n\t\t\tif (this._bufParams.isSingleSided()) {\n\t\t\t\tvar isRightSide = distance < 0.0;\n\t\t\t\tthis.computeSingleSidedBufferCurve(inputPts, isRightSide, segGen);\n\t\t\t} else this.computeLineBufferCurve(inputPts, segGen);\n\t\t}\n\t\tvar lineCoord = segGen.getCoordinates();\n\t\treturn lineCoord;\n\t},\n\tgetBufferParameters: function () {\n\t\treturn this._bufParams;\n\t},\n\tsimplifyTolerance: function (bufDistance) {\n\t\treturn bufDistance * this._bufParams.getSimplifyFactor();\n\t},\n\tgetRingCurve: function (inputPts, side, distance) {\n\t\tthis._distance = distance;\n\t\tif (inputPts.length <= 2) return this.getLineCurve(inputPts, distance);\n\t\tif (distance === 0.0) {\n\t\t\treturn OffsetCurveBuilder.copyCoordinates(inputPts);\n\t\t}\n\t\tvar segGen = this.getSegGen(distance);\n\t\tthis.computeRingBufferCurve(inputPts, side, segGen);\n\t\treturn segGen.getCoordinates();\n\t},\n\tcomputeOffsetCurve: function (inputPts, isRightSide, segGen) {\n\t\tvar distTol = this.simplifyTolerance(this._distance);\n\t\tif (isRightSide) {\n\t\t\tvar simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n\t\t\tvar n2 = simp2.length - 1;\n\t\t\tsegGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = n2 - 2; i >= 0; i--) {\n\t\t\t\tsegGen.addNextSegment(simp2[i], true);\n\t\t\t}\n\t\t} else {\n\t\t\tvar simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n\t\t\tvar n1 = simp1.length - 1;\n\t\t\tsegGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n\t\t\tsegGen.addFirstSegment();\n\t\t\tfor (var i = 2; i <= n1; i++) {\n\t\t\t\tsegGen.addNextSegment(simp1[i], true);\n\t\t\t}\n\t\t}\n\t\tsegGen.addLastSegment();\n\t},\n\tgetSegGen: function (distance) {\n\t\treturn new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn OffsetCurveBuilder;\n\t}\n});\nOffsetCurveBuilder.copyCoordinates = function (pts) {\n\tvar copy = new Array(pts.length).fill(null);\n\tfor (var i = 0; i < copy.length; i++) {\n\t\tcopy[i] = new Coordinate(pts[i]);\n\t}\n\treturn copy;\n};\n","import hasInterface from '../../../../../hasInterface';\nimport Position from '../../geomgraph/Position';\nimport Coordinate from '../../geom/Coordinate';\nimport extend from '../../../../../extend';\nimport Orientation from '../../algorithm/Orientation';\nimport Collections from '../../../../../java/util/Collections';\nimport DirectedEdge from '../../geomgraph/DirectedEdge';\nimport LineSegment from '../../geom/LineSegment';\nimport Comparable from '../../../../../java/lang/Comparable';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport List from '../../../../../java/util/List';\nexport default function SubgraphDepthLocater() {\n\tthis._subgraphs = null;\n\tthis._seg = new LineSegment();\n\tlet subgraphs = arguments[0];\n\tthis._subgraphs = subgraphs;\n}\nextend(SubgraphDepthLocater.prototype, {\n\tfindStabbedSegments: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet stabbingRayLeftPt = arguments[0];\n\t\t\tvar stabbedSegments = new ArrayList();\n\t\t\tfor (var i = this._subgraphs.iterator(); i.hasNext(); ) {\n\t\t\t\tvar bsg = i.next();\n\t\t\t\tvar env = bsg.getEnvelope();\n\t\t\t\tif (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY()) continue;\n\t\t\t\tthis.findStabbedSegments(stabbingRayLeftPt, bsg.getDirectedEdges(), stabbedSegments);\n\t\t\t}\n\t\t\treturn stabbedSegments;\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && arguments[1] instanceof DirectedEdge)) {\n\t\t\t\tlet stabbingRayLeftPt = arguments[0], dirEdge = arguments[1], stabbedSegments = arguments[2];\n\t\t\t\tvar pts = dirEdge.getEdge().getCoordinates();\n\t\t\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\t\t\tthis._seg.p0 = pts[i];\n\t\t\t\t\tthis._seg.p1 = pts[i + 1];\n\t\t\t\t\tif (this._seg.p0.y > this._seg.p1.y) this._seg.reverse();\n\t\t\t\t\tvar maxx = Math.max(this._seg.p0.x, this._seg.p1.x);\n\t\t\t\t\tif (maxx < stabbingRayLeftPt.x) continue;\n\t\t\t\t\tif (this._seg.isHorizontal()) continue;\n\t\t\t\t\tif (stabbingRayLeftPt.y < this._seg.p0.y || stabbingRayLeftPt.y > this._seg.p1.y) continue;\n\t\t\t\t\tif (Orientation.index(this._seg.p0, this._seg.p1, stabbingRayLeftPt) === Orientation.RIGHT) continue;\n\t\t\t\t\tvar depth = dirEdge.getDepth(Position.LEFT);\n\t\t\t\t\tif (!this._seg.p0.equals(pts[i])) depth = dirEdge.getDepth(Position.RIGHT);\n\t\t\t\t\tvar ds = new DepthSegment(this._seg, depth);\n\t\t\t\t\tstabbedSegments.add(ds);\n\t\t\t\t}\n\t\t\t} else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && hasInterface(arguments[1], List))) {\n\t\t\t\tlet stabbingRayLeftPt = arguments[0], dirEdges = arguments[1], stabbedSegments = arguments[2];\n\t\t\t\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\t\t\t\tvar de = i.next();\n\t\t\t\t\tif (!de.isForward()) continue;\n\t\t\t\t\tthis.findStabbedSegments(stabbingRayLeftPt, de, stabbedSegments);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetDepth: function (p) {\n\t\tvar stabbedSegments = this.findStabbedSegments(p);\n\t\tif (stabbedSegments.size() === 0) return 0;\n\t\tvar ds = Collections.min(stabbedSegments);\n\t\treturn ds._leftDepth;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SubgraphDepthLocater;\n\t}\n});\nfunction DepthSegment() {\n\tthis._upwardSeg = null;\n\tthis._leftDepth = null;\n\tlet seg = arguments[0], depth = arguments[1];\n\tthis._upwardSeg = new LineSegment(seg);\n\tthis._leftDepth = depth;\n}\nextend(DepthSegment.prototype, {\n\tcompareTo: function (obj) {\n\t\tvar other = obj;\n\t\tif (this._upwardSeg.minX() >= other._upwardSeg.maxX()) return 1;\n\t\tif (this._upwardSeg.maxX() <= other._upwardSeg.minX()) return -1;\n\t\tvar orientIndex = this._upwardSeg.orientationIndex(other._upwardSeg);\n\t\tif (orientIndex !== 0) return orientIndex;\n\t\torientIndex = -1 * other._upwardSeg.orientationIndex(this._upwardSeg);\n\t\tif (orientIndex !== 0) return orientIndex;\n\t\treturn this._upwardSeg.compareTo(other._upwardSeg);\n\t},\n\tcompareX: function (seg0, seg1) {\n\t\tvar compare0 = seg0.p0.compareTo(seg1.p0);\n\t\tif (compare0 !== 0) return compare0;\n\t\treturn seg0.p1.compareTo(seg1.p1);\n\t},\n\ttoString: function () {\n\t\treturn this._upwardSeg.toString();\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn DepthSegment;\n\t}\n});\nSubgraphDepthLocater.DepthSegment = DepthSegment;\n","import Location from '../../geom/Location';\nimport LineString from '../../geom/LineString';\nimport Position from '../../geomgraph/Position';\nimport Point from '../../geom/Point';\nimport NodedSegmentString from '../../noding/NodedSegmentString';\nimport Polygon from '../../geom/Polygon';\nimport MultiPoint from '../../geom/MultiPoint';\nimport LinearRing from '../../geom/LinearRing';\nimport extend from '../../../../../extend';\nimport Orientation from '../../algorithm/Orientation';\nimport MultiPolygon from '../../geom/MultiPolygon';\nimport Label from '../../geomgraph/Label';\nimport GeometryCollection from '../../geom/GeometryCollection';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Distance from '../../algorithm/Distance';\nimport MultiLineString from '../../geom/MultiLineString';\nimport Triangle from '../../geom/Triangle';\nexport default function OffsetCurveSetBuilder() {\n\tthis._inputGeom = null;\n\tthis._distance = null;\n\tthis._curveBuilder = null;\n\tthis._curveList = new ArrayList();\n\tlet inputGeom = arguments[0], distance = arguments[1], curveBuilder = arguments[2];\n\tthis._inputGeom = inputGeom;\n\tthis._distance = distance;\n\tthis._curveBuilder = curveBuilder;\n}\nextend(OffsetCurveSetBuilder.prototype, {\n\taddPoint: function (p) {\n\t\tif (this._distance <= 0.0) return null;\n\t\tvar coord = p.getCoordinates();\n\t\tvar curve = this._curveBuilder.getLineCurve(coord, this._distance);\n\t\tthis.addCurve(curve, Location.EXTERIOR, Location.INTERIOR);\n\t},\n\taddPolygon: function (p) {\n\t\tvar offsetDistance = this._distance;\n\t\tvar offsetSide = Position.LEFT;\n\t\tif (this._distance < 0.0) {\n\t\t\toffsetDistance = -this._distance;\n\t\t\toffsetSide = Position.RIGHT;\n\t\t}\n\t\tvar shell = p.getExteriorRing();\n\t\tvar shellCoord = CoordinateArrays.removeRepeatedPoints(shell.getCoordinates());\n\t\tif (this._distance < 0.0 && this.isErodedCompletely(shell, this._distance)) return null;\n\t\tif (this._distance <= 0.0 && shellCoord.length < 3) return null;\n\t\tthis.addPolygonRing(shellCoord, offsetDistance, offsetSide, Location.EXTERIOR, Location.INTERIOR);\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar hole = p.getInteriorRingN(i);\n\t\t\tvar holeCoord = CoordinateArrays.removeRepeatedPoints(hole.getCoordinates());\n\t\t\tif (this._distance > 0.0 && this.isErodedCompletely(hole, -this._distance)) continue;\n\t\t\tthis.addPolygonRing(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR);\n\t\t}\n\t},\n\tisTriangleErodedCompletely: function (triangleCoord, bufferDistance) {\n\t\tvar tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2]);\n\t\tvar inCentre = tri.inCentre();\n\t\tvar distToCentre = Distance.pointToSegment(inCentre, tri.p0, tri.p1);\n\t\treturn distToCentre < Math.abs(bufferDistance);\n\t},\n\taddLineString: function (line) {\n\t\tif (this._distance <= 0.0 && !this._curveBuilder.getBufferParameters().isSingleSided()) return null;\n\t\tvar coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());\n\t\tvar curve = this._curveBuilder.getLineCurve(coord, this._distance);\n\t\tthis.addCurve(curve, Location.EXTERIOR, Location.INTERIOR);\n\t},\n\taddCurve: function (coord, leftLoc, rightLoc) {\n\t\tif (coord === null || coord.length < 2) return null;\n\t\tvar e = new NodedSegmentString(coord, new Label(0, Location.BOUNDARY, leftLoc, rightLoc));\n\t\tthis._curveList.add(e);\n\t},\n\tgetCurves: function () {\n\t\tthis.add(this._inputGeom);\n\t\treturn this._curveList;\n\t},\n\taddPolygonRing: function (coord, offsetDistance, side, cwLeftLoc, cwRightLoc) {\n\t\tif (offsetDistance === 0.0 && coord.length < LinearRing.MINIMUM_VALID_SIZE) return null;\n\t\tvar leftLoc = cwLeftLoc;\n\t\tvar rightLoc = cwRightLoc;\n\t\tif (coord.length >= LinearRing.MINIMUM_VALID_SIZE && Orientation.isCCW(coord)) {\n\t\t\tleftLoc = cwRightLoc;\n\t\t\trightLoc = cwLeftLoc;\n\t\t\tside = Position.opposite(side);\n\t\t}\n\t\tvar curve = this._curveBuilder.getRingCurve(coord, side, offsetDistance);\n\t\tthis.addCurve(curve, leftLoc, rightLoc);\n\t},\n\tadd: function (g) {\n\t\tif (g.isEmpty()) return null;\n\t\tif (g instanceof Polygon) this.addPolygon(g); else if (g instanceof LineString) this.addLineString(g); else if (g instanceof Point) this.addPoint(g); else if (g instanceof MultiPoint) this.addCollection(g); else if (g instanceof MultiLineString) this.addCollection(g); else if (g instanceof MultiPolygon) this.addCollection(g); else if (g instanceof GeometryCollection) this.addCollection(g); else throw new UnsupportedOperationException(g.getClass().getName());\n\t},\n\tisErodedCompletely: function (ring, bufferDistance) {\n\t\tvar ringCoord = ring.getCoordinates();\n\t\tvar minDiam = 0.0;\n\t\tif (ringCoord.length < 4) return bufferDistance < 0;\n\t\tif (ringCoord.length === 4) return this.isTriangleErodedCompletely(ringCoord, bufferDistance);\n\t\tvar env = ring.getEnvelopeInternal();\n\t\tvar envMinDimension = Math.min(env.getHeight(), env.getWidth());\n\t\tif (bufferDistance < 0.0 && 2 * Math.abs(bufferDistance) > envMinDimension) return true;\n\t\treturn false;\n\t},\n\taddCollection: function (gc) {\n\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\tvar g = gc.getGeometryN(i);\n\t\t\tthis.add(g);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn OffsetCurveSetBuilder;\n\t}\n});\n","import StringBuffer from '../../../../java/lang/StringBuffer';\nimport Location from '../geom/Location';\nimport Position from './Position';\nimport TopologyException from '../geom/TopologyException';\nimport extend from '../../../../extend';\nimport System from '../../../../java/lang/System';\nimport SimplePointInAreaLocator from '../algorithm/locate/SimplePointInAreaLocator';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Assert from '../util/Assert';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default function EdgeEndStar() {\n\tthis._edgeMap = new TreeMap();\n\tthis._edgeList = null;\n\tthis._ptInAreaLocation = [Location.NONE, Location.NONE];\n}\nextend(EdgeEndStar.prototype, {\n\tgetNextCW: function (ee) {\n\t\tthis.getEdges();\n\t\tvar i = this._edgeList.indexOf(ee);\n\t\tvar iNextCW = i - 1;\n\t\tif (i === 0) iNextCW = this._edgeList.size() - 1;\n\t\treturn this._edgeList.get(iNextCW);\n\t},\n\tpropagateSideLabels: function (geomIndex) {\n\t\tvar startLoc = Location.NONE;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tif (label.isArea(geomIndex) && label.getLocation(geomIndex, Position.LEFT) !== Location.NONE) startLoc = label.getLocation(geomIndex, Position.LEFT);\n\t\t}\n\t\tif (startLoc === Location.NONE) return null;\n\t\tvar currLoc = startLoc;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tif (label.getLocation(geomIndex, Position.ON) === Location.NONE) label.setLocation(geomIndex, Position.ON, currLoc);\n\t\t\tif (label.isArea(geomIndex)) {\n\t\t\t\tvar leftLoc = label.getLocation(geomIndex, Position.LEFT);\n\t\t\t\tvar rightLoc = label.getLocation(geomIndex, Position.RIGHT);\n\t\t\t\tif (rightLoc !== Location.NONE) {\n\t\t\t\t\tif (rightLoc !== currLoc) throw new TopologyException(\"side location conflict\", e.getCoordinate());\n\t\t\t\t\tif (leftLoc === Location.NONE) {\n\t\t\t\t\t\tAssert.shouldNeverReachHere(\"found single null side (at \" + e.getCoordinate() + \")\");\n\t\t\t\t\t}\n\t\t\t\t\tcurrLoc = leftLoc;\n\t\t\t\t} else {\n\t\t\t\t\tAssert.isTrue(label.getLocation(geomIndex, Position.LEFT) === Location.NONE, \"found single null side\");\n\t\t\t\t\tlabel.setLocation(geomIndex, Position.RIGHT, currLoc);\n\t\t\t\t\tlabel.setLocation(geomIndex, Position.LEFT, currLoc);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetCoordinate: function () {\n\t\tvar it = this.iterator();\n\t\tif (!it.hasNext()) return null;\n\t\tvar e = it.next();\n\t\treturn e.getCoordinate();\n\t},\n\tprint: function (out) {\n\t\tSystem.out.println(\"EdgeEndStar: \" + this.getCoordinate());\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\te.print(out);\n\t\t}\n\t},\n\tisAreaLabelsConsistent: function (geomGraph) {\n\t\tthis.computeEdgeEndLabels(geomGraph.getBoundaryNodeRule());\n\t\treturn this.checkAreaLabelsConsistent(0);\n\t},\n\tcheckAreaLabelsConsistent: function (geomIndex) {\n\t\tvar edges = this.getEdges();\n\t\tif (edges.size() <= 0) return true;\n\t\tvar lastEdgeIndex = edges.size() - 1;\n\t\tvar startLabel = edges.get(lastEdgeIndex).getLabel();\n\t\tvar startLoc = startLabel.getLocation(geomIndex, Position.LEFT);\n\t\tAssert.isTrue(startLoc !== Location.NONE, \"Found unlabelled area edge\");\n\t\tvar currLoc = startLoc;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tAssert.isTrue(label.isArea(geomIndex), \"Found non-area edge\");\n\t\t\tvar leftLoc = label.getLocation(geomIndex, Position.LEFT);\n\t\t\tvar rightLoc = label.getLocation(geomIndex, Position.RIGHT);\n\t\t\tif (leftLoc === rightLoc) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (rightLoc !== currLoc) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcurrLoc = leftLoc;\n\t\t}\n\t\treturn true;\n\t},\n\tfindIndex: function (eSearch) {\n\t\tthis.iterator();\n\t\tfor (var i = 0; i < this._edgeList.size(); i++) {\n\t\t\tvar e = this._edgeList.get(i);\n\t\t\tif (e === eSearch) return i;\n\t\t}\n\t\treturn -1;\n\t},\n\titerator: function () {\n\t\treturn this.getEdges().iterator();\n\t},\n\tgetEdges: function () {\n\t\tif (this._edgeList === null) {\n\t\t\tthis._edgeList = new ArrayList(this._edgeMap.values());\n\t\t}\n\t\treturn this._edgeList;\n\t},\n\tgetLocation: function (geomIndex, p, geom) {\n\t\tif (this._ptInAreaLocation[geomIndex] === Location.NONE) {\n\t\t\tthis._ptInAreaLocation[geomIndex] = SimplePointInAreaLocator.locate(p, geom[geomIndex].getGeometry());\n\t\t}\n\t\treturn this._ptInAreaLocation[geomIndex];\n\t},\n\ttoString: function () {\n\t\tvar buf = new StringBuffer();\n\t\tbuf.append(\"EdgeEndStar: \" + this.getCoordinate());\n\t\tbuf.append(\"\\n\");\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tbuf.append(e);\n\t\t\tbuf.append(\"\\n\");\n\t\t}\n\t\treturn buf.toString();\n\t},\n\tcomputeEdgeEndLabels: function (boundaryNodeRule) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ee = it.next();\n\t\t\tee.computeLabel(boundaryNodeRule);\n\t\t}\n\t},\n\tcomputeLabelling: function (geomGraph) {\n\t\tthis.computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule());\n\t\tthis.propagateSideLabels(0);\n\t\tthis.propagateSideLabels(1);\n\t\tvar hasDimensionalCollapseEdge = [false, false];\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tfor (var geomi = 0; geomi < 2; geomi++) {\n\t\t\t\tif (label.isLine(geomi) && label.getLocation(geomi) === Location.BOUNDARY) hasDimensionalCollapseEdge[geomi] = true;\n\t\t\t}\n\t\t}\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tfor (var geomi = 0; geomi < 2; geomi++) {\n\t\t\t\tif (label.isAnyNull(geomi)) {\n\t\t\t\t\tvar loc = Location.NONE;\n\t\t\t\t\tif (hasDimensionalCollapseEdge[geomi]) {\n\t\t\t\t\t\tloc = Location.EXTERIOR;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p = e.getCoordinate();\n\t\t\t\t\t\tloc = this.getLocation(geomi, p, geomGraph);\n\t\t\t\t\t}\n\t\t\t\t\tlabel.setAllLocationsIfNull(geomi, loc);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetDegree: function () {\n\t\treturn this._edgeMap.size();\n\t},\n\tinsertEdgeEnd: function (e, obj) {\n\t\tthis._edgeMap.put(e, obj);\n\t\tthis._edgeList = null;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeEndStar;\n\t}\n});\n","import Location from '../geom/Location';\nimport Position from './Position';\nimport TopologyException from '../geom/TopologyException';\nimport extend from '../../../../extend';\nimport EdgeEndStar from './EdgeEndStar';\nimport System from '../../../../java/lang/System';\nimport Label from './Label';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Quadrant from './Quadrant';\nimport Assert from '../util/Assert';\nimport inherits from '../../../../inherits';\nexport default function DirectedEdgeStar() {\n\tEdgeEndStar.apply(this);\n\tthis._resultAreaEdgeList = null;\n\tthis._label = null;\n\tthis._SCANNING_FOR_INCOMING = 1;\n\tthis._LINKING_TO_OUTGOING = 2;\n}\ninherits(DirectedEdgeStar, EdgeEndStar);\nextend(DirectedEdgeStar.prototype, {\n\tlinkResultDirectedEdges: function () {\n\t\tthis.getResultAreaEdges();\n\t\tvar firstOut = null;\n\t\tvar incoming = null;\n\t\tvar state = this._SCANNING_FOR_INCOMING;\n\t\tfor (var i = 0; i < this._resultAreaEdgeList.size(); i++) {\n\t\t\tvar nextOut = this._resultAreaEdgeList.get(i);\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (!nextOut.getLabel().isArea()) continue;\n\t\t\tif (firstOut === null && nextOut.isInResult()) firstOut = nextOut;\n\t\t\tswitch (state) {\n\t\t\t\tcase this._SCANNING_FOR_INCOMING:\n\t\t\t\t\tif (!nextIn.isInResult()) continue;\n\t\t\t\t\tincoming = nextIn;\n\t\t\t\t\tstate = this._LINKING_TO_OUTGOING;\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._LINKING_TO_OUTGOING:\n\t\t\t\t\tif (!nextOut.isInResult()) continue;\n\t\t\t\t\tincoming.setNext(nextOut);\n\t\t\t\t\tstate = this._SCANNING_FOR_INCOMING;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (state === this._LINKING_TO_OUTGOING) {\n\t\t\tif (firstOut === null) throw new TopologyException(\"no outgoing dirEdge found\", this.getCoordinate());\n\t\t\tAssert.isTrue(firstOut.isInResult(), \"unable to link last incoming dirEdge\");\n\t\t\tincoming.setNext(firstOut);\n\t\t}\n\t},\n\tinsert: function (ee) {\n\t\tvar de = ee;\n\t\tthis.insertEdgeEnd(de, de);\n\t},\n\tgetRightmostEdge: function () {\n\t\tvar edges = this.getEdges();\n\t\tvar size = edges.size();\n\t\tif (size < 1) return null;\n\t\tvar de0 = edges.get(0);\n\t\tif (size === 1) return de0;\n\t\tvar deLast = edges.get(size - 1);\n\t\tvar quad0 = de0.getQuadrant();\n\t\tvar quad1 = deLast.getQuadrant();\n\t\tif (Quadrant.isNorthern(quad0) && Quadrant.isNorthern(quad1)) return de0; else if (!Quadrant.isNorthern(quad0) && !Quadrant.isNorthern(quad1)) return deLast; else {\n\t\t\tvar nonHorizontalEdge = null;\n\t\t\tif (de0.getDy() !== 0) return de0; else if (deLast.getDy() !== 0) return deLast;\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"found two horizontal edges incident on node\");\n\t\treturn null;\n\t},\n\tprint: function (out) {\n\t\tSystem.out.println(\"DirectedEdgeStar: \" + this.getCoordinate());\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tout.print(\"out \");\n\t\t\tde.print(out);\n\t\t\tout.println();\n\t\t\tout.print(\"in \");\n\t\t\tde.getSym().print(out);\n\t\t\tout.println();\n\t\t}\n\t},\n\tgetResultAreaEdges: function () {\n\t\tif (this._resultAreaEdgeList !== null) return this._resultAreaEdgeList;\n\t\tthis._resultAreaEdgeList = new ArrayList();\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.isInResult() || de.getSym().isInResult()) this._resultAreaEdgeList.add(de);\n\t\t}\n\t\treturn this._resultAreaEdgeList;\n\t},\n\tupdateLabelling: function (nodeLabel) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tlabel.setAllLocationsIfNull(0, nodeLabel.getLocation(0));\n\t\t\tlabel.setAllLocationsIfNull(1, nodeLabel.getLocation(1));\n\t\t}\n\t},\n\tlinkAllDirectedEdges: function () {\n\t\tthis.getEdges();\n\t\tvar prevOut = null;\n\t\tvar firstIn = null;\n\t\tfor (var i = this._edgeList.size() - 1; i >= 0; i--) {\n\t\t\tvar nextOut = this._edgeList.get(i);\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (firstIn === null) firstIn = nextIn;\n\t\t\tif (prevOut !== null) nextIn.setNext(prevOut);\n\t\t\tprevOut = nextOut;\n\t\t}\n\t\tfirstIn.setNext(prevOut);\n\t},\n\tcomputeDepths: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet de = arguments[0];\n\t\t\tvar edgeIndex = this.findIndex(de);\n\t\t\tvar label = de.getLabel();\n\t\t\tvar startDepth = de.getDepth(Position.LEFT);\n\t\t\tvar targetLastDepth = de.getDepth(Position.RIGHT);\n\t\t\tvar nextDepth = this.computeDepths(edgeIndex + 1, this._edgeList.size(), startDepth);\n\t\t\tvar lastDepth = this.computeDepths(0, edgeIndex, nextDepth);\n\t\t\tif (lastDepth !== targetLastDepth) throw new TopologyException(\"depth mismatch at \" + de.getCoordinate());\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet startIndex = arguments[0], endIndex = arguments[1], startDepth = arguments[2];\n\t\t\tvar currDepth = startDepth;\n\t\t\tfor (var i = startIndex; i < endIndex; i++) {\n\t\t\t\tvar nextDe = this._edgeList.get(i);\n\t\t\t\tvar label = nextDe.getLabel();\n\t\t\t\tnextDe.setEdgeDepths(Position.RIGHT, currDepth);\n\t\t\t\tcurrDepth = nextDe.getDepth(Position.LEFT);\n\t\t\t}\n\t\t\treturn currDepth;\n\t\t}\n\t},\n\tmergeSymLabels: function () {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tlabel.merge(de.getSym().getLabel());\n\t\t}\n\t},\n\tlinkMinimalDirectedEdges: function (er) {\n\t\tvar firstOut = null;\n\t\tvar incoming = null;\n\t\tvar state = this._SCANNING_FOR_INCOMING;\n\t\tfor (var i = this._resultAreaEdgeList.size() - 1; i >= 0; i--) {\n\t\t\tvar nextOut = this._resultAreaEdgeList.get(i);\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (firstOut === null && nextOut.getEdgeRing() === er) firstOut = nextOut;\n\t\t\tswitch (state) {\n\t\t\t\tcase this._SCANNING_FOR_INCOMING:\n\t\t\t\t\tif (nextIn.getEdgeRing() !== er) continue;\n\t\t\t\t\tincoming = nextIn;\n\t\t\t\t\tstate = this._LINKING_TO_OUTGOING;\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._LINKING_TO_OUTGOING:\n\t\t\t\t\tif (nextOut.getEdgeRing() !== er) continue;\n\t\t\t\t\tincoming.setNextMin(nextOut);\n\t\t\t\t\tstate = this._SCANNING_FOR_INCOMING;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (state === this._LINKING_TO_OUTGOING) {\n\t\t\tAssert.isTrue(firstOut !== null, \"found null for first outgoing dirEdge\");\n\t\t\tAssert.isTrue(firstOut.getEdgeRing() === er, \"unable to link last incoming dirEdge\");\n\t\t\tincoming.setNextMin(firstOut);\n\t\t}\n\t},\n\tgetOutgoingDegree: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tvar degree = 0;\n\t\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\t\tvar de = it.next();\n\t\t\t\tif (de.isInResult()) degree++;\n\t\t\t}\n\t\t\treturn degree;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet er = arguments[0];\n\t\t\tvar degree = 0;\n\t\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\t\tvar de = it.next();\n\t\t\t\tif (de.getEdgeRing() === er) degree++;\n\t\t\t}\n\t\t\treturn degree;\n\t\t}\n\t},\n\tgetLabel: function () {\n\t\treturn this._label;\n\t},\n\tfindCoveredLineEdges: function () {\n\t\tvar startLoc = Location.NONE;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar nextOut = it.next();\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (!nextOut.isLineEdge()) {\n\t\t\t\tif (nextOut.isInResult()) {\n\t\t\t\t\tstartLoc = Location.INTERIOR;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (nextIn.isInResult()) {\n\t\t\t\t\tstartLoc = Location.EXTERIOR;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (startLoc === Location.NONE) return null;\n\t\tvar currLoc = startLoc;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar nextOut = it.next();\n\t\t\tvar nextIn = nextOut.getSym();\n\t\t\tif (nextOut.isLineEdge()) {\n\t\t\t\tnextOut.getEdge().setCovered(currLoc === Location.INTERIOR);\n\t\t\t} else {\n\t\t\t\tif (nextOut.isInResult()) currLoc = Location.EXTERIOR;\n\t\t\t\tif (nextIn.isInResult()) currLoc = Location.INTERIOR;\n\t\t\t}\n\t\t}\n\t},\n\tcomputeLabelling: function (geom) {\n\t\tEdgeEndStar.prototype.computeLabelling.call(this, geom);\n\t\tthis._label = new Label(Location.NONE);\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ee = it.next();\n\t\t\tvar e = ee.getEdge();\n\t\t\tvar eLabel = e.getLabel();\n\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\tvar eLoc = eLabel.getLocation(i);\n\t\t\t\tif (eLoc === Location.INTERIOR || eLoc === Location.BOUNDARY) this._label.setLocation(i, Location.INTERIOR);\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DirectedEdgeStar;\n\t}\n});\n","import DirectedEdgeStar from '../../geomgraph/DirectedEdgeStar';\nimport Node from '../../geomgraph/Node';\nimport extend from '../../../../../extend';\nimport inherits from '../../../../../inherits';\nimport NodeFactory from '../../geomgraph/NodeFactory';\nexport default function OverlayNodeFactory() {\n\tNodeFactory.apply(this);\n}\ninherits(OverlayNodeFactory, NodeFactory);\nextend(OverlayNodeFactory.prototype, {\n\tcreateNode: function (coord) {\n\t\treturn new Node(coord, new DirectedEdgeStar());\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn OverlayNodeFactory;\n\t}\n});\n","import extend from '../../../../extend';\nimport Comparable from '../../../../java/lang/Comparable';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nexport default function OrientedCoordinateArray() {\n\tthis._pts = null;\n\tthis._orientation = null;\n\tlet pts = arguments[0];\n\tthis._pts = pts;\n\tthis._orientation = OrientedCoordinateArray.orientation(pts);\n}\nextend(OrientedCoordinateArray.prototype, {\n\tcompareTo: function (o1) {\n\t\tvar oca = o1;\n\t\tvar comp = OrientedCoordinateArray.compareOriented(this._pts, this._orientation, oca._pts, oca._orientation);\n\t\treturn comp;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn OrientedCoordinateArray;\n\t}\n});\nOrientedCoordinateArray.orientation = function (pts) {\n\treturn CoordinateArrays.increasingDirection(pts) === 1;\n};\nOrientedCoordinateArray.compareOriented = function (pts1, orientation1, pts2, orientation2) {\n\tvar dir1 = orientation1 ? 1 : -1;\n\tvar dir2 = orientation2 ? 1 : -1;\n\tvar limit1 = orientation1 ? pts1.length : -1;\n\tvar limit2 = orientation2 ? pts2.length : -1;\n\tvar i1 = orientation1 ? 0 : pts1.length - 1;\n\tvar i2 = orientation2 ? 0 : pts2.length - 1;\n\tvar comp = 0;\n\twhile (true) {\n\t\tvar compPt = pts1[i1].compareTo(pts2[i2]);\n\t\tif (compPt !== 0) return compPt;\n\t\ti1 += dir1;\n\t\ti2 += dir2;\n\t\tvar done1 = i1 === limit1;\n\t\tvar done2 = i2 === limit2;\n\t\tif (done1 && !done2) return -1;\n\t\tif (!done1 && done2) return 1;\n\t\tif (done1 && done2) return 0;\n\t}\n};\n","import OrientedCoordinateArray from '../noding/OrientedCoordinateArray';\nimport extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default function EdgeList() {\n\tthis._edges = new ArrayList();\n\tthis._ocaMap = new TreeMap();\n}\nextend(EdgeList.prototype, {\n\tprint: function (out) {\n\t\tout.print(\"MULTILINESTRING ( \");\n\t\tfor (var j = 0; j < this._edges.size(); j++) {\n\t\t\tvar e = this._edges.get(j);\n\t\t\tif (j > 0) out.print(\",\");\n\t\t\tout.print(\"(\");\n\t\t\tvar pts = e.getCoordinates();\n\t\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\t\tif (i > 0) out.print(\",\");\n\t\t\t\tout.print(pts[i].x + \" \" + pts[i].y);\n\t\t\t}\n\t\t\tout.println(\")\");\n\t\t}\n\t\tout.print(\") \");\n\t},\n\taddAll: function (edgeColl) {\n\t\tfor (var i = edgeColl.iterator(); i.hasNext(); ) {\n\t\t\tthis.add(i.next());\n\t\t}\n\t},\n\tfindEdgeIndex: function (e) {\n\t\tfor (var i = 0; i < this._edges.size(); i++) {\n\t\t\tif (this._edges.get(i).equals(e)) return i;\n\t\t}\n\t\treturn -1;\n\t},\n\titerator: function () {\n\t\treturn this._edges.iterator();\n\t},\n\tgetEdges: function () {\n\t\treturn this._edges;\n\t},\n\tget: function (i) {\n\t\treturn this._edges.get(i);\n\t},\n\tfindEqualEdge: function (e) {\n\t\tvar oca = new OrientedCoordinateArray(e.getCoordinates());\n\t\tvar matchEdge = this._ocaMap.get(oca);\n\t\treturn matchEdge;\n\t},\n\tadd: function (e) {\n\t\tthis._edges.add(e);\n\t\tvar oca = new OrientedCoordinateArray(e.getCoordinates());\n\t\tthis._ocaMap.put(oca, e);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeList;\n\t}\n});\n","import extend from '../../../../extend';\nexport default function SegmentIntersector() {}\nextend(SegmentIntersector.prototype, {\n\tprocessIntersections: function (e0, segIndex0, e1, segIndex1) {},\n\tisDone: function () {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SegmentIntersector;\n\t}\n});\n","import extend from '../../../../extend';\nimport SegmentIntersector from './SegmentIntersector';\nexport default function IntersectionAdder() {\n\tthis._hasIntersection = false;\n\tthis._hasProper = false;\n\tthis._hasProperInterior = false;\n\tthis._hasInterior = false;\n\tthis._properIntersectionPoint = null;\n\tthis._li = null;\n\tthis._isSelfIntersection = null;\n\tthis.numIntersections = 0;\n\tthis.numInteriorIntersections = 0;\n\tthis.numProperIntersections = 0;\n\tthis.numTests = 0;\n\tlet li = arguments[0];\n\tthis._li = li;\n}\nextend(IntersectionAdder.prototype, {\n\tisTrivialIntersection: function (e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1) {\n\t\t\tif (this._li.getIntersectionNum() === 1) {\n\t\t\t\tif (IntersectionAdder.isAdjacentSegments(segIndex0, segIndex1)) return true;\n\t\t\t\tif (e0.isClosed()) {\n\t\t\t\t\tvar maxSegIndex = e0.size() - 1;\n\t\t\t\t\tif (segIndex0 === 0 && segIndex1 === maxSegIndex || segIndex1 === 0 && segIndex0 === maxSegIndex) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetProperIntersectionPoint: function () {\n\t\treturn this._properIntersectionPoint;\n\t},\n\thasProperInteriorIntersection: function () {\n\t\treturn this._hasProperInterior;\n\t},\n\tgetLineIntersector: function () {\n\t\treturn this._li;\n\t},\n\thasProperIntersection: function () {\n\t\treturn this._hasProper;\n\t},\n\tprocessIntersections: function (e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\tthis.numTests++;\n\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tthis.numIntersections++;\n\t\t\tif (this._li.isInteriorIntersection()) {\n\t\t\t\tthis.numInteriorIntersections++;\n\t\t\t\tthis._hasInterior = true;\n\t\t\t}\n\t\t\tif (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n\t\t\t\tthis._hasIntersection = true;\n\t\t\t\te0.addIntersections(this._li, segIndex0, 0);\n\t\t\t\te1.addIntersections(this._li, segIndex1, 1);\n\t\t\t\tif (this._li.isProper()) {\n\t\t\t\t\tthis.numProperIntersections++;\n\t\t\t\t\tthis._hasProper = true;\n\t\t\t\t\tthis._hasProperInterior = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\thasIntersection: function () {\n\t\treturn this._hasIntersection;\n\t},\n\tisDone: function () {\n\t\treturn false;\n\t},\n\thasInteriorIntersection: function () {\n\t\treturn this._hasInterior;\n\t},\n\tinterfaces_: function () {\n\t\treturn [SegmentIntersector];\n\t},\n\tgetClass: function () {\n\t\treturn IntersectionAdder;\n\t}\n});\nIntersectionAdder.isAdjacentSegments = function (i1, i2) {\n\treturn Math.abs(i1 - i2) === 1;\n};\n","import Location from '../../geom/Location';\nimport BufferSubgraph from './BufferSubgraph';\nimport PolygonBuilder from '../overlay/PolygonBuilder';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Position from '../../geomgraph/Position';\nimport MCIndexNoder from '../../noding/MCIndexNoder';\nimport OffsetCurveBuilder from './OffsetCurveBuilder';\nimport extend from '../../../../../extend';\nimport Collections from '../../../../../java/util/Collections';\nimport SubgraphDepthLocater from './SubgraphDepthLocater';\nimport OffsetCurveSetBuilder from './OffsetCurveSetBuilder';\nimport Label from '../../geomgraph/Label';\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory';\nimport EdgeList from '../../geomgraph/EdgeList';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport IntersectionAdder from '../../noding/IntersectionAdder';\nimport Edge from '../../geomgraph/Edge';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default function BufferBuilder() {\n\tthis._bufParams = null;\n\tthis._workingPrecisionModel = null;\n\tthis._workingNoder = null;\n\tthis._geomFact = null;\n\tthis._graph = null;\n\tthis._edgeList = new EdgeList();\n\tlet bufParams = arguments[0];\n\tthis._bufParams = bufParams;\n}\nextend(BufferBuilder.prototype, {\n\tsetWorkingPrecisionModel: function (pm) {\n\t\tthis._workingPrecisionModel = pm;\n\t},\n\tinsertUniqueEdge: function (e) {\n\t\tvar existingEdge = this._edgeList.findEqualEdge(e);\n\t\tif (existingEdge !== null) {\n\t\t\tvar existingLabel = existingEdge.getLabel();\n\t\t\tvar labelToMerge = e.getLabel();\n\t\t\tif (!existingEdge.isPointwiseEqual(e)) {\n\t\t\t\tlabelToMerge = new Label(e.getLabel());\n\t\t\t\tlabelToMerge.flip();\n\t\t\t}\n\t\t\texistingLabel.merge(labelToMerge);\n\t\t\tvar mergeDelta = BufferBuilder.depthDelta(labelToMerge);\n\t\t\tvar existingDelta = existingEdge.getDepthDelta();\n\t\t\tvar newDelta = existingDelta + mergeDelta;\n\t\t\texistingEdge.setDepthDelta(newDelta);\n\t\t} else {\n\t\t\tthis._edgeList.add(e);\n\t\t\te.setDepthDelta(BufferBuilder.depthDelta(e.getLabel()));\n\t\t}\n\t},\n\tbuildSubgraphs: function (subgraphList, polyBuilder) {\n\t\tvar processedGraphs = new ArrayList();\n\t\tfor (var i = subgraphList.iterator(); i.hasNext(); ) {\n\t\t\tvar subgraph = i.next();\n\t\t\tvar p = subgraph.getRightmostCoordinate();\n\t\t\tvar locater = new SubgraphDepthLocater(processedGraphs);\n\t\t\tvar outsideDepth = locater.getDepth(p);\n\t\t\tsubgraph.computeDepth(outsideDepth);\n\t\t\tsubgraph.findResultEdges();\n\t\t\tprocessedGraphs.add(subgraph);\n\t\t\tpolyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes());\n\t\t}\n\t},\n\tcreateSubgraphs: function (graph) {\n\t\tvar subgraphList = new ArrayList();\n\t\tfor (var i = graph.getNodes().iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (!node.isVisited()) {\n\t\t\t\tvar subgraph = new BufferSubgraph();\n\t\t\t\tsubgraph.create(node);\n\t\t\t\tsubgraphList.add(subgraph);\n\t\t\t}\n\t\t}\n\t\tCollections.sort(subgraphList, Collections.reverseOrder());\n\t\treturn subgraphList;\n\t},\n\tcreateEmptyResultGeometry: function () {\n\t\tvar emptyGeom = this._geomFact.createPolygon();\n\t\treturn emptyGeom;\n\t},\n\tgetNoder: function (precisionModel) {\n\t\tif (this._workingNoder !== null) return this._workingNoder;\n\t\tvar noder = new MCIndexNoder();\n\t\tvar li = new RobustLineIntersector();\n\t\tli.setPrecisionModel(precisionModel);\n\t\tnoder.setSegmentIntersector(new IntersectionAdder(li));\n\t\treturn noder;\n\t},\n\tbuffer: function (g, distance) {\n\t\tvar precisionModel = this._workingPrecisionModel;\n\t\tif (precisionModel === null) precisionModel = g.getPrecisionModel();\n\t\tthis._geomFact = g.getFactory();\n\t\tvar curveBuilder = new OffsetCurveBuilder(precisionModel, this._bufParams);\n\t\tvar curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder);\n\t\tvar bufferSegStrList = curveSetBuilder.getCurves();\n\t\tif (bufferSegStrList.size() <= 0) {\n\t\t\treturn this.createEmptyResultGeometry();\n\t\t}\n\t\tthis.computeNodedEdges(bufferSegStrList, precisionModel);\n\t\tthis._graph = new PlanarGraph(new OverlayNodeFactory());\n\t\tthis._graph.addEdges(this._edgeList.getEdges());\n\t\tvar subgraphList = this.createSubgraphs(this._graph);\n\t\tvar polyBuilder = new PolygonBuilder(this._geomFact);\n\t\tthis.buildSubgraphs(subgraphList, polyBuilder);\n\t\tvar resultPolyList = polyBuilder.getPolygons();\n\t\tif (resultPolyList.size() <= 0) {\n\t\t\treturn this.createEmptyResultGeometry();\n\t\t}\n\t\tvar resultGeom = this._geomFact.buildGeometry(resultPolyList);\n\t\treturn resultGeom;\n\t},\n\tcomputeNodedEdges: function (bufferSegStrList, precisionModel) {\n\t\tvar noder = this.getNoder(precisionModel);\n\t\tnoder.computeNodes(bufferSegStrList);\n\t\tvar nodedSegStrings = noder.getNodedSubstrings();\n\t\tfor (var i = nodedSegStrings.iterator(); i.hasNext(); ) {\n\t\t\tvar segStr = i.next();\n\t\t\tvar pts = segStr.getCoordinates();\n\t\t\tif (pts.length === 2 && pts[0].equals2D(pts[1])) continue;\n\t\t\tvar oldLabel = segStr.getData();\n\t\t\tvar edge = new Edge(segStr.getCoordinates(), new Label(oldLabel));\n\t\t\tthis.insertUniqueEdge(edge);\n\t\t}\n\t},\n\tsetNoder: function (noder) {\n\t\tthis._workingNoder = noder;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn BufferBuilder;\n\t}\n});\nBufferBuilder.depthDelta = function (label) {\n\tvar lLoc = label.getLocation(0, Position.LEFT);\n\tvar rLoc = label.getLocation(0, Position.RIGHT);\n\tif (lLoc === Location.INTERIOR && rLoc === Location.EXTERIOR) return 1; else if (lLoc === Location.EXTERIOR && rLoc === Location.INTERIOR) return -1;\n\treturn 0;\n};\nBufferBuilder.convertSegStrings = function (it) {\n\tvar fact = new GeometryFactory();\n\tvar lines = new ArrayList();\n\twhile (it.hasNext()) {\n\t\tvar ss = it.next();\n\t\tvar line = fact.createLineString(ss.getCoordinates());\n\t\tlines.add(line);\n\t}\n\treturn fact.buildGeometry(lines);\n};\n","import GeometryFactory from '../geom/GeometryFactory';\nimport extend from '../../../../extend';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nimport RuntimeException from '../../../../java/lang/RuntimeException';\nexport default function NodingValidator() {\n\tthis._li = new RobustLineIntersector();\n\tthis._segStrings = null;\n\tlet segStrings = arguments[0];\n\tthis._segStrings = segStrings;\n}\nextend(NodingValidator.prototype, {\n\tcheckEndPtVertexIntersections: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var i = this._segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tvar pts = ss.getCoordinates();\n\t\t\t\tthis.checkEndPtVertexIntersections(pts[0], this._segStrings);\n\t\t\t\tthis.checkEndPtVertexIntersections(pts[pts.length - 1], this._segStrings);\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet testPt = arguments[0], segStrings = arguments[1];\n\t\t\tfor (var i = segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tvar pts = ss.getCoordinates();\n\t\t\t\tfor (var j = 1; j < pts.length - 1; j++) {\n\t\t\t\t\tif (pts[j].equals(testPt)) throw new RuntimeException(\"found endpt/interior pt intersection at index \" + j + \" :pt \" + testPt);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcheckInteriorIntersections: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var i = this._segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss0 = i.next();\n\t\t\t\tfor (var j = this._segStrings.iterator(); j.hasNext(); ) {\n\t\t\t\t\tvar ss1 = j.next();\n\t\t\t\t\tthis.checkInteriorIntersections(ss0, ss1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet ss0 = arguments[0], ss1 = arguments[1];\n\t\t\tvar pts0 = ss0.getCoordinates();\n\t\t\tvar pts1 = ss1.getCoordinates();\n\t\t\tfor (var i0 = 0; i0 < pts0.length - 1; i0++) {\n\t\t\t\tfor (var i1 = 0; i1 < pts1.length - 1; i1++) {\n\t\t\t\t\tthis.checkInteriorIntersections(ss0, i0, ss1, i1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 4) {\n\t\t\tlet e0 = arguments[0], segIndex0 = arguments[1], e1 = arguments[2], segIndex1 = arguments[3];\n\t\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\t\tif (this._li.hasIntersection()) {\n\t\t\t\tif (this._li.isProper() || this.hasInteriorIntersection(this._li, p00, p01) || this.hasInteriorIntersection(this._li, p10, p11)) {\n\t\t\t\t\tthrow new RuntimeException(\"found non-noded intersection at \" + p00 + \"-\" + p01 + \" and \" + p10 + \"-\" + p11);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcheckValid: function () {\n\t\tthis.checkEndPtVertexIntersections();\n\t\tthis.checkInteriorIntersections();\n\t\tthis.checkCollapses();\n\t},\n\tcheckCollapses: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var i = this._segStrings.iterator(); i.hasNext(); ) {\n\t\t\t\tvar ss = i.next();\n\t\t\t\tthis.checkCollapses(ss);\n\t\t\t}\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet ss = arguments[0];\n\t\t\tvar pts = ss.getCoordinates();\n\t\t\tfor (var i = 0; i < pts.length - 2; i++) {\n\t\t\t\tthis.checkCollapse(pts[i], pts[i + 1], pts[i + 2]);\n\t\t\t}\n\t\t}\n\t},\n\thasInteriorIntersection: function (li, p0, p1) {\n\t\tfor (var i = 0; i < li.getIntersectionNum(); i++) {\n\t\t\tvar intPt = li.getIntersection(i);\n\t\t\tif (!(intPt.equals(p0) || intPt.equals(p1))) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tcheckCollapse: function (p0, p1, p2) {\n\t\tif (p0.equals(p2)) throw new RuntimeException(\"found non-noded collapse at \" + NodingValidator.fact.createLineString([p0, p1, p2]));\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn NodingValidator;\n\t}\n});\nNodingValidator.fact = new GeometryFactory();\n","import Coordinate from '../../geom/Coordinate';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../../extend';\nimport Envelope from '../../geom/Envelope';\nimport Assert from '../../util/Assert';\nexport default function HotPixel() {\n\tthis._li = null;\n\tthis._pt = null;\n\tthis._originalPt = null;\n\tthis._ptScaled = null;\n\tthis._p0Scaled = null;\n\tthis._p1Scaled = null;\n\tthis._scaleFactor = null;\n\tthis._minx = null;\n\tthis._maxx = null;\n\tthis._miny = null;\n\tthis._maxy = null;\n\tthis._corner = new Array(4).fill(null);\n\tthis._safeEnv = null;\n\tlet pt = arguments[0], scaleFactor = arguments[1], li = arguments[2];\n\tthis._originalPt = pt;\n\tthis._pt = pt;\n\tthis._scaleFactor = scaleFactor;\n\tthis._li = li;\n\tif (scaleFactor <= 0) throw new IllegalArgumentException(\"Scale factor must be non-zero\");\n\tif (scaleFactor !== 1.0) {\n\t\tthis._pt = new Coordinate(this.scale(pt.x), this.scale(pt.y));\n\t\tthis._p0Scaled = new Coordinate();\n\t\tthis._p1Scaled = new Coordinate();\n\t}\n\tthis.initCorners(this._pt);\n}\nextend(HotPixel.prototype, {\n\tintersectsScaled: function (p0, p1) {\n\t\tvar segMinx = Math.min(p0.x, p1.x);\n\t\tvar segMaxx = Math.max(p0.x, p1.x);\n\t\tvar segMiny = Math.min(p0.y, p1.y);\n\t\tvar segMaxy = Math.max(p0.y, p1.y);\n\t\tvar isOutsidePixelEnv = this._maxx < segMinx || this._minx > segMaxx || this._maxy < segMiny || this._miny > segMaxy;\n\t\tif (isOutsidePixelEnv) return false;\n\t\tvar intersects = this.intersectsToleranceSquare(p0, p1);\n\t\tAssert.isTrue(!(isOutsidePixelEnv && intersects), \"Found bad envelope test\");\n\t\treturn intersects;\n\t},\n\tinitCorners: function (pt) {\n\t\tvar tolerance = 0.5;\n\t\tthis._minx = pt.x - tolerance;\n\t\tthis._maxx = pt.x + tolerance;\n\t\tthis._miny = pt.y - tolerance;\n\t\tthis._maxy = pt.y + tolerance;\n\t\tthis._corner[0] = new Coordinate(this._maxx, this._maxy);\n\t\tthis._corner[1] = new Coordinate(this._minx, this._maxy);\n\t\tthis._corner[2] = new Coordinate(this._minx, this._miny);\n\t\tthis._corner[3] = new Coordinate(this._maxx, this._miny);\n\t},\n\tintersects: function (p0, p1) {\n\t\tif (this._scaleFactor === 1.0) return this.intersectsScaled(p0, p1);\n\t\tthis.copyScaled(p0, this._p0Scaled);\n\t\tthis.copyScaled(p1, this._p1Scaled);\n\t\treturn this.intersectsScaled(this._p0Scaled, this._p1Scaled);\n\t},\n\tscale: function (val) {\n\t\treturn Math.round(val * this._scaleFactor);\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._originalPt;\n\t},\n\tcopyScaled: function (p, pScaled) {\n\t\tpScaled.x = this.scale(p.x);\n\t\tpScaled.y = this.scale(p.y);\n\t},\n\tgetSafeEnvelope: function () {\n\t\tif (this._safeEnv === null) {\n\t\t\tvar safeTolerance = HotPixel.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor;\n\t\t\tthis._safeEnv = new Envelope(this._originalPt.x - safeTolerance, this._originalPt.x + safeTolerance, this._originalPt.y - safeTolerance, this._originalPt.y + safeTolerance);\n\t\t}\n\t\treturn this._safeEnv;\n\t},\n\tintersectsPixelClosure: function (p0, p1) {\n\t\tthis._li.computeIntersection(p0, p1, this._corner[0], this._corner[1]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[1], this._corner[2]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[2], this._corner[3]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[3], this._corner[0]);\n\t\tif (this._li.hasIntersection()) return true;\n\t\treturn false;\n\t},\n\tintersectsToleranceSquare: function (p0, p1) {\n\t\tvar intersectsLeft = false;\n\t\tvar intersectsBottom = false;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[0], this._corner[1]);\n\t\tif (this._li.isProper()) return true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[1], this._corner[2]);\n\t\tif (this._li.isProper()) return true;\n\t\tif (this._li.hasIntersection()) intersectsLeft = true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[2], this._corner[3]);\n\t\tif (this._li.isProper()) return true;\n\t\tif (this._li.hasIntersection()) intersectsBottom = true;\n\t\tthis._li.computeIntersection(p0, p1, this._corner[3], this._corner[0]);\n\t\tif (this._li.isProper()) return true;\n\t\tif (intersectsLeft && intersectsBottom) return true;\n\t\tif (p0.equals(this._pt)) return true;\n\t\tif (p1.equals(this._pt)) return true;\n\t\treturn false;\n\t},\n\taddSnappedNode: function (segStr, segIndex) {\n\t\tvar p0 = segStr.getCoordinate(segIndex);\n\t\tvar p1 = segStr.getCoordinate(segIndex + 1);\n\t\tif (this.intersects(p0, p1)) {\n\t\t\tsegStr.addIntersection(this.getCoordinate(), segIndex);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn HotPixel;\n\t}\n});\nHotPixel.SAFE_ENV_EXPANSION_FACTOR = 0.75;\n","import MonotoneChainSelectAction from '../../index/chain/MonotoneChainSelectAction';\nimport MonotoneChain from '../../index/chain/MonotoneChain';\nimport ItemVisitor from '../../index/ItemVisitor';\nimport extend from '../../../../../extend';\nimport inherits from '../../../../../inherits';\nexport default function MCIndexPointSnapper() {\n\tthis._index = null;\n\tlet index = arguments[0];\n\tthis._index = index;\n}\nextend(MCIndexPointSnapper.prototype, {\n\tsnap: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet hotPixel = arguments[0];\n\t\t\treturn this.snap(hotPixel, null, -1);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2];\n\t\t\tvar pixelEnv = hotPixel.getSafeEnvelope();\n\t\t\tvar hotPixelSnapAction = new HotPixelSnapAction(hotPixel, parentEdge, hotPixelVertexIndex);\n\t\t\tthis._index.query(pixelEnv, {\n\t\t\t\tinterfaces_: function () {\n\t\t\t\t\treturn [ItemVisitor];\n\t\t\t\t},\n\t\t\t\tvisitItem: function (item) {\n\t\t\t\t\tvar testChain = item;\n\t\t\t\t\ttestChain.select(pixelEnv, hotPixelSnapAction);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn hotPixelSnapAction.isNodeAdded();\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn MCIndexPointSnapper;\n\t}\n});\nfunction HotPixelSnapAction() {\n\tMonotoneChainSelectAction.apply(this);\n\tthis._hotPixel = null;\n\tthis._parentEdge = null;\n\tthis._hotPixelVertexIndex = null;\n\tthis._isNodeAdded = false;\n\tlet hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2];\n\tthis._hotPixel = hotPixel;\n\tthis._parentEdge = parentEdge;\n\tthis._hotPixelVertexIndex = hotPixelVertexIndex;\n}\ninherits(HotPixelSnapAction, MonotoneChainSelectAction);\nextend(HotPixelSnapAction.prototype, {\n\tisNodeAdded: function () {\n\t\treturn this._isNodeAdded;\n\t},\n\tselect: function () {\n\t\tif (arguments.length === 2 && (Number.isInteger(arguments[1]) && arguments[0] instanceof MonotoneChain)) {\n\t\t\tlet mc = arguments[0], startIndex = arguments[1];\n\t\t\tvar ss = mc.getContext();\n\t\t\tif (this._parentEdge !== null) {\n\t\t\t\tif (ss === this._parentEdge && startIndex === this._hotPixelVertexIndex) return null;\n\t\t\t}\n\t\t\tthis._isNodeAdded = this._hotPixel.addSnappedNode(ss, startIndex);\n\t\t} else return MonotoneChainSelectAction.prototype.select.apply(this, arguments);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn HotPixelSnapAction;\n\t}\n});\nMCIndexPointSnapper.HotPixelSnapAction = HotPixelSnapAction;\n","import extend from '../../../../extend';\nimport SegmentIntersector from './SegmentIntersector';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function InteriorIntersectionFinderAdder() {\n\tthis._li = null;\n\tthis._interiorIntersections = null;\n\tlet li = arguments[0];\n\tthis._li = li;\n\tthis._interiorIntersections = new ArrayList();\n}\nextend(InteriorIntersectionFinderAdder.prototype, {\n\tprocessIntersections: function (e0, segIndex0, e1, segIndex1) {\n\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tif (this._li.isInteriorIntersection()) {\n\t\t\t\tfor (var intIndex = 0; intIndex < this._li.getIntersectionNum(); intIndex++) {\n\t\t\t\t\tthis._interiorIntersections.add(this._li.getIntersection(intIndex));\n\t\t\t\t}\n\t\t\t\te0.addIntersections(this._li, segIndex0, 0);\n\t\t\t\te1.addIntersections(this._li, segIndex1, 1);\n\t\t\t}\n\t\t}\n\t},\n\tisDone: function () {\n\t\treturn false;\n\t},\n\tgetInteriorIntersections: function () {\n\t\treturn this._interiorIntersections;\n\t},\n\tinterfaces_: function () {\n\t\treturn [SegmentIntersector];\n\t},\n\tgetClass: function () {\n\t\treturn InteriorIntersectionFinderAdder;\n\t}\n});\n","import NodingValidator from '../NodingValidator';\nimport hasInterface from '../../../../../hasInterface';\nimport Collection from '../../../../../java/util/Collection';\nimport Noder from '../Noder';\nimport MCIndexNoder from '../MCIndexNoder';\nimport NodedSegmentString from '../NodedSegmentString';\nimport HotPixel from './HotPixel';\nimport extend from '../../../../../extend';\nimport Exception from '../../../../../java/lang/Exception';\nimport MCIndexPointSnapper from './MCIndexPointSnapper';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport InteriorIntersectionFinderAdder from '../InteriorIntersectionFinderAdder';\nexport default function MCIndexSnapRounder() {\n\tthis._pm = null;\n\tthis._li = null;\n\tthis._scaleFactor = null;\n\tthis._noder = null;\n\tthis._pointSnapper = null;\n\tthis._nodedSegStrings = null;\n\tlet pm = arguments[0];\n\tthis._pm = pm;\n\tthis._li = new RobustLineIntersector();\n\tthis._li.setPrecisionModel(pm);\n\tthis._scaleFactor = pm.getScale();\n}\nextend(MCIndexSnapRounder.prototype, {\n\tcheckCorrectness: function (inputSegmentStrings) {\n\t\tvar resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings);\n\t\tvar nv = new NodingValidator(resultSegStrings);\n\t\ttry {\n\t\t\tnv.checkValid();\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof Exception) {\n\t\t\t\tex.printStackTrace();\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t},\n\tgetNodedSubstrings: function () {\n\t\treturn NodedSegmentString.getNodedSubstrings(this._nodedSegStrings);\n\t},\n\tsnapRound: function (segStrings, li) {\n\t\tvar intersections = this.findInteriorIntersections(segStrings, li);\n\t\tthis.computeIntersectionSnaps(intersections);\n\t\tthis.computeVertexSnaps(segStrings);\n\t},\n\tfindInteriorIntersections: function (segStrings, li) {\n\t\tvar intFinderAdder = new InteriorIntersectionFinderAdder(li);\n\t\tthis._noder.setSegmentIntersector(intFinderAdder);\n\t\tthis._noder.computeNodes(segStrings);\n\t\treturn intFinderAdder.getInteriorIntersections();\n\t},\n\tcomputeVertexSnaps: function () {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet edges = arguments[0];\n\t\t\tfor (var i0 = edges.iterator(); i0.hasNext(); ) {\n\t\t\t\tvar edge0 = i0.next();\n\t\t\t\tthis.computeVertexSnaps(edge0);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof NodedSegmentString) {\n\t\t\tlet e = arguments[0];\n\t\t\tvar pts0 = e.getCoordinates();\n\t\t\tfor (var i = 0; i < pts0.length; i++) {\n\t\t\t\tvar hotPixel = new HotPixel(pts0[i], this._scaleFactor, this._li);\n\t\t\t\tvar isNodeAdded = this._pointSnapper.snap(hotPixel, e, i);\n\t\t\t\tif (isNodeAdded) {\n\t\t\t\t\te.addIntersection(pts0[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcomputeNodes: function (inputSegmentStrings) {\n\t\tthis._nodedSegStrings = inputSegmentStrings;\n\t\tthis._noder = new MCIndexNoder();\n\t\tthis._pointSnapper = new MCIndexPointSnapper(this._noder.getIndex());\n\t\tthis.snapRound(inputSegmentStrings, this._li);\n\t},\n\tcomputeIntersectionSnaps: function (snapPts) {\n\t\tfor (var it = snapPts.iterator(); it.hasNext(); ) {\n\t\t\tvar snapPt = it.next();\n\t\t\tvar hotPixel = new HotPixel(snapPt, this._scaleFactor, this._li);\n\t\t\tthis._pointSnapper.snap(hotPixel);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [Noder];\n\t},\n\tgetClass: function () {\n\t\treturn MCIndexSnapRounder;\n\t}\n});\n","import BufferParameters from './BufferParameters';\nimport Geometry from '../../geom/Geometry';\nimport BufferBuilder from './BufferBuilder';\nimport ScaledNoder from '../../noding/ScaledNoder';\nimport TopologyException from '../../geom/TopologyException';\nimport extend from '../../../../../extend';\nimport MathUtil from '../../math/MathUtil';\nimport PrecisionModel from '../../geom/PrecisionModel';\nimport RuntimeException from '../../../../../java/lang/RuntimeException';\nimport MCIndexSnapRounder from '../../noding/snapround/MCIndexSnapRounder';\nexport default function BufferOp() {\n\tthis._argGeom = null;\n\tthis._distance = null;\n\tthis._bufParams = new BufferParameters();\n\tthis._resultGeometry = null;\n\tthis._saveException = null;\n\tif (arguments.length === 1) {\n\t\tlet g = arguments[0];\n\t\tthis._argGeom = g;\n\t} else if (arguments.length === 2) {\n\t\tlet g = arguments[0], bufParams = arguments[1];\n\t\tthis._argGeom = g;\n\t\tthis._bufParams = bufParams;\n\t}\n}\nextend(BufferOp.prototype, {\n\tbufferFixedPrecision: function (fixedPM) {\n\t\tvar noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.getScale());\n\t\tvar bufBuilder = new BufferBuilder(this._bufParams);\n\t\tbufBuilder.setWorkingPrecisionModel(fixedPM);\n\t\tbufBuilder.setNoder(noder);\n\t\tthis._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance);\n\t},\n\tbufferReducedPrecision: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tfor (var precDigits = BufferOp.MAX_PRECISION_DIGITS; precDigits >= 0; precDigits--) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.bufferReducedPrecision(precDigits);\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tif (ex instanceof TopologyException) {\n\t\t\t\t\t\tthis._saveException = ex;\n\t\t\t\t\t} else throw ex;\n\t\t\t\t} finally {}\n\t\t\t\tif (this._resultGeometry !== null) return null;\n\t\t\t}\n\t\t\tthrow this._saveException;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet precisionDigits = arguments[0];\n\t\t\tvar sizeBasedScaleFactor = BufferOp.precisionScaleFactor(this._argGeom, this._distance, precisionDigits);\n\t\t\tvar fixedPM = new PrecisionModel(sizeBasedScaleFactor);\n\t\t\tthis.bufferFixedPrecision(fixedPM);\n\t\t}\n\t},\n\tcomputeGeometry: function () {\n\t\tthis.bufferOriginalPrecision();\n\t\tif (this._resultGeometry !== null) return null;\n\t\tvar argPM = this._argGeom.getFactory().getPrecisionModel();\n\t\tif (argPM.getType() === PrecisionModel.FIXED) this.bufferFixedPrecision(argPM); else this.bufferReducedPrecision();\n\t},\n\tsetQuadrantSegments: function (quadrantSegments) {\n\t\tthis._bufParams.setQuadrantSegments(quadrantSegments);\n\t},\n\tbufferOriginalPrecision: function () {\n\t\ttry {\n\t\t\tvar bufBuilder = new BufferBuilder(this._bufParams);\n\t\t\tthis._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance);\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof RuntimeException) {\n\t\t\t\tthis._saveException = ex;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t},\n\tgetResultGeometry: function (distance) {\n\t\tthis._distance = distance;\n\t\tthis.computeGeometry();\n\t\treturn this._resultGeometry;\n\t},\n\tsetEndCapStyle: function (endCapStyle) {\n\t\tthis._bufParams.setEndCapStyle(endCapStyle);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn BufferOp;\n\t}\n});\nBufferOp.bufferOp = function () {\n\tif (arguments.length === 2) {\n\t\tlet g = arguments[0], distance = arguments[1];\n\t\tvar gBuf = new BufferOp(g);\n\t\tvar geomBuf = gBuf.getResultGeometry(distance);\n\t\treturn geomBuf;\n\t} else if (arguments.length === 3) {\n\t\tif (Number.isInteger(arguments[2]) && (arguments[0] instanceof Geometry && typeof arguments[1] === \"number\")) {\n\t\t\tlet g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2];\n\t\t\tvar bufOp = new BufferOp(g);\n\t\t\tbufOp.setQuadrantSegments(quadrantSegments);\n\t\t\tvar geomBuf = bufOp.getResultGeometry(distance);\n\t\t\treturn geomBuf;\n\t\t} else if (arguments[2] instanceof BufferParameters && (arguments[0] instanceof Geometry && typeof arguments[1] === \"number\")) {\n\t\t\tlet g = arguments[0], distance = arguments[1], params = arguments[2];\n\t\t\tvar bufOp = new BufferOp(g, params);\n\t\t\tvar geomBuf = bufOp.getResultGeometry(distance);\n\t\t\treturn geomBuf;\n\t\t}\n\t} else if (arguments.length === 4) {\n\t\tlet g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2], endCapStyle = arguments[3];\n\t\tvar bufOp = new BufferOp(g);\n\t\tbufOp.setQuadrantSegments(quadrantSegments);\n\t\tbufOp.setEndCapStyle(endCapStyle);\n\t\tvar geomBuf = bufOp.getResultGeometry(distance);\n\t\treturn geomBuf;\n\t}\n};\nBufferOp.precisionScaleFactor = function (g, distance, maxPrecisionDigits) {\n\tvar env = g.getEnvelopeInternal();\n\tvar envMax = MathUtil.max(Math.abs(env.getMaxX()), Math.abs(env.getMaxY()), Math.abs(env.getMinX()), Math.abs(env.getMinY()));\n\tvar expandByDistance = distance > 0.0 ? distance : 0.0;\n\tvar bufEnvMax = envMax + 2 * expandByDistance;\n\tvar bufEnvPrecisionDigits = Math.trunc(Math.log(bufEnvMax) / Math.log(10) + 1.0);\n\tvar minUnitLog10 = maxPrecisionDigits - bufEnvPrecisionDigits;\n\tvar scaleFactor = Math.pow(10.0, minUnitLog10);\n\treturn scaleFactor;\n};\nBufferOp.CAP_ROUND = BufferParameters.CAP_ROUND;\nBufferOp.CAP_BUTT = BufferParameters.CAP_FLAT;\nBufferOp.CAP_FLAT = BufferParameters.CAP_FLAT;\nBufferOp.CAP_SQUARE = BufferParameters.CAP_SQUARE;\nBufferOp.MAX_PRECISION_DIGITS = 12;\n","import Polygon from '../Polygon';\nimport extend from '../../../../../extend';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../GeometryFilter';\nexport default function PolygonExtracter() {\n\tthis._comps = null;\n\tlet comps = arguments[0];\n\tthis._comps = comps;\n}\nextend(PolygonExtracter.prototype, {\n\tfilter: function (geom) {\n\t\tif (geom instanceof Polygon) this._comps.add(geom);\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryFilter];\n\t},\n\tgetClass: function () {\n\t\treturn PolygonExtracter;\n\t}\n});\nPolygonExtracter.getPolygons = function () {\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\treturn PolygonExtracter.getPolygons(geom, new ArrayList());\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], list = arguments[1];\n\t\tif (geom instanceof Polygon) {\n\t\t\tlist.add(geom);\n\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\tgeom.apply(new PolygonExtracter(list));\n\t\t}\n\t\treturn list;\n\t}\n};\n","import extend from '../../../../../extend';\nexport default function GeometryLocation() {\n\tthis._component = null;\n\tthis._segIndex = null;\n\tthis._pt = null;\n\tif (arguments.length === 2) {\n\t\tlet component = arguments[0], pt = arguments[1];\n\t\tGeometryLocation.call(this, component, GeometryLocation.INSIDE_AREA, pt);\n\t} else if (arguments.length === 3) {\n\t\tlet component = arguments[0], segIndex = arguments[1], pt = arguments[2];\n\t\tthis._component = component;\n\t\tthis._segIndex = segIndex;\n\t\tthis._pt = pt;\n\t}\n}\nextend(GeometryLocation.prototype, {\n\tisInsideArea: function () {\n\t\treturn this._segIndex === GeometryLocation.INSIDE_AREA;\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._pt;\n\t},\n\tgetGeometryComponent: function () {\n\t\treturn this._component;\n\t},\n\tgetSegmentIndex: function () {\n\t\treturn this._segIndex;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryLocation;\n\t}\n});\nGeometryLocation.INSIDE_AREA = -1;\n","import Point from '../Point';\nimport extend from '../../../../../extend';\nimport Collections from '../../../../../java/util/Collections';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../GeometryFilter';\nexport default function PointExtracter() {\n\tthis._pts = null;\n\tlet pts = arguments[0];\n\tthis._pts = pts;\n}\nextend(PointExtracter.prototype, {\n\tfilter: function (geom) {\n\t\tif (geom instanceof Point) this._pts.add(geom);\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryFilter];\n\t},\n\tgetClass: function () {\n\t\treturn PointExtracter;\n\t}\n});\nPointExtracter.getPoints = function () {\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\tif (geom instanceof Point) {\n\t\t\treturn Collections.singletonList(geom);\n\t\t}\n\t\treturn PointExtracter.getPoints(geom, new ArrayList());\n\t} else if (arguments.length === 2) {\n\t\tlet geom = arguments[0], list = arguments[1];\n\t\tif (geom instanceof Point) {\n\t\t\tlist.add(geom);\n\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\tgeom.apply(new PointExtracter(list));\n\t\t}\n\t\treturn list;\n\t}\n};\n","import LineString from '../../geom/LineString';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nimport GeometryLocation from './GeometryLocation';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../../geom/GeometryFilter';\nexport default function ConnectedElementLocationFilter() {\n\tthis._locations = null;\n\tlet locations = arguments[0];\n\tthis._locations = locations;\n}\nextend(ConnectedElementLocationFilter.prototype, {\n\tfilter: function (geom) {\n\t\tif (geom instanceof Point || geom instanceof LineString || geom instanceof Polygon) this._locations.add(new GeometryLocation(geom, 0, geom.getCoordinate()));\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryFilter];\n\t},\n\tgetClass: function () {\n\t\treturn ConnectedElementLocationFilter;\n\t}\n});\nConnectedElementLocationFilter.getLocations = function (geom) {\n\tvar locations = new ArrayList();\n\tgeom.apply(new ConnectedElementLocationFilter(locations));\n\treturn locations;\n};\n","import PointLocator from '../../algorithm/PointLocator';\nimport PolygonExtracter from '../../geom/util/PolygonExtracter';\nimport Location from '../../geom/Location';\nimport LineString from '../../geom/LineString';\nimport hasInterface from '../../../../../hasInterface';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nimport GeometryLocation from './GeometryLocation';\nimport Double from '../../../../../java/lang/Double';\nimport PointExtracter from '../../geom/util/PointExtracter';\nimport extend from '../../../../../extend';\nimport ConnectedElementLocationFilter from './ConnectedElementLocationFilter';\nimport LineSegment from '../../geom/LineSegment';\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter';\nimport List from '../../../../../java/util/List';\nimport Distance from '../../algorithm/Distance';\nexport default function DistanceOp() {\n\tthis._geom = null;\n\tthis._terminateDistance = 0.0;\n\tthis._ptLocator = new PointLocator();\n\tthis._minDistanceLocation = null;\n\tthis._minDistance = Double.MAX_VALUE;\n\tif (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tDistanceOp.call(this, g0, g1, 0.0);\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], terminateDistance = arguments[2];\n\t\tthis._geom = new Array(2).fill(null);\n\t\tthis._geom[0] = g0;\n\t\tthis._geom[1] = g1;\n\t\tthis._terminateDistance = terminateDistance;\n\t}\n}\nextend(DistanceOp.prototype, {\n\tcomputeContainmentDistance: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tvar locPtPoly = new Array(2).fill(null);\n\t\t\tthis.computeContainmentDistance(0, locPtPoly);\n\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\tthis.computeContainmentDistance(1, locPtPoly);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet polyGeomIndex = arguments[0], locPtPoly = arguments[1];\n\t\t\tvar polyGeom = this._geom[polyGeomIndex];\n\t\t\tif (polyGeom.getDimension() < 2) return null;\n\t\t\tvar locationsIndex = 1 - polyGeomIndex;\n\t\t\tvar polys = PolygonExtracter.getPolygons(polyGeom);\n\t\t\tif (polys.size() > 0) {\n\t\t\t\tvar insideLocs = ConnectedElementLocationFilter.getLocations(this._geom[locationsIndex]);\n\t\t\t\tthis.computeContainmentDistance(insideLocs, polys, locPtPoly);\n\t\t\t\tif (this._minDistance <= this._terminateDistance) {\n\t\t\t\t\tthis._minDistanceLocation[locationsIndex] = locPtPoly[0];\n\t\t\t\t\tthis._minDistanceLocation[polyGeomIndex] = locPtPoly[1];\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (arguments[2] instanceof Array && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n\t\t\t\tlet locs = arguments[0], polys = arguments[1], locPtPoly = arguments[2];\n\t\t\t\tfor (var i = 0; i < locs.size(); i++) {\n\t\t\t\t\tvar loc = locs.get(i);\n\t\t\t\t\tfor (var j = 0; j < polys.size(); j++) {\n\t\t\t\t\t\tthis.computeContainmentDistance(loc, polys.get(j), locPtPoly);\n\t\t\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (arguments[2] instanceof Array && (arguments[0] instanceof GeometryLocation && arguments[1] instanceof Polygon)) {\n\t\t\t\tlet ptLoc = arguments[0], poly = arguments[1], locPtPoly = arguments[2];\n\t\t\t\tvar pt = ptLoc.getCoordinate();\n\t\t\t\tif (Location.EXTERIOR !== this._ptLocator.locate(pt, poly)) {\n\t\t\t\t\tthis._minDistance = 0.0;\n\t\t\t\t\tlocPtPoly[0] = ptLoc;\n\t\t\t\t\tlocPtPoly[1] = new GeometryLocation(poly, pt);\n\t\t\t\t\t;\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcomputeMinDistanceLinesPoints: function (lines, points, locGeom) {\n\t\tfor (var i = 0; i < lines.size(); i++) {\n\t\t\tvar line = lines.get(i);\n\t\t\tfor (var j = 0; j < points.size(); j++) {\n\t\t\t\tvar pt = points.get(j);\n\t\t\t\tthis.computeMinDistance(line, pt, locGeom);\n\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t}\n\t\t}\n\t},\n\tcomputeFacetDistance: function () {\n\t\tvar locGeom = new Array(2).fill(null);\n\t\tvar lines0 = LinearComponentExtracter.getLines(this._geom[0]);\n\t\tvar lines1 = LinearComponentExtracter.getLines(this._geom[1]);\n\t\tvar pts0 = PointExtracter.getPoints(this._geom[0]);\n\t\tvar pts1 = PointExtracter.getPoints(this._geom[1]);\n\t\tthis.computeMinDistanceLines(lines0, lines1, locGeom);\n\t\tthis.updateMinDistance(locGeom, false);\n\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\tlocGeom[0] = null;\n\t\tlocGeom[1] = null;\n\t\tthis.computeMinDistanceLinesPoints(lines0, pts1, locGeom);\n\t\tthis.updateMinDistance(locGeom, false);\n\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\tlocGeom[0] = null;\n\t\tlocGeom[1] = null;\n\t\tthis.computeMinDistanceLinesPoints(lines1, pts0, locGeom);\n\t\tthis.updateMinDistance(locGeom, true);\n\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\tlocGeom[0] = null;\n\t\tlocGeom[1] = null;\n\t\tthis.computeMinDistancePoints(pts0, pts1, locGeom);\n\t\tthis.updateMinDistance(locGeom, false);\n\t},\n\tnearestLocations: function () {\n\t\tthis.computeMinDistance();\n\t\treturn this._minDistanceLocation;\n\t},\n\tupdateMinDistance: function (locGeom, flip) {\n\t\tif (locGeom[0] === null) return null;\n\t\tif (flip) {\n\t\t\tthis._minDistanceLocation[0] = locGeom[1];\n\t\t\tthis._minDistanceLocation[1] = locGeom[0];\n\t\t} else {\n\t\t\tthis._minDistanceLocation[0] = locGeom[0];\n\t\t\tthis._minDistanceLocation[1] = locGeom[1];\n\t\t}\n\t},\n\tnearestPoints: function () {\n\t\tthis.computeMinDistance();\n\t\tvar nearestPts = [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()];\n\t\treturn nearestPts;\n\t},\n\tcomputeMinDistance: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tif (this._minDistanceLocation !== null) return null;\n\t\t\tthis._minDistanceLocation = new Array(2).fill(null);\n\t\t\tthis.computeContainmentDistance();\n\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\tthis.computeFacetDistance();\n\t\t} else if (arguments.length === 3) {\n\t\t\tif (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof Point)) {\n\t\t\t\tlet line = arguments[0], pt = arguments[1], locGeom = arguments[2];\n\t\t\t\tif (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) > this._minDistance) return null;\n\t\t\t\tvar coord0 = line.getCoordinates();\n\t\t\t\tvar coord = pt.getCoordinate();\n\t\t\t\tfor (var i = 0; i < coord0.length - 1; i++) {\n\t\t\t\t\tvar dist = Distance.pointToSegment(coord, coord0[i], coord0[i + 1]);\n\t\t\t\t\tif (dist < this._minDistance) {\n\t\t\t\t\t\tthis._minDistance = dist;\n\t\t\t\t\t\tvar seg = new LineSegment(coord0[i], coord0[i + 1]);\n\t\t\t\t\t\tvar segClosestPoint = seg.closestPoint(coord);\n\t\t\t\t\t\tlocGeom[0] = new GeometryLocation(line, i, segClosestPoint);\n\t\t\t\t\t\tlocGeom[1] = new GeometryLocation(pt, 0, coord);\n\t\t\t\t\t}\n\t\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t\t}\n\t\t\t} else if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof LineString)) {\n\t\t\t\tlet line0 = arguments[0], line1 = arguments[1], locGeom = arguments[2];\n\t\t\t\tif (line0.getEnvelopeInternal().distance(line1.getEnvelopeInternal()) > this._minDistance) return null;\n\t\t\t\tvar coord0 = line0.getCoordinates();\n\t\t\t\tvar coord1 = line1.getCoordinates();\n\t\t\t\tfor (var i = 0; i < coord0.length - 1; i++) {\n\t\t\t\t\tfor (var j = 0; j < coord1.length - 1; j++) {\n\t\t\t\t\t\tvar dist = Distance.segmentToSegment(coord0[i], coord0[i + 1], coord1[j], coord1[j + 1]);\n\t\t\t\t\t\tif (dist < this._minDistance) {\n\t\t\t\t\t\t\tthis._minDistance = dist;\n\t\t\t\t\t\t\tvar seg0 = new LineSegment(coord0[i], coord0[i + 1]);\n\t\t\t\t\t\t\tvar seg1 = new LineSegment(coord1[j], coord1[j + 1]);\n\t\t\t\t\t\t\tvar closestPt = seg0.closestPoints(seg1);\n\t\t\t\t\t\t\tlocGeom[0] = new GeometryLocation(line0, i, closestPt[0]);\n\t\t\t\t\t\t\tlocGeom[1] = new GeometryLocation(line1, j, closestPt[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcomputeMinDistancePoints: function (points0, points1, locGeom) {\n\t\tfor (var i = 0; i < points0.size(); i++) {\n\t\t\tvar pt0 = points0.get(i);\n\t\t\tfor (var j = 0; j < points1.size(); j++) {\n\t\t\t\tvar pt1 = points1.get(j);\n\t\t\t\tvar dist = pt0.getCoordinate().distance(pt1.getCoordinate());\n\t\t\t\tif (dist < this._minDistance) {\n\t\t\t\t\tthis._minDistance = dist;\n\t\t\t\t\tlocGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate());\n\t\t\t\t\tlocGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate());\n\t\t\t\t}\n\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t}\n\t\t}\n\t},\n\tdistance: function () {\n\t\tif (this._geom[0] === null || this._geom[1] === null) throw new IllegalArgumentException(\"null geometries are not supported\");\n\t\tif (this._geom[0].isEmpty() || this._geom[1].isEmpty()) return 0.0;\n\t\tthis.computeMinDistance();\n\t\treturn this._minDistance;\n\t},\n\tcomputeMinDistanceLines: function (lines0, lines1, locGeom) {\n\t\tfor (var i = 0; i < lines0.size(); i++) {\n\t\t\tvar line0 = lines0.get(i);\n\t\t\tfor (var j = 0; j < lines1.size(); j++) {\n\t\t\t\tvar line1 = lines1.get(j);\n\t\t\t\tthis.computeMinDistance(line0, line1, locGeom);\n\t\t\t\tif (this._minDistance <= this._terminateDistance) return null;\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DistanceOp;\n\t}\n});\nDistanceOp.distance = function (g0, g1) {\n\tvar distOp = new DistanceOp(g0, g1);\n\treturn distOp.distance();\n};\nDistanceOp.isWithinDistance = function (g0, g1, distance) {\n\tvar envDist = g0.getEnvelopeInternal().distance(g1.getEnvelopeInternal());\n\tif (envDist > distance) return false;\n\tvar distOp = new DistanceOp(g0, g1, distance);\n\treturn distOp.distance() <= distance;\n};\nDistanceOp.nearestPoints = function (g0, g1) {\n\tvar distOp = new DistanceOp(g0, g1);\n\treturn distOp.nearestPoints();\n};\n","import CoordinateList from '../../geom/CoordinateList';\nimport extend from '../../../../../extend';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function EdgeString() {\n\tthis._factory = null;\n\tthis._directedEdges = new ArrayList();\n\tthis._coordinates = null;\n\tlet factory = arguments[0];\n\tthis._factory = factory;\n}\nextend(EdgeString.prototype, {\n\tgetCoordinates: function () {\n\t\tif (this._coordinates === null) {\n\t\t\tvar forwardDirectedEdges = 0;\n\t\t\tvar reverseDirectedEdges = 0;\n\t\t\tvar coordinateList = new CoordinateList();\n\t\t\tfor (var i = this._directedEdges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar directedEdge = i.next();\n\t\t\t\tif (directedEdge.getEdgeDirection()) {\n\t\t\t\t\tforwardDirectedEdges++;\n\t\t\t\t} else {\n\t\t\t\t\treverseDirectedEdges++;\n\t\t\t\t}\n\t\t\t\tcoordinateList.add(directedEdge.getEdge().getLine().getCoordinates(), false, directedEdge.getEdgeDirection());\n\t\t\t}\n\t\t\tthis._coordinates = coordinateList.toCoordinateArray();\n\t\t\tif (reverseDirectedEdges > forwardDirectedEdges) {\n\t\t\t\tCoordinateArrays.reverse(this._coordinates);\n\t\t\t}\n\t\t}\n\t\treturn this._coordinates;\n\t},\n\ttoLineString: function () {\n\t\treturn this._factory.createLineString(this.getCoordinates());\n\t},\n\tadd: function (directedEdge) {\n\t\tthis._directedEdges.add(directedEdge);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeString;\n\t}\n});\n","import extend from '../../../../extend';\nexport default function GraphComponent() {\n\tthis._isMarked = false;\n\tthis._isVisited = false;\n\tthis._data = null;\n}\nextend(GraphComponent.prototype, {\n\tsetVisited: function (isVisited) {\n\t\tthis._isVisited = isVisited;\n\t},\n\tisMarked: function () {\n\t\treturn this._isMarked;\n\t},\n\tsetData: function (data) {\n\t\tthis._data = data;\n\t},\n\tgetData: function () {\n\t\treturn this._data;\n\t},\n\tsetMarked: function (isMarked) {\n\t\tthis._isMarked = isMarked;\n\t},\n\tgetContext: function () {\n\t\treturn this._data;\n\t},\n\tisVisited: function () {\n\t\treturn this._isVisited;\n\t},\n\tsetContext: function (data) {\n\t\tthis._data = data;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GraphComponent;\n\t}\n});\nGraphComponent.getComponentWithVisitedState = function (i, visitedState) {\n\twhile (i.hasNext()) {\n\t\tvar comp = i.next();\n\t\tif (comp.isVisited() === visitedState) return comp;\n\t}\n\treturn null;\n};\nGraphComponent.setVisited = function (i, visited) {\n\twhile (i.hasNext()) {\n\t\tvar comp = i.next();\n\t\tcomp.setVisited(visited);\n\t}\n};\nGraphComponent.setMarked = function (i, marked) {\n\twhile (i.hasNext()) {\n\t\tvar comp = i.next();\n\t\tcomp.setMarked(marked);\n\t}\n};\n","import extend from '../../../../extend';\nimport Orientation from '../algorithm/Orientation';\nimport Comparable from '../../../../java/lang/Comparable';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Quadrant from '../geomgraph/Quadrant';\nimport inherits from '../../../../inherits';\nimport GraphComponent from './GraphComponent';\nexport default function DirectedEdge() {\n\tGraphComponent.apply(this);\n\tthis._parentEdge = null;\n\tthis._from = null;\n\tthis._to = null;\n\tthis._p0 = null;\n\tthis._p1 = null;\n\tthis._sym = null;\n\tthis._edgeDirection = null;\n\tthis._quadrant = null;\n\tthis._angle = null;\n\tlet from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3];\n\tthis._from = from;\n\tthis._to = to;\n\tthis._edgeDirection = edgeDirection;\n\tthis._p0 = from.getCoordinate();\n\tthis._p1 = directionPt;\n\tvar dx = this._p1.x - this._p0.x;\n\tvar dy = this._p1.y - this._p0.y;\n\tthis._quadrant = Quadrant.quadrant(dx, dy);\n\tthis._angle = Math.atan2(dy, dx);\n}\ninherits(DirectedEdge, GraphComponent);\nextend(DirectedEdge.prototype, {\n\tisRemoved: function () {\n\t\treturn this._parentEdge === null;\n\t},\n\tcompareDirection: function (e) {\n\t\tif (this._quadrant > e._quadrant) return 1;\n\t\tif (this._quadrant < e._quadrant) return -1;\n\t\treturn Orientation.index(e._p0, e._p1, this._p1);\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._from.getCoordinate();\n\t},\n\tprint: function (out) {\n\t\tvar className = this.getClass().getName();\n\t\tvar lastDotPos = className.lastIndexOf('.');\n\t\tvar name = className.substring(lastDotPos + 1);\n\t\tout.print(\" \" + name + \": \" + this._p0 + \" - \" + this._p1 + \" \" + this._quadrant + \":\" + this._angle);\n\t},\n\tgetDirectionPt: function () {\n\t\treturn this._p1;\n\t},\n\tgetAngle: function () {\n\t\treturn this._angle;\n\t},\n\tcompareTo: function (obj) {\n\t\tvar de = obj;\n\t\treturn this.compareDirection(de);\n\t},\n\tgetFromNode: function () {\n\t\treturn this._from;\n\t},\n\tgetSym: function () {\n\t\treturn this._sym;\n\t},\n\tsetEdge: function (parentEdge) {\n\t\tthis._parentEdge = parentEdge;\n\t},\n\tremove: function () {\n\t\tthis._sym = null;\n\t\tthis._parentEdge = null;\n\t},\n\tgetEdge: function () {\n\t\treturn this._parentEdge;\n\t},\n\tgetQuadrant: function () {\n\t\treturn this._quadrant;\n\t},\n\tsetSym: function (sym) {\n\t\tthis._sym = sym;\n\t},\n\tgetToNode: function () {\n\t\treturn this._to;\n\t},\n\tgetEdgeDirection: function () {\n\t\treturn this._edgeDirection;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn DirectedEdge;\n\t}\n});\nDirectedEdge.toEdges = function (dirEdges) {\n\tvar edges = new ArrayList();\n\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\tedges.add(i.next()._parentEdge);\n\t}\n\treturn edges;\n};\n","import extend from '../../../../../extend';\nimport DirectedEdge from '../../planargraph/DirectedEdge';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nexport default function LineMergeDirectedEdge() {\n\tlet from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3];\n\tDirectedEdge.call(this, from, to, directionPt, edgeDirection);\n}\ninherits(LineMergeDirectedEdge, DirectedEdge);\nextend(LineMergeDirectedEdge.prototype, {\n\tgetNext: function () {\n\t\tif (this.getToNode().getDegree() !== 2) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.getToNode().getOutEdges().getEdges().get(0) === this.getSym()) {\n\t\t\treturn this.getToNode().getOutEdges().getEdges().get(1);\n\t\t}\n\t\tAssert.isTrue(this.getToNode().getOutEdges().getEdges().get(1) === this.getSym());\n\t\treturn this.getToNode().getOutEdges().getEdges().get(0);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineMergeDirectedEdge;\n\t}\n});\n","import Node from './Node';\nimport extend from '../../../../extend';\nimport inherits from '../../../../inherits';\nimport GraphComponent from './GraphComponent';\nexport default function Edge() {\n\tGraphComponent.apply(this);\n\tthis._dirEdge = null;\n\tif (arguments.length === 0) {} else if (arguments.length === 2) {\n\t\tlet de0 = arguments[0], de1 = arguments[1];\n\t\tthis.setDirectedEdges(de0, de1);\n\t}\n}\ninherits(Edge, GraphComponent);\nextend(Edge.prototype, {\n\tisRemoved: function () {\n\t\treturn this._dirEdge === null;\n\t},\n\tsetDirectedEdges: function (de0, de1) {\n\t\tthis._dirEdge = [de0, de1];\n\t\tde0.setEdge(this);\n\t\tde1.setEdge(this);\n\t\tde0.setSym(de1);\n\t\tde1.setSym(de0);\n\t\tde0.getFromNode().addOutEdge(de0);\n\t\tde1.getFromNode().addOutEdge(de1);\n\t},\n\tgetDirEdge: function () {\n\t\tif (Number.isInteger(arguments[0])) {\n\t\t\tlet i = arguments[0];\n\t\t\treturn this._dirEdge[i];\n\t\t} else if (arguments[0] instanceof Node) {\n\t\t\tlet fromNode = arguments[0];\n\t\t\tif (this._dirEdge[0].getFromNode() === fromNode) return this._dirEdge[0];\n\t\t\tif (this._dirEdge[1].getFromNode() === fromNode) return this._dirEdge[1];\n\t\t\treturn null;\n\t\t}\n\t},\n\tremove: function () {\n\t\tthis._dirEdge = null;\n\t},\n\tgetOppositeNode: function (node) {\n\t\tif (this._dirEdge[0].getFromNode() === node) return this._dirEdge[0].getToNode();\n\t\tif (this._dirEdge[1].getFromNode() === node) return this._dirEdge[1].getToNode();\n\t\treturn null;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Edge;\n\t}\n});\n","import extend from '../../../../extend';\nimport Collections from '../../../../java/util/Collections';\nimport DirectedEdge from './DirectedEdge';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Edge from './Edge';\nexport default function DirectedEdgeStar() {\n\tthis._outEdges = new ArrayList();\n\tthis._sorted = false;\n}\nextend(DirectedEdgeStar.prototype, {\n\tgetNextEdge: function (dirEdge) {\n\t\tvar i = this.getIndex(dirEdge);\n\t\treturn this._outEdges.get(this.getIndex(i + 1));\n\t},\n\tgetCoordinate: function () {\n\t\tvar it = this.iterator();\n\t\tif (!it.hasNext()) return null;\n\t\tvar e = it.next();\n\t\treturn e.getCoordinate();\n\t},\n\titerator: function () {\n\t\tthis.sortEdges();\n\t\treturn this._outEdges.iterator();\n\t},\n\tsortEdges: function () {\n\t\tif (!this._sorted) {\n\t\t\tCollections.sort(this._outEdges);\n\t\t\tthis._sorted = true;\n\t\t}\n\t},\n\tremove: function (de) {\n\t\tthis._outEdges.remove(de);\n\t},\n\tgetEdges: function () {\n\t\tthis.sortEdges();\n\t\treturn this._outEdges;\n\t},\n\tgetNextCWEdge: function (dirEdge) {\n\t\tvar i = this.getIndex(dirEdge);\n\t\treturn this._outEdges.get(this.getIndex(i - 1));\n\t},\n\tgetIndex: function () {\n\t\tif (arguments[0] instanceof Edge) {\n\t\t\tlet edge = arguments[0];\n\t\t\tthis.sortEdges();\n\t\t\tfor (var i = 0; i < this._outEdges.size(); i++) {\n\t\t\t\tvar de = this._outEdges.get(i);\n\t\t\t\tif (de.getEdge() === edge) return i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet dirEdge = arguments[0];\n\t\t\tthis.sortEdges();\n\t\t\tfor (var i = 0; i < this._outEdges.size(); i++) {\n\t\t\t\tvar de = this._outEdges.get(i);\n\t\t\t\tif (de === dirEdge) return i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t} else if (Number.isInteger(arguments[0])) {\n\t\t\tlet i = arguments[0];\n\t\t\tvar modi = i % this._outEdges.size();\n\t\t\tif (modi < 0) modi += this._outEdges.size();\n\t\t\treturn modi;\n\t\t}\n\t},\n\tadd: function (de) {\n\t\tthis._outEdges.add(de);\n\t\tthis._sorted = false;\n\t},\n\tgetDegree: function () {\n\t\treturn this._outEdges.size();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DirectedEdgeStar;\n\t}\n});\n","import DirectedEdgeStar from './DirectedEdgeStar';\nimport HashSet from '../../../../java/util/HashSet';\nimport extend from '../../../../extend';\nimport DirectedEdge from './DirectedEdge';\nimport inherits from '../../../../inherits';\nimport GraphComponent from './GraphComponent';\nexport default function Node() {\n\tGraphComponent.apply(this);\n\tthis._pt = null;\n\tthis._deStar = null;\n\tif (arguments.length === 1) {\n\t\tlet pt = arguments[0];\n\t\tNode.call(this, pt, new DirectedEdgeStar());\n\t} else if (arguments.length === 2) {\n\t\tlet pt = arguments[0], deStar = arguments[1];\n\t\tthis._pt = pt;\n\t\tthis._deStar = deStar;\n\t}\n}\ninherits(Node, GraphComponent);\nextend(Node.prototype, {\n\tisRemoved: function () {\n\t\treturn this._pt === null;\n\t},\n\taddOutEdge: function (de) {\n\t\tthis._deStar.add(de);\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._pt;\n\t},\n\tgetOutEdges: function () {\n\t\treturn this._deStar;\n\t},\n\tremove: function () {\n\t\tif (arguments.length === 0) {\n\t\t\tthis._pt = null;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet de = arguments[0];\n\t\t\tthis._deStar.remove(de);\n\t\t}\n\t},\n\tgetIndex: function (edge) {\n\t\treturn this._deStar.getIndex(edge);\n\t},\n\tgetDegree: function () {\n\t\treturn this._deStar.getDegree();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Node;\n\t}\n});\nNode.getEdgesBetween = function (node0, node1) {\n\tvar edges0 = DirectedEdge.toEdges(node0.getOutEdges().getEdges());\n\tvar commonEdges = new HashSet(edges0);\n\tvar edges1 = DirectedEdge.toEdges(node1.getOutEdges().getEdges());\n\tcommonEdges.retainAll(edges1);\n\treturn commonEdges;\n};\n","import extend from '../../../../../extend';\nimport Edge from '../../planargraph/Edge';\nimport inherits from '../../../../../inherits';\nexport default function LineMergeEdge() {\n\tEdge.apply(this);\n\tthis._line = null;\n\tlet line = arguments[0];\n\tthis._line = line;\n}\ninherits(LineMergeEdge, Edge);\nextend(LineMergeEdge.prototype, {\n\tgetLine: function () {\n\t\treturn this._line;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineMergeEdge;\n\t}\n});\n","import extend from '../../../../extend';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default function NodeMap() {\n\tthis._nodeMap = new TreeMap();\n}\nextend(NodeMap.prototype, {\n\tfind: function (coord) {\n\t\treturn this._nodeMap.get(coord);\n\t},\n\titerator: function () {\n\t\treturn this._nodeMap.values().iterator();\n\t},\n\tremove: function (pt) {\n\t\treturn this._nodeMap.remove(pt);\n\t},\n\tvalues: function () {\n\t\treturn this._nodeMap.values();\n\t},\n\tadd: function (n) {\n\t\tthis._nodeMap.put(n.getCoordinate(), n);\n\t\treturn n;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn NodeMap;\n\t}\n});\n","import HashSet from '../../../../java/util/HashSet';\nimport Node from './Node';\nimport extend from '../../../../extend';\nimport NodeMap from './NodeMap';\nimport DirectedEdge from './DirectedEdge';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Edge from './Edge';\nexport default function PlanarGraph() {\n\tthis._edges = new HashSet();\n\tthis._dirEdges = new HashSet();\n\tthis._nodeMap = new NodeMap();\n}\nextend(PlanarGraph.prototype, {\n\tfindNodesOfDegree: function (degree) {\n\t\tvar nodesFound = new ArrayList();\n\t\tfor (var i = this.nodeIterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (node.getDegree() === degree) nodesFound.add(node);\n\t\t}\n\t\treturn nodesFound;\n\t},\n\tdirEdgeIterator: function () {\n\t\treturn this._dirEdges.iterator();\n\t},\n\tedgeIterator: function () {\n\t\treturn this._edges.iterator();\n\t},\n\tremove: function () {\n\t\tif (arguments[0] instanceof Edge) {\n\t\t\tlet edge = arguments[0];\n\t\t\tthis.remove(edge.getDirEdge(0));\n\t\t\tthis.remove(edge.getDirEdge(1));\n\t\t\tthis._edges.remove(edge);\n\t\t\tedge.remove();\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet de = arguments[0];\n\t\t\tvar sym = de.getSym();\n\t\t\tif (sym !== null) sym.setSym(null);\n\t\t\tde.getFromNode().remove(de);\n\t\t\tde.remove();\n\t\t\tthis._dirEdges.remove(de);\n\t\t} else if (arguments[0] instanceof Node) {\n\t\t\tlet node = arguments[0];\n\t\t\tvar outEdges = node.getOutEdges().getEdges();\n\t\t\tfor (var i = outEdges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tvar sym = de.getSym();\n\t\t\t\tif (sym !== null) this.remove(sym);\n\t\t\t\tthis._dirEdges.remove(de);\n\t\t\t\tvar edge = de.getEdge();\n\t\t\t\tif (edge !== null) {\n\t\t\t\t\tthis._edges.remove(edge);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._nodeMap.remove(node.getCoordinate());\n\t\t\tnode.remove();\n\t\t}\n\t},\n\tfindNode: function (pt) {\n\t\treturn this._nodeMap.find(pt);\n\t},\n\tgetEdges: function () {\n\t\treturn this._edges;\n\t},\n\tnodeIterator: function () {\n\t\treturn this._nodeMap.iterator();\n\t},\n\tcontains: function () {\n\t\tif (arguments[0] instanceof Edge) {\n\t\t\tlet e = arguments[0];\n\t\t\treturn this._edges.contains(e);\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet de = arguments[0];\n\t\t\treturn this._dirEdges.contains(de);\n\t\t}\n\t},\n\tadd: function () {\n\t\tif (arguments[0] instanceof Node) {\n\t\t\tlet node = arguments[0];\n\t\t\tthis._nodeMap.add(node);\n\t\t} else if (arguments[0] instanceof Edge) {\n\t\t\tlet edge = arguments[0];\n\t\t\tthis._edges.add(edge);\n\t\t\tthis.add(edge.getDirEdge(0));\n\t\t\tthis.add(edge.getDirEdge(1));\n\t\t} else if (arguments[0] instanceof DirectedEdge) {\n\t\t\tlet dirEdge = arguments[0];\n\t\t\tthis._dirEdges.add(dirEdge);\n\t\t}\n\t},\n\tgetNodes: function () {\n\t\treturn this._nodeMap.values();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PlanarGraph;\n\t}\n});\n","import LineMergeDirectedEdge from './LineMergeDirectedEdge';\nimport Node from '../../planargraph/Node';\nimport extend from '../../../../../extend';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport LineMergeEdge from './LineMergeEdge';\nimport inherits from '../../../../../inherits';\nimport PlanarGraph from '../../planargraph/PlanarGraph';\nexport default function LineMergeGraph() {\n\tPlanarGraph.apply(this);\n}\ninherits(LineMergeGraph, PlanarGraph);\nextend(LineMergeGraph.prototype, {\n\taddEdge: function (lineString) {\n\t\tif (lineString.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\tvar coordinates = CoordinateArrays.removeRepeatedPoints(lineString.getCoordinates());\n\t\tif (coordinates.length <= 1) return null;\n\t\tvar startCoordinate = coordinates[0];\n\t\tvar endCoordinate = coordinates[coordinates.length - 1];\n\t\tvar startNode = this.getNode(startCoordinate);\n\t\tvar endNode = this.getNode(endCoordinate);\n\t\tvar directedEdge0 = new LineMergeDirectedEdge(startNode, endNode, coordinates[1], true);\n\t\tvar directedEdge1 = new LineMergeDirectedEdge(endNode, startNode, coordinates[coordinates.length - 2], false);\n\t\tvar edge = new LineMergeEdge(lineString);\n\t\tedge.setDirectedEdges(directedEdge0, directedEdge1);\n\t\tthis.add(edge);\n\t},\n\tgetNode: function (coordinate) {\n\t\tvar node = this.findNode(coordinate);\n\t\tif (node === null) {\n\t\t\tnode = new Node(coordinate);\n\t\t\tthis.add(node);\n\t\t}\n\t\treturn node;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineMergeGraph;\n\t}\n});\n","import LineString from '../../geom/LineString';\nimport Geometry from '../../geom/Geometry';\nimport hasInterface from '../../../../../hasInterface';\nimport Collection from '../../../../../java/util/Collection';\nimport EdgeString from './EdgeString';\nimport extend from '../../../../../extend';\nimport LineMergeGraph from './LineMergeGraph';\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport GraphComponent from '../../planargraph/GraphComponent';\nexport default function LineMerger() {\n\tthis._graph = new LineMergeGraph();\n\tthis._mergedLineStrings = null;\n\tthis._factory = null;\n\tthis._edgeStrings = null;\n}\nextend(LineMerger.prototype, {\n\tbuildEdgeStringsForUnprocessedNodes: function () {\n\t\tfor (var i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (!node.isMarked()) {\n\t\t\t\tAssert.isTrue(node.getDegree() === 2);\n\t\t\t\tthis.buildEdgeStringsStartingAt(node);\n\t\t\t\tnode.setMarked(true);\n\t\t\t}\n\t\t}\n\t},\n\tbuildEdgeStringsForNonDegree2Nodes: function () {\n\t\tfor (var i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n\t\t\tvar node = i.next();\n\t\t\tif (node.getDegree() !== 2) {\n\t\t\t\tthis.buildEdgeStringsStartingAt(node);\n\t\t\t\tnode.setMarked(true);\n\t\t\t}\n\t\t}\n\t},\n\tbuildEdgeStringsForObviousStartNodes: function () {\n\t\tthis.buildEdgeStringsForNonDegree2Nodes();\n\t},\n\tgetMergedLineStrings: function () {\n\t\tthis.merge();\n\t\treturn this._mergedLineStrings;\n\t},\n\tbuildEdgeStringsStartingAt: function (node) {\n\t\tfor (var i = node.getOutEdges().iterator(); i.hasNext(); ) {\n\t\t\tvar directedEdge = i.next();\n\t\t\tif (directedEdge.getEdge().isMarked()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._edgeStrings.add(this.buildEdgeStringStartingWith(directedEdge));\n\t\t}\n\t},\n\tmerge: function () {\n\t\tif (this._mergedLineStrings !== null) {\n\t\t\treturn null;\n\t\t}\n\t\tGraphComponent.setMarked(this._graph.nodeIterator(), false);\n\t\tGraphComponent.setMarked(this._graph.edgeIterator(), false);\n\t\tthis._edgeStrings = new ArrayList();\n\t\tthis.buildEdgeStringsForObviousStartNodes();\n\t\tthis.buildEdgeStringsForIsolatedLoops();\n\t\tthis._mergedLineStrings = new ArrayList();\n\t\tfor (var i = this._edgeStrings.iterator(); i.hasNext(); ) {\n\t\t\tvar edgeString = i.next();\n\t\t\tthis._mergedLineStrings.add(edgeString.toLineString());\n\t\t}\n\t},\n\tbuildEdgeStringStartingWith: function (start) {\n\t\tvar edgeString = new EdgeString(this._factory);\n\t\tvar current = start;\n\t\tdo {\n\t\t\tedgeString.add(current);\n\t\t\tcurrent.getEdge().setMarked(true);\n\t\t\tcurrent = current.getNext();\n\t\t} while (current !== null && current !== start);\n\t\treturn edgeString;\n\t},\n\tadd: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geometry = arguments[0];\n\t\t\tgeometry.apply({\n\t\t\t\tinterfaces_: function () {\n\t\t\t\t\treturn [GeometryComponentFilter];\n\t\t\t\t},\n\t\t\t\tfilter: function (component) {\n\t\t\t\t\tif (component instanceof LineString) {\n\t\t\t\t\t\tthis.add(component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geometries = arguments[0];\n\t\t\tthis._mergedLineStrings = null;\n\t\t\tfor (var i = geometries.iterator(); i.hasNext(); ) {\n\t\t\t\tvar geometry = i.next();\n\t\t\t\tthis.add(geometry);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof LineString) {\n\t\t\tlet lineString = arguments[0];\n\t\t\tif (this._factory === null) {\n\t\t\t\tthis._factory = lineString.getFactory();\n\t\t\t}\n\t\t\tthis._graph.addEdge(lineString);\n\t\t}\n\t},\n\tbuildEdgeStringsForIsolatedLoops: function () {\n\t\tthis.buildEdgeStringsForUnprocessedNodes();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineMerger;\n\t}\n});\n","import WKTWriter from '../io/WKTWriter';\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence';\nimport Octant from './Octant';\nimport extend from '../../../../extend';\nimport SegmentString from './SegmentString';\nexport default function BasicSegmentString() {\n\tthis._pts = null;\n\tthis._data = null;\n\tlet pts = arguments[0], data = arguments[1];\n\tthis._pts = pts;\n\tthis._data = data;\n}\nextend(BasicSegmentString.prototype, {\n\tgetCoordinates: function () {\n\t\treturn this._pts;\n\t},\n\tsize: function () {\n\t\treturn this._pts.length;\n\t},\n\tgetCoordinate: function (i) {\n\t\treturn this._pts[i];\n\t},\n\tisClosed: function () {\n\t\treturn this._pts[0].equals(this._pts[this._pts.length - 1]);\n\t},\n\tgetSegmentOctant: function (index) {\n\t\tif (index === this._pts.length - 1) return -1;\n\t\treturn Octant.octant(this.getCoordinate(index), this.getCoordinate(index + 1));\n\t},\n\tsetData: function (data) {\n\t\tthis._data = data;\n\t},\n\tgetData: function () {\n\t\treturn this._data;\n\t},\n\ttoString: function () {\n\t\treturn WKTWriter.toLineString(new CoordinateArraySequence(this._pts));\n\t},\n\tinterfaces_: function () {\n\t\treturn [SegmentString];\n\t},\n\tgetClass: function () {\n\t\treturn BasicSegmentString;\n\t}\n});\n","import extend from '../../../../extend';\nimport SegmentIntersector from './SegmentIntersector';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function InteriorIntersectionFinder() {\n\tthis._findAllIntersections = false;\n\tthis._isCheckEndSegmentsOnly = false;\n\tthis._li = null;\n\tthis._interiorIntersection = null;\n\tthis._intSegments = null;\n\tthis._intersections = new ArrayList();\n\tthis._intersectionCount = 0;\n\tthis._keepIntersections = true;\n\tlet li = arguments[0];\n\tthis._li = li;\n\tthis._interiorIntersection = null;\n}\nextend(InteriorIntersectionFinder.prototype, {\n\tgetInteriorIntersection: function () {\n\t\treturn this._interiorIntersection;\n\t},\n\tsetCheckEndSegmentsOnly: function (isCheckEndSegmentsOnly) {\n\t\tthis._isCheckEndSegmentsOnly = isCheckEndSegmentsOnly;\n\t},\n\tgetIntersectionSegments: function () {\n\t\treturn this._intSegments;\n\t},\n\tcount: function () {\n\t\treturn this._intersectionCount;\n\t},\n\tgetIntersections: function () {\n\t\treturn this._intersections;\n\t},\n\tsetFindAllIntersections: function (findAllIntersections) {\n\t\tthis._findAllIntersections = findAllIntersections;\n\t},\n\tsetKeepIntersections: function (keepIntersections) {\n\t\tthis._keepIntersections = keepIntersections;\n\t},\n\tprocessIntersections: function (e0, segIndex0, e1, segIndex1) {\n\t\tif (!this._findAllIntersections && this.hasIntersection()) return null;\n\t\tif (e0 === e1 && segIndex0 === segIndex1) return null;\n\t\tif (this._isCheckEndSegmentsOnly) {\n\t\t\tvar isEndSegPresent = this.isEndSegment(e0, segIndex0) || this.isEndSegment(e1, segIndex1);\n\t\t\tif (!isEndSegPresent) return null;\n\t\t}\n\t\tvar p00 = e0.getCoordinates()[segIndex0];\n\t\tvar p01 = e0.getCoordinates()[segIndex0 + 1];\n\t\tvar p10 = e1.getCoordinates()[segIndex1];\n\t\tvar p11 = e1.getCoordinates()[segIndex1 + 1];\n\t\tthis._li.computeIntersection(p00, p01, p10, p11);\n\t\tif (this._li.hasIntersection()) {\n\t\t\tif (this._li.isInteriorIntersection()) {\n\t\t\t\tthis._intSegments = new Array(4).fill(null);\n\t\t\t\tthis._intSegments[0] = p00;\n\t\t\t\tthis._intSegments[1] = p01;\n\t\t\t\tthis._intSegments[2] = p10;\n\t\t\t\tthis._intSegments[3] = p11;\n\t\t\t\tthis._interiorIntersection = this._li.getIntersection(0);\n\t\t\t\tif (this._keepIntersections) this._intersections.add(this._interiorIntersection);\n\t\t\t\tthis._intersectionCount++;\n\t\t\t}\n\t\t}\n\t},\n\tisEndSegment: function (segStr, index) {\n\t\tif (index === 0) return true;\n\t\tif (index >= segStr.size() - 2) return true;\n\t\treturn false;\n\t},\n\thasIntersection: function () {\n\t\treturn this._interiorIntersection !== null;\n\t},\n\tisDone: function () {\n\t\tif (this._findAllIntersections) return false;\n\t\treturn this._interiorIntersection !== null;\n\t},\n\tinterfaces_: function () {\n\t\treturn [SegmentIntersector];\n\t},\n\tgetClass: function () {\n\t\treturn InteriorIntersectionFinder;\n\t}\n});\nInteriorIntersectionFinder.createAllIntersectionsFinder = function (li) {\n\tvar finder = new InteriorIntersectionFinder(li);\n\tfinder.setFindAllIntersections(true);\n\treturn finder;\n};\nInteriorIntersectionFinder.createAnyIntersectionFinder = function (li) {\n\treturn new InteriorIntersectionFinder(li);\n};\nInteriorIntersectionFinder.createIntersectionCounter = function (li) {\n\tvar finder = new InteriorIntersectionFinder(li);\n\tfinder.setFindAllIntersections(true);\n\tfinder.setKeepIntersections(false);\n\treturn finder;\n};\n","import WKTWriter from '../io/WKTWriter';\nimport MCIndexNoder from './MCIndexNoder';\nimport TopologyException from '../geom/TopologyException';\nimport extend from '../../../../extend';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nimport InteriorIntersectionFinder from './InteriorIntersectionFinder';\nexport default function FastNodingValidator() {\n\tthis._li = new RobustLineIntersector();\n\tthis._segStrings = null;\n\tthis._findAllIntersections = false;\n\tthis._segInt = null;\n\tthis._isValid = true;\n\tlet segStrings = arguments[0];\n\tthis._segStrings = segStrings;\n}\nextend(FastNodingValidator.prototype, {\n\texecute: function () {\n\t\tif (this._segInt !== null) return null;\n\t\tthis.checkInteriorIntersections();\n\t},\n\tgetIntersections: function () {\n\t\treturn this._segInt.getIntersections();\n\t},\n\tisValid: function () {\n\t\tthis.execute();\n\t\treturn this._isValid;\n\t},\n\tsetFindAllIntersections: function (findAllIntersections) {\n\t\tthis._findAllIntersections = findAllIntersections;\n\t},\n\tcheckInteriorIntersections: function () {\n\t\tthis._isValid = true;\n\t\tthis._segInt = new InteriorIntersectionFinder(this._li);\n\t\tthis._segInt.setFindAllIntersections(this._findAllIntersections);\n\t\tvar noder = new MCIndexNoder();\n\t\tnoder.setSegmentIntersector(this._segInt);\n\t\tnoder.computeNodes(this._segStrings);\n\t\tif (this._segInt.hasIntersection()) {\n\t\t\tthis._isValid = false;\n\t\t\treturn null;\n\t\t}\n\t},\n\tcheckValid: function () {\n\t\tthis.execute();\n\t\tif (!this._isValid) throw new TopologyException(this.getErrorMessage(), this._segInt.getInteriorIntersection());\n\t},\n\tgetErrorMessage: function () {\n\t\tif (this._isValid) return \"no intersections found\";\n\t\tvar intSegs = this._segInt.getIntersectionSegments();\n\t\treturn \"found non-noded intersection between \" + WKTWriter.toLineString(intSegs[0], intSegs[1]) + \" and \" + WKTWriter.toLineString(intSegs[2], intSegs[3]);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn FastNodingValidator;\n\t}\n});\nFastNodingValidator.computeIntersections = function (segStrings) {\n\tvar nv = new FastNodingValidator(segStrings);\n\tnv.setFindAllIntersections(true);\n\tnv.isValid();\n\treturn nv.getIntersections();\n};\n","import BasicSegmentString from '../noding/BasicSegmentString';\nimport extend from '../../../../extend';\nimport FastNodingValidator from '../noding/FastNodingValidator';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function EdgeNodingValidator() {\n\tthis._nv = null;\n\tlet edges = arguments[0];\n\tthis._nv = new FastNodingValidator(EdgeNodingValidator.toSegmentStrings(edges));\n}\nextend(EdgeNodingValidator.prototype, {\n\tcheckValid: function () {\n\t\tthis._nv.checkValid();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeNodingValidator;\n\t}\n});\nEdgeNodingValidator.toSegmentStrings = function (edges) {\n\tvar segStrings = new ArrayList();\n\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\tvar e = i.next();\n\t\tsegStrings.add(new BasicSegmentString(e.getCoordinates(), e));\n\t}\n\treturn segStrings;\n};\nEdgeNodingValidator.checkValid = function (edges) {\n\tvar validator = new EdgeNodingValidator(edges);\n\tvalidator.checkValid();\n};\n","import GeometryFactory from '../GeometryFactory';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function GeometryCollectionMapper() {\n\tthis._mapOp = null;\n\tlet mapOp = arguments[0];\n\tthis._mapOp = mapOp;\n}\nextend(GeometryCollectionMapper.prototype, {\n\tmap: function (gc) {\n\t\tvar mapped = new ArrayList();\n\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\tvar g = this._mapOp.map(gc.getGeometryN(i));\n\t\t\tif (!g.isEmpty()) mapped.add(g);\n\t\t}\n\t\treturn gc.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(mapped));\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryCollectionMapper;\n\t}\n});\nGeometryCollectionMapper.map = function (gc, op) {\n\tvar mapper = new GeometryCollectionMapper(op);\n\treturn mapper.map(gc);\n};\n","import extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport OverlayOp from './OverlayOp';\nexport default function LineBuilder() {\n\tthis._op = null;\n\tthis._geometryFactory = null;\n\tthis._ptLocator = null;\n\tthis._lineEdgesList = new ArrayList();\n\tthis._resultLineList = new ArrayList();\n\tlet op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2];\n\tthis._op = op;\n\tthis._geometryFactory = geometryFactory;\n\tthis._ptLocator = ptLocator;\n}\nextend(LineBuilder.prototype, {\n\tcollectLines: function (opCode) {\n\t\tfor (var it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tthis.collectLineEdge(de, opCode, this._lineEdgesList);\n\t\t\tthis.collectBoundaryTouchEdge(de, opCode, this._lineEdgesList);\n\t\t}\n\t},\n\tlabelIsolatedLine: function (e, targetIndex) {\n\t\tvar loc = this._ptLocator.locate(e.getCoordinate(), this._op.getArgGeometry(targetIndex));\n\t\te.getLabel().setLocation(targetIndex, loc);\n\t},\n\tbuild: function (opCode) {\n\t\tthis.findCoveredLineEdges();\n\t\tthis.collectLines(opCode);\n\t\tthis.buildLines(opCode);\n\t\treturn this._resultLineList;\n\t},\n\tcollectLineEdge: function (de, opCode, edges) {\n\t\tvar label = de.getLabel();\n\t\tvar e = de.getEdge();\n\t\tif (de.isLineEdge()) {\n\t\t\tif (!de.isVisited() && OverlayOp.isResultOfOp(label, opCode) && !e.isCovered()) {\n\t\t\t\tedges.add(e);\n\t\t\t\tde.setVisitedEdge(true);\n\t\t\t}\n\t\t}\n\t},\n\tfindCoveredLineEdges: function () {\n\t\tfor (var nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().findCoveredLineEdges();\n\t\t}\n\t\tfor (var it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar e = de.getEdge();\n\t\t\tif (de.isLineEdge() && !e.isCoveredSet()) {\n\t\t\t\tvar isCovered = this._op.isCoveredByA(de.getCoordinate());\n\t\t\t\te.setCovered(isCovered);\n\t\t\t}\n\t\t}\n\t},\n\tlabelIsolatedLines: function (edgesList) {\n\t\tfor (var it = edgesList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tif (e.isIsolated()) {\n\t\t\t\tif (label.isNull(0)) this.labelIsolatedLine(e, 0); else this.labelIsolatedLine(e, 1);\n\t\t\t}\n\t\t}\n\t},\n\tbuildLines: function (opCode) {\n\t\tfor (var it = this._lineEdgesList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar label = e.getLabel();\n\t\t\tvar line = this._geometryFactory.createLineString(e.getCoordinates());\n\t\t\tthis._resultLineList.add(line);\n\t\t\te.setInResult(true);\n\t\t}\n\t},\n\tcollectBoundaryTouchEdge: function (de, opCode, edges) {\n\t\tvar label = de.getLabel();\n\t\tif (de.isLineEdge()) return null;\n\t\tif (de.isVisited()) return null;\n\t\tif (de.isInteriorAreaEdge()) return null;\n\t\tif (de.getEdge().isInResult()) return null;\n\t\tAssert.isTrue(!(de.isInResult() || de.getSym().isInResult()) || !de.getEdge().isInResult());\n\t\tif (OverlayOp.isResultOfOp(label, opCode) && opCode === OverlayOp.INTERSECTION) {\n\t\t\tedges.add(de.getEdge());\n\t\t\tde.setVisitedEdge(true);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineBuilder;\n\t}\n});\n","import extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport OverlayOp from './OverlayOp';\nexport default function PointBuilder() {\n\tthis._op = null;\n\tthis._geometryFactory = null;\n\tthis._resultPointList = new ArrayList();\n\tlet op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2];\n\tthis._op = op;\n\tthis._geometryFactory = geometryFactory;\n}\nextend(PointBuilder.prototype, {\n\tfilterCoveredNodeToPoint: function (n) {\n\t\tvar coord = n.getCoordinate();\n\t\tif (!this._op.isCoveredByLA(coord)) {\n\t\t\tvar pt = this._geometryFactory.createPoint(coord);\n\t\t\tthis._resultPointList.add(pt);\n\t\t}\n\t},\n\textractNonCoveredResultNodes: function (opCode) {\n\t\tfor (var nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar n = nodeit.next();\n\t\t\tif (n.isInResult()) continue;\n\t\t\tif (n.isIncidentEdgeInResult()) continue;\n\t\t\tif (n.getEdges().getDegree() === 0 || opCode === OverlayOp.INTERSECTION) {\n\t\t\t\tvar label = n.getLabel();\n\t\t\t\tif (OverlayOp.isResultOfOp(label, opCode)) {\n\t\t\t\t\tthis.filterCoveredNodeToPoint(n);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbuild: function (opCode) {\n\t\tthis.extractNonCoveredResultNodes(opCode);\n\t\treturn this._resultPointList;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PointBuilder;\n\t}\n});\n","import LineString from '../../../geom/LineString';\nimport CoordinateList from '../../../geom/CoordinateList';\nimport Coordinate from '../../../geom/Coordinate';\nimport Double from '../../../../../../java/lang/Double';\nimport extend from '../../../../../../extend';\nimport LineSegment from '../../../geom/LineSegment';\nexport default function LineStringSnapper() {\n\tthis._snapTolerance = 0.0;\n\tthis._srcPts = null;\n\tthis._seg = new LineSegment();\n\tthis._allowSnappingToSourceVertices = false;\n\tthis._isClosed = false;\n\tif (arguments[0] instanceof LineString && typeof arguments[1] === \"number\") {\n\t\tlet srcLine = arguments[0], snapTolerance = arguments[1];\n\t\tLineStringSnapper.call(this, srcLine.getCoordinates(), snapTolerance);\n\t} else if (arguments[0] instanceof Array && typeof arguments[1] === \"number\") {\n\t\tlet srcPts = arguments[0], snapTolerance = arguments[1];\n\t\tthis._srcPts = srcPts;\n\t\tthis._isClosed = LineStringSnapper.isClosed(srcPts);\n\t\tthis._snapTolerance = snapTolerance;\n\t}\n}\nextend(LineStringSnapper.prototype, {\n\tsnapVertices: function (srcCoords, snapPts) {\n\t\tvar end = this._isClosed ? srcCoords.size() - 1 : srcCoords.size();\n\t\tfor (var i = 0; i < end; i++) {\n\t\t\tvar srcPt = srcCoords.get(i);\n\t\t\tvar snapVert = this.findSnapForVertex(srcPt, snapPts);\n\t\t\tif (snapVert !== null) {\n\t\t\t\tsrcCoords.set(i, new Coordinate(snapVert));\n\t\t\t\tif (i === 0 && this._isClosed) srcCoords.set(srcCoords.size() - 1, new Coordinate(snapVert));\n\t\t\t}\n\t\t}\n\t},\n\tfindSnapForVertex: function (pt, snapPts) {\n\t\tfor (var i = 0; i < snapPts.length; i++) {\n\t\t\tif (pt.equals2D(snapPts[i])) return null;\n\t\t\tif (pt.distance(snapPts[i]) < this._snapTolerance) return snapPts[i];\n\t\t}\n\t\treturn null;\n\t},\n\tsnapTo: function (snapPts) {\n\t\tvar coordList = new CoordinateList(this._srcPts);\n\t\tthis.snapVertices(coordList, snapPts);\n\t\tthis.snapSegments(coordList, snapPts);\n\t\tvar newPts = coordList.toCoordinateArray();\n\t\treturn newPts;\n\t},\n\tsnapSegments: function (srcCoords, snapPts) {\n\t\tif (snapPts.length === 0) return null;\n\t\tvar distinctPtCount = snapPts.length;\n\t\tif (snapPts[0].equals2D(snapPts[snapPts.length - 1])) distinctPtCount = snapPts.length - 1;\n\t\tfor (var i = 0; i < distinctPtCount; i++) {\n\t\t\tvar snapPt = snapPts[i];\n\t\t\tvar index = this.findSegmentIndexToSnap(snapPt, srcCoords);\n\t\t\tif (index >= 0) {\n\t\t\t\tsrcCoords.add(index + 1, new Coordinate(snapPt), false);\n\t\t\t}\n\t\t}\n\t},\n\tfindSegmentIndexToSnap: function (snapPt, srcCoords) {\n\t\tvar minDist = Double.MAX_VALUE;\n\t\tvar snapIndex = -1;\n\t\tfor (var i = 0; i < srcCoords.size() - 1; i++) {\n\t\t\tthis._seg.p0 = srcCoords.get(i);\n\t\t\tthis._seg.p1 = srcCoords.get(i + 1);\n\t\t\tif (this._seg.p0.equals2D(snapPt) || this._seg.p1.equals2D(snapPt)) {\n\t\t\t\tif (this._allowSnappingToSourceVertices) continue; else return -1;\n\t\t\t}\n\t\t\tvar dist = this._seg.distance(snapPt);\n\t\t\tif (dist < this._snapTolerance && dist < minDist) {\n\t\t\t\tminDist = dist;\n\t\t\t\tsnapIndex = i;\n\t\t\t}\n\t\t}\n\t\treturn snapIndex;\n\t},\n\tsetAllowSnappingToSourceVertices: function (allowSnappingToSourceVertices) {\n\t\tthis._allowSnappingToSourceVertices = allowSnappingToSourceVertices;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineStringSnapper;\n\t}\n});\nLineStringSnapper.isClosed = function (pts) {\n\tif (pts.length <= 1) return false;\n\treturn pts[0].equals2D(pts[pts.length - 1]);\n};\n","import TreeSet from '../../../../../../java/util/TreeSet';\nimport GeometryTransformer from '../../../geom/util/GeometryTransformer';\nimport hasInterface from '../../../../../../hasInterface';\nimport Double from '../../../../../../java/lang/Double';\nimport extend from '../../../../../../extend';\nimport LineStringSnapper from './LineStringSnapper';\nimport PrecisionModel from '../../../geom/PrecisionModel';\nimport Polygonal from '../../../geom/Polygonal';\nimport inherits from '../../../../../../inherits';\nexport default function GeometrySnapper() {\n\tthis._srcGeom = null;\n\tlet srcGeom = arguments[0];\n\tthis._srcGeom = srcGeom;\n}\nextend(GeometrySnapper.prototype, {\n\tsnapTo: function (snapGeom, snapTolerance) {\n\t\tvar snapPts = this.extractTargetCoordinates(snapGeom);\n\t\tvar snapTrans = new SnapTransformer(snapTolerance, snapPts);\n\t\treturn snapTrans.transform(this._srcGeom);\n\t},\n\tsnapToSelf: function (snapTolerance, cleanResult) {\n\t\tvar snapPts = this.extractTargetCoordinates(this._srcGeom);\n\t\tvar snapTrans = new SnapTransformer(snapTolerance, snapPts, true);\n\t\tvar snappedGeom = snapTrans.transform(this._srcGeom);\n\t\tvar result = snappedGeom;\n\t\tif (cleanResult && hasInterface(result, Polygonal)) {\n\t\t\tresult = snappedGeom.buffer(0);\n\t\t}\n\t\treturn result;\n\t},\n\tcomputeSnapTolerance: function (ringPts) {\n\t\tvar minSegLen = this.computeMinimumSegmentLength(ringPts);\n\t\tvar snapTol = minSegLen / 10;\n\t\treturn snapTol;\n\t},\n\textractTargetCoordinates: function (g) {\n\t\tvar ptSet = new TreeSet();\n\t\tvar pts = g.getCoordinates();\n\t\tfor (var i = 0; i < pts.length; i++) {\n\t\t\tptSet.add(pts[i]);\n\t\t}\n\t\treturn ptSet.toArray(new Array(0).fill(null));\n\t},\n\tcomputeMinimumSegmentLength: function (pts) {\n\t\tvar minSegLen = Double.MAX_VALUE;\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tvar segLen = pts[i].distance(pts[i + 1]);\n\t\t\tif (segLen < minSegLen) minSegLen = segLen;\n\t\t}\n\t\treturn minSegLen;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometrySnapper;\n\t}\n});\nGeometrySnapper.snap = function (g0, g1, snapTolerance) {\n\tvar snapGeom = new Array(2).fill(null);\n\tvar snapper0 = new GeometrySnapper(g0);\n\tsnapGeom[0] = snapper0.snapTo(g1, snapTolerance);\n\tvar snapper1 = new GeometrySnapper(g1);\n\tsnapGeom[1] = snapper1.snapTo(snapGeom[0], snapTolerance);\n\treturn snapGeom;\n};\nGeometrySnapper.computeOverlaySnapTolerance = function () {\n\tif (arguments.length === 1) {\n\t\tlet g = arguments[0];\n\t\tvar snapTolerance = GeometrySnapper.computeSizeBasedSnapTolerance(g);\n\t\tvar pm = g.getPrecisionModel();\n\t\tif (pm.getType() === PrecisionModel.FIXED) {\n\t\t\tvar fixedSnapTol = 1 / pm.getScale() * 2 / 1.415;\n\t\t\tif (fixedSnapTol > snapTolerance) snapTolerance = fixedSnapTol;\n\t\t}\n\t\treturn snapTolerance;\n\t} else if (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\treturn Math.min(GeometrySnapper.computeOverlaySnapTolerance(g0), GeometrySnapper.computeOverlaySnapTolerance(g1));\n\t}\n};\nGeometrySnapper.computeSizeBasedSnapTolerance = function (g) {\n\tvar env = g.getEnvelopeInternal();\n\tvar minDimension = Math.min(env.getHeight(), env.getWidth());\n\tvar snapTol = minDimension * GeometrySnapper.SNAP_PRECISION_FACTOR;\n\treturn snapTol;\n};\nGeometrySnapper.snapToSelf = function (geom, snapTolerance, cleanResult) {\n\tvar snapper0 = new GeometrySnapper(geom);\n\treturn snapper0.snapToSelf(snapTolerance, cleanResult);\n};\nGeometrySnapper.SNAP_PRECISION_FACTOR = 1e-9;\nfunction SnapTransformer() {\n\tGeometryTransformer.apply(this);\n\tthis._snapTolerance = null;\n\tthis._snapPts = null;\n\tthis._isSelfSnap = false;\n\tif (arguments.length === 2) {\n\t\tlet snapTolerance = arguments[0], snapPts = arguments[1];\n\t\tthis._snapTolerance = snapTolerance;\n\t\tthis._snapPts = snapPts;\n\t} else if (arguments.length === 3) {\n\t\tlet snapTolerance = arguments[0], snapPts = arguments[1], isSelfSnap = arguments[2];\n\t\tthis._snapTolerance = snapTolerance;\n\t\tthis._snapPts = snapPts;\n\t\tthis._isSelfSnap = isSelfSnap;\n\t}\n}\ninherits(SnapTransformer, GeometryTransformer);\nextend(SnapTransformer.prototype, {\n\tsnapLine: function (srcPts, snapPts) {\n\t\tvar snapper = new LineStringSnapper(srcPts, this._snapTolerance);\n\t\tsnapper.setAllowSnappingToSourceVertices(this._isSelfSnap);\n\t\treturn snapper.snapTo(snapPts);\n\t},\n\ttransformCoordinates: function (coords, parent) {\n\t\tvar srcPts = coords.toCoordinateArray();\n\t\tvar newPts = this.snapLine(srcPts, this._snapPts);\n\t\treturn this._factory.getCoordinateSequenceFactory().create(newPts);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SnapTransformer;\n\t}\n});\n","import Double from '../../../../java/lang/Double';\nimport Long from '../../../../java/lang/Long';\nimport extend from '../../../../extend';\nexport default function CommonBits() {\n\tthis._isFirst = true;\n\tthis._commonMantissaBitsCount = 53;\n\tthis._commonBits = new Long();\n\tthis._commonSignExp = null;\n}\nextend(CommonBits.prototype, {\n\tgetCommon: function () {\n\t\treturn Double.longBitsToDouble(this._commonBits);\n\t},\n\tadd: function (num) {\n\t\tvar numBits = Double.doubleToLongBits(num);\n\t\tif (this._isFirst) {\n\t\t\tthis._commonBits = numBits;\n\t\t\tthis._commonSignExp = CommonBits.signExpBits(this._commonBits);\n\t\t\tthis._isFirst = false;\n\t\t\treturn null;\n\t\t}\n\t\tvar numSignExp = CommonBits.signExpBits(numBits);\n\t\tif (numSignExp !== this._commonSignExp) {\n\t\t\tthis._commonBits.high = 0 | 0;\n\t\t\tthis._commonBits.low = 0 | 0;\n\t\t\treturn null;\n\t\t}\n\t\tthis._commonMantissaBitsCount = CommonBits.numCommonMostSigMantissaBits(this._commonBits, numBits);\n\t\tthis._commonBits = CommonBits.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount));\n\t},\n\ttoString: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet bits = arguments[0];\n\t\t\tvar x = Double.longBitsToDouble(bits);\n\t\t\tvar numStr = Long.toBinaryString(bits);\n\t\t\tvar padStr = \"0000000000000000000000000000000000000000000000000000000000000000\" + numStr;\n\t\t\tvar bitStr = padStr.substring(padStr.length - 64);\n\t\t\tvar str = bitStr.substring(0, 1) + \" \" + bitStr.substring(1, 12) + \"(exp) \" + bitStr.substring(12) + \" [ \" + x + \" ]\";\n\t\t\treturn str;\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CommonBits;\n\t}\n});\nCommonBits.getBit = function (bits, i) {\n\tvar mask = (1 << (i % 32));\n\tif (i < 32) {\n\t\treturn (bits.low & mask) != 0 ? 1 : 0;\n\t}\n\treturn (bits.high & mask) != 0 ? 1 : 0;\n};\nCommonBits.signExpBits = function (num) {\n\treturn num.high >>> 20;\n};\nCommonBits.zeroLowerBits = function (bits, nBits) {\n\tvar prop = 'low';\n\tif (nBits > 32) {\n\t\tbits.low = 0 | 0;\n\t\tnBits %= 32;\n\t\tprop = 'high';\n\t}\n\tif (nBits > 0) {\n\t\tvar mask = (nBits < 32) ? (~((1 << nBits) - 1)) : 0;\n\t\tbits[prop] &= mask;\n\t}\n\treturn bits;\n};\nCommonBits.numCommonMostSigMantissaBits = function (num1, num2) {\n\tvar count = 0;\n\tfor (var i = 52; i >= 0; i--) {\n\t\tif (CommonBits.getBit(num1, i) !== CommonBits.getBit(num2, i)) return count;\n\t\tcount++;\n\t}\n\treturn 52;\n};\n","import CommonBits from './CommonBits';\nimport CoordinateFilter from '../geom/CoordinateFilter';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport CoordinateSequenceFilter from '../geom/CoordinateSequenceFilter';\nexport default function CommonBitsRemover() {\n\tthis._commonCoord = null;\n\tthis._ccFilter = new CommonCoordinateFilter();\n}\nextend(CommonBitsRemover.prototype, {\n\taddCommonBits: function (geom) {\n\t\tvar trans = new Translater(this._commonCoord);\n\t\tgeom.apply(trans);\n\t\tgeom.geometryChanged();\n\t},\n\tremoveCommonBits: function (geom) {\n\t\tif (this._commonCoord.x === 0.0 && this._commonCoord.y === 0.0) return geom;\n\t\tvar invCoord = new Coordinate(this._commonCoord);\n\t\tinvCoord.x = -invCoord.x;\n\t\tinvCoord.y = -invCoord.y;\n\t\tvar trans = new Translater(invCoord);\n\t\tgeom.apply(trans);\n\t\tgeom.geometryChanged();\n\t\treturn geom;\n\t},\n\tgetCommonCoordinate: function () {\n\t\treturn this._commonCoord;\n\t},\n\tadd: function (geom) {\n\t\tgeom.apply(this._ccFilter);\n\t\tthis._commonCoord = this._ccFilter.getCommonCoordinate();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CommonBitsRemover;\n\t}\n});\nfunction CommonCoordinateFilter() {\n\tthis._commonBitsX = new CommonBits();\n\tthis._commonBitsY = new CommonBits();\n}\nextend(CommonCoordinateFilter.prototype, {\n\tfilter: function (coord) {\n\t\tthis._commonBitsX.add(coord.x);\n\t\tthis._commonBitsY.add(coord.y);\n\t},\n\tgetCommonCoordinate: function () {\n\t\treturn new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon());\n\t},\n\tinterfaces_: function () {\n\t\treturn [CoordinateFilter];\n\t},\n\tgetClass: function () {\n\t\treturn CommonCoordinateFilter;\n\t}\n});\nfunction Translater() {\n\tthis.trans = null;\n\tlet trans = arguments[0];\n\tthis.trans = trans;\n}\nextend(Translater.prototype, {\n\tfilter: function (seq, i) {\n\t\tvar xp = seq.getOrdinate(i, 0) + this.trans.x;\n\t\tvar yp = seq.getOrdinate(i, 1) + this.trans.y;\n\t\tseq.setOrdinate(i, 0, xp);\n\t\tseq.setOrdinate(i, 1, yp);\n\t},\n\tisDone: function () {\n\t\treturn false;\n\t},\n\tisGeometryChanged: function () {\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [CoordinateSequenceFilter];\n\t},\n\tgetClass: function () {\n\t\treturn Translater;\n\t}\n});\nCommonBitsRemover.CommonCoordinateFilter = CommonCoordinateFilter;\nCommonBitsRemover.Translater = Translater;\n","import GeometrySnapper from './GeometrySnapper';\nimport extend from '../../../../../../extend';\nimport System from '../../../../../../java/lang/System';\nimport CommonBitsRemover from '../../../precision/CommonBitsRemover';\nimport OverlayOp from '../OverlayOp';\nexport default function SnapOverlayOp() {\n\tthis._geom = new Array(2).fill(null);\n\tthis._snapTolerance = null;\n\tthis._cbr = null;\n\tlet g1 = arguments[0], g2 = arguments[1];\n\tthis._geom[0] = g1;\n\tthis._geom[1] = g2;\n\tthis.computeSnapTolerance();\n}\nextend(SnapOverlayOp.prototype, {\n\tselfSnap: function (geom) {\n\t\tvar snapper0 = new GeometrySnapper(geom);\n\t\tvar snapGeom = snapper0.snapTo(geom, this._snapTolerance);\n\t\treturn snapGeom;\n\t},\n\tremoveCommonBits: function (geom) {\n\t\tthis._cbr = new CommonBitsRemover();\n\t\tthis._cbr.add(geom[0]);\n\t\tthis._cbr.add(geom[1]);\n\t\tvar remGeom = new Array(2).fill(null);\n\t\tremGeom[0] = this._cbr.removeCommonBits(geom[0].copy());\n\t\tremGeom[1] = this._cbr.removeCommonBits(geom[1].copy());\n\t\treturn remGeom;\n\t},\n\tprepareResult: function (geom) {\n\t\tthis._cbr.addCommonBits(geom);\n\t\treturn geom;\n\t},\n\tgetResultGeometry: function (opCode) {\n\t\tvar prepGeom = this.snap(this._geom);\n\t\tvar result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode);\n\t\treturn this.prepareResult(result);\n\t},\n\tcheckValid: function (g) {\n\t\tif (!g.isValid()) {\n\t\t\tSystem.out.println(\"Snapped geometry is invalid\");\n\t\t}\n\t},\n\tcomputeSnapTolerance: function () {\n\t\tthis._snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(this._geom[0], this._geom[1]);\n\t},\n\tsnap: function (geom) {\n\t\tvar remGeom = this.removeCommonBits(geom);\n\t\tvar snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], this._snapTolerance);\n\t\treturn snapGeom;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SnapOverlayOp;\n\t}\n});\nSnapOverlayOp.overlayOp = function (g0, g1, opCode) {\n\tvar op = new SnapOverlayOp(g0, g1);\n\treturn op.getResultGeometry(opCode);\n};\nSnapOverlayOp.union = function (g0, g1) {\n\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.UNION);\n};\nSnapOverlayOp.intersection = function (g0, g1) {\n\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION);\n};\nSnapOverlayOp.symDifference = function (g0, g1) {\n\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);\n};\nSnapOverlayOp.difference = function (g0, g1) {\n\treturn SnapOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE);\n};\n","import SnapOverlayOp from './SnapOverlayOp';\nimport extend from '../../../../../../extend';\nimport RuntimeException from '../../../../../../java/lang/RuntimeException';\nimport OverlayOp from '../OverlayOp';\nexport default function SnapIfNeededOverlayOp() {\n\tthis._geom = new Array(2).fill(null);\n\tlet g1 = arguments[0], g2 = arguments[1];\n\tthis._geom[0] = g1;\n\tthis._geom[1] = g2;\n}\nextend(SnapIfNeededOverlayOp.prototype, {\n\tgetResultGeometry: function (opCode) {\n\t\tvar result = null;\n\t\tvar isSuccess = false;\n\t\tvar savedException = null;\n\t\ttry {\n\t\t\tresult = OverlayOp.overlayOp(this._geom[0], this._geom[1], opCode);\n\t\t\tvar isValid = true;\n\t\t\tif (isValid) isSuccess = true;\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof RuntimeException) {\n\t\t\t\tsavedException = ex;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\tif (!isSuccess) {\n\t\t\ttry {\n\t\t\t\tresult = SnapOverlayOp.overlayOp(this._geom[0], this._geom[1], opCode);\n\t\t\t} catch (ex) {\n\t\t\t\tif (ex instanceof RuntimeException) {\n\t\t\t\t\tthrow savedException;\n\t\t\t\t} else throw ex;\n\t\t\t} finally {}\n\t\t}\n\t\treturn result;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SnapIfNeededOverlayOp;\n\t}\n});\nSnapIfNeededOverlayOp.overlayOp = function (g0, g1, opCode) {\n\tvar op = new SnapIfNeededOverlayOp(g0, g1);\n\treturn op.getResultGeometry(opCode);\n};\nSnapIfNeededOverlayOp.union = function (g0, g1) {\n\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.UNION);\n};\nSnapIfNeededOverlayOp.intersection = function (g0, g1) {\n\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION);\n};\nSnapIfNeededOverlayOp.symDifference = function (g0, g1) {\n\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);\n};\nSnapIfNeededOverlayOp.difference = function (g0, g1) {\n\treturn SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE);\n};\n","import BoundaryNodeRule from '../algorithm/BoundaryNodeRule';\nimport extend from '../../../../extend';\nimport GeometryGraph from '../geomgraph/GeometryGraph';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nexport default function GeometryGraphOperation() {\n\tthis._li = new RobustLineIntersector();\n\tthis._resultPrecisionModel = null;\n\tthis._arg = null;\n\tif (arguments.length === 1) {\n\t\tlet g0 = arguments[0];\n\t\tthis.setComputationPrecision(g0.getPrecisionModel());\n\t\tthis._arg = new Array(1).fill(null);\n\t\tthis._arg[0] = new GeometryGraph(0, g0);\n\t\t;\n\t} else if (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tGeometryGraphOperation.call(this, g0, g1, BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE);\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2];\n\t\tif (g0.getPrecisionModel().compareTo(g1.getPrecisionModel()) >= 0) this.setComputationPrecision(g0.getPrecisionModel()); else this.setComputationPrecision(g1.getPrecisionModel());\n\t\tthis._arg = new Array(2).fill(null);\n\t\tthis._arg[0] = new GeometryGraph(0, g0, boundaryNodeRule);\n\t\tthis._arg[1] = new GeometryGraph(1, g1, boundaryNodeRule);\n\t}\n}\nextend(GeometryGraphOperation.prototype, {\n\tgetArgGeometry: function (i) {\n\t\treturn this._arg[i].getGeometry();\n\t},\n\tsetComputationPrecision: function (pm) {\n\t\tthis._resultPrecisionModel = pm;\n\t\tthis._li.setPrecisionModel(this._resultPrecisionModel);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryGraphOperation;\n\t}\n});\n","import PointLocator from '../../algorithm/PointLocator';\nimport Location from '../../geom/Location';\nimport EdgeNodingValidator from '../../geomgraph/EdgeNodingValidator';\nimport GeometryCollectionMapper from '../../geom/util/GeometryCollectionMapper';\nimport PolygonBuilder from './PolygonBuilder';\nimport Position from '../../geomgraph/Position';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport LineBuilder from './LineBuilder';\nimport PointBuilder from './PointBuilder';\nimport SnapIfNeededOverlayOp from './snap/SnapIfNeededOverlayOp';\nimport extend from '../../../../../extend';\nimport Label from '../../geomgraph/Label';\nimport OverlayNodeFactory from './OverlayNodeFactory';\nimport GeometryGraphOperation from '../GeometryGraphOperation';\nimport EdgeList from '../../geomgraph/EdgeList';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default function OverlayOp() {\n\tthis._ptLocator = new PointLocator();\n\tthis._geomFact = null;\n\tthis._resultGeom = null;\n\tthis._graph = null;\n\tthis._edgeList = new EdgeList();\n\tthis._resultPolyList = new ArrayList();\n\tthis._resultLineList = new ArrayList();\n\tthis._resultPointList = new ArrayList();\n\tlet g0 = arguments[0], g1 = arguments[1];\n\tGeometryGraphOperation.call(this, g0, g1);\n\tthis._graph = new PlanarGraph(new OverlayNodeFactory());\n\tthis._geomFact = g0.getFactory();\n}\ninherits(OverlayOp, GeometryGraphOperation);\nextend(OverlayOp.prototype, {\n\tinsertUniqueEdge: function (e) {\n\t\tvar existingEdge = this._edgeList.findEqualEdge(e);\n\t\tif (existingEdge !== null) {\n\t\t\tvar existingLabel = existingEdge.getLabel();\n\t\t\tvar labelToMerge = e.getLabel();\n\t\t\tif (!existingEdge.isPointwiseEqual(e)) {\n\t\t\t\tlabelToMerge = new Label(e.getLabel());\n\t\t\t\tlabelToMerge.flip();\n\t\t\t}\n\t\t\tvar depth = existingEdge.getDepth();\n\t\t\tif (depth.isNull()) {\n\t\t\t\tdepth.add(existingLabel);\n\t\t\t}\n\t\t\tdepth.add(labelToMerge);\n\t\t\texistingLabel.merge(labelToMerge);\n\t\t} else {\n\t\t\tthis._edgeList.add(e);\n\t\t}\n\t},\n\tgetGraph: function () {\n\t\treturn this._graph;\n\t},\n\tcancelDuplicateResultEdges: function () {\n\t\tfor (var it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar sym = de.getSym();\n\t\t\tif (de.isInResult() && sym.isInResult()) {\n\t\t\t\tde.setInResult(false);\n\t\t\t\tsym.setInResult(false);\n\t\t\t}\n\t\t}\n\t},\n\tisCoveredByLA: function (coord) {\n\t\tif (this.isCovered(coord, this._resultLineList)) return true;\n\t\tif (this.isCovered(coord, this._resultPolyList)) return true;\n\t\treturn false;\n\t},\n\tcomputeGeometry: function (resultPointList, resultLineList, resultPolyList, opcode) {\n\t\tvar geomList = new ArrayList();\n\t\tgeomList.addAll(resultPointList);\n\t\tgeomList.addAll(resultLineList);\n\t\tgeomList.addAll(resultPolyList);\n\t\tif (geomList.isEmpty()) return OverlayOp.createEmptyResult(opcode, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact);\n\t\treturn this._geomFact.buildGeometry(geomList);\n\t},\n\tmergeSymLabels: function () {\n\t\tfor (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().mergeSymLabels();\n\t\t}\n\t},\n\tisCovered: function (coord, geomList) {\n\t\tfor (var it = geomList.iterator(); it.hasNext(); ) {\n\t\t\tvar geom = it.next();\n\t\t\tvar loc = this._ptLocator.locate(coord, geom);\n\t\t\tif (loc !== Location.EXTERIOR) return true;\n\t\t}\n\t\treturn false;\n\t},\n\treplaceCollapsedEdges: function () {\n\t\tvar newEdges = new ArrayList();\n\t\tfor (var it = this._edgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tif (e.isCollapsed()) {\n\t\t\t\tit.remove();\n\t\t\t\tnewEdges.add(e.getCollapsedEdge());\n\t\t\t}\n\t\t}\n\t\tthis._edgeList.addAll(newEdges);\n\t},\n\tupdateNodeLabelling: function () {\n\t\tfor (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tvar lbl = node.getEdges().getLabel();\n\t\t\tnode.getLabel().merge(lbl);\n\t\t}\n\t},\n\tgetResultGeometry: function (overlayOpCode) {\n\t\tthis.computeOverlay(overlayOpCode);\n\t\treturn this._resultGeom;\n\t},\n\tinsertUniqueEdges: function (edges) {\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis.insertUniqueEdge(e);\n\t\t}\n\t},\n\tcomputeOverlay: function (opCode) {\n\t\tthis.copyPoints(0);\n\t\tthis.copyPoints(1);\n\t\tthis._arg[0].computeSelfNodes(this._li, false);\n\t\tthis._arg[1].computeSelfNodes(this._li, false);\n\t\tthis._arg[0].computeEdgeIntersections(this._arg[1], this._li, true);\n\t\tvar baseSplitEdges = new ArrayList();\n\t\tthis._arg[0].computeSplitEdges(baseSplitEdges);\n\t\tthis._arg[1].computeSplitEdges(baseSplitEdges);\n\t\tvar splitEdges = baseSplitEdges;\n\t\tthis.insertUniqueEdges(baseSplitEdges);\n\t\tthis.computeLabelsFromDepths();\n\t\tthis.replaceCollapsedEdges();\n\t\tEdgeNodingValidator.checkValid(this._edgeList.getEdges());\n\t\tthis._graph.addEdges(this._edgeList.getEdges());\n\t\tthis.computeLabelling();\n\t\tthis.labelIncompleteNodes();\n\t\tthis.findResultAreaEdges(opCode);\n\t\tthis.cancelDuplicateResultEdges();\n\t\tvar polyBuilder = new PolygonBuilder(this._geomFact);\n\t\tpolyBuilder.add(this._graph);\n\t\tthis._resultPolyList = polyBuilder.getPolygons();\n\t\tvar lineBuilder = new LineBuilder(this, this._geomFact, this._ptLocator);\n\t\tthis._resultLineList = lineBuilder.build(opCode);\n\t\tvar pointBuilder = new PointBuilder(this, this._geomFact, this._ptLocator);\n\t\tthis._resultPointList = pointBuilder.build(opCode);\n\t\tthis._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, opCode);\n\t},\n\tlabelIncompleteNode: function (n, targetIndex) {\n\t\tvar loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry());\n\t\tn.getLabel().setLocation(targetIndex, loc);\n\t},\n\tcopyPoints: function (argIndex) {\n\t\tfor (var i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n\t\t\tvar graphNode = i.next();\n\t\t\tvar newNode = this._graph.addNode(graphNode.getCoordinate());\n\t\t\tnewNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex));\n\t\t}\n\t},\n\tfindResultAreaEdges: function (opCode) {\n\t\tfor (var it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tif (label.isArea() && !de.isInteriorAreaEdge() && OverlayOp.isResultOfOp(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), opCode)) {\n\t\t\t\tde.setInResult(true);\n\t\t\t}\n\t\t}\n\t},\n\tcomputeLabelsFromDepths: function () {\n\t\tfor (var it = this._edgeList.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar lbl = e.getLabel();\n\t\t\tvar depth = e.getDepth();\n\t\t\tif (!depth.isNull()) {\n\t\t\t\tdepth.normalize();\n\t\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\t\tif (!lbl.isNull(i) && lbl.isArea() && !depth.isNull(i)) {\n\t\t\t\t\t\tif (depth.getDelta(i) === 0) {\n\t\t\t\t\t\t\tlbl.toLine(i);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tAssert.isTrue(!depth.isNull(i, Position.LEFT), \"depth of LEFT side has not been initialized\");\n\t\t\t\t\t\t\tlbl.setLocation(i, Position.LEFT, depth.getLocation(i, Position.LEFT));\n\t\t\t\t\t\t\tAssert.isTrue(!depth.isNull(i, Position.RIGHT), \"depth of RIGHT side has not been initialized\");\n\t\t\t\t\t\t\tlbl.setLocation(i, Position.RIGHT, depth.getLocation(i, Position.RIGHT));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcomputeLabelling: function () {\n\t\tfor (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n\t\t\tvar node = nodeit.next();\n\t\t\tnode.getEdges().computeLabelling(this._arg);\n\t\t}\n\t\tthis.mergeSymLabels();\n\t\tthis.updateNodeLabelling();\n\t},\n\tlabelIncompleteNodes: function () {\n\t\tvar nodeCount = 0;\n\t\tfor (var ni = this._graph.getNodes().iterator(); ni.hasNext(); ) {\n\t\t\tvar n = ni.next();\n\t\t\tvar label = n.getLabel();\n\t\t\tif (n.isIsolated()) {\n\t\t\t\tnodeCount++;\n\t\t\t\tif (label.isNull(0)) this.labelIncompleteNode(n, 0); else this.labelIncompleteNode(n, 1);\n\t\t\t}\n\t\t\tn.getEdges().updateLabelling(label);\n\t\t}\n\t},\n\tisCoveredByA: function (coord) {\n\t\tif (this.isCovered(coord, this._resultPolyList)) return true;\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn OverlayOp;\n\t}\n});\nOverlayOp.overlayOp = function (geom0, geom1, opCode) {\n\tvar gov = new OverlayOp(geom0, geom1);\n\tvar geomOv = gov.getResultGeometry(opCode);\n\treturn geomOv;\n};\nOverlayOp.union = function (geom, other) {\n\tif (geom.isEmpty() || other.isEmpty()) {\n\t\tif (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, geom, other, geom.getFactory());\n\t\tif (geom.isEmpty()) return other.copy();\n\t\tif (other.isEmpty()) return geom.copy();\n\t}\n\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.UNION);\n};\nOverlayOp.intersection = function (geom, other) {\n\tif (geom.isEmpty() || other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.INTERSECTION, geom, other, geom.getFactory());\n\tif (geom.isGeometryCollection()) {\n\t\tvar g2 = other;\n\t\treturn GeometryCollectionMapper.map(geom, {\n\t\t\tinterfaces_: function () {\n\t\t\t\treturn [MapOp];\n\t\t\t},\n\t\t\tmap: function (g) {\n\t\t\t\treturn g.intersection(g2);\n\t\t\t}\n\t\t});\n\t}\n\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.INTERSECTION);\n};\nOverlayOp.symDifference = function (geom, other) {\n\tif (geom.isEmpty() || other.isEmpty()) {\n\t\tif (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.SYMDIFFERENCE, geom, other, geom.getFactory());\n\t\tif (geom.isEmpty()) return other.copy();\n\t\tif (other.isEmpty()) return geom.copy();\n\t}\n\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.SYMDIFFERENCE);\n};\nOverlayOp.resultDimension = function (opCode, g0, g1) {\n\tvar dim0 = g0.getDimension();\n\tvar dim1 = g1.getDimension();\n\tvar resultDimension = -1;\n\tswitch (opCode) {\n\t\tcase OverlayOp.INTERSECTION:\n\t\t\tresultDimension = Math.min(dim0, dim1);\n\t\t\tbreak;\n\t\tcase OverlayOp.UNION:\n\t\t\tresultDimension = Math.max(dim0, dim1);\n\t\t\tbreak;\n\t\tcase OverlayOp.DIFFERENCE:\n\t\t\tresultDimension = dim0;\n\t\t\tbreak;\n\t\tcase OverlayOp.SYMDIFFERENCE:\n\t\t\tresultDimension = Math.max(dim0, dim1);\n\t\t\tbreak;\n\t}\n\treturn resultDimension;\n};\nOverlayOp.createEmptyResult = function (overlayOpCode, a, b, geomFact) {\n\tvar result = null;\n\tswitch (OverlayOp.resultDimension(overlayOpCode, a, b)) {\n\t\tcase -1:\n\t\t\tresult = geomFact.createGeometryCollection();\n\t\t\tbreak;\n\t\tcase 0:\n\t\t\tresult = geomFact.createPoint();\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tresult = geomFact.createLineString();\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tresult = geomFact.createPolygon();\n\t\t\tbreak;\n\t}\n\treturn result;\n};\nOverlayOp.difference = function (geom, other) {\n\tif (geom.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.DIFFERENCE, geom, other, geom.getFactory());\n\tif (other.isEmpty()) return geom.copy();\n\tif (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException(\"This method does not support GeometryCollection arguments\");\n\treturn SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.DIFFERENCE);\n};\nOverlayOp.isResultOfOp = function () {\n\tif (arguments.length === 2) {\n\t\tlet label = arguments[0], opCode = arguments[1];\n\t\tvar loc0 = label.getLocation(0);\n\t\tvar loc1 = label.getLocation(1);\n\t\treturn OverlayOp.isResultOfOp(loc0, loc1, opCode);\n\t} else if (arguments.length === 3) {\n\t\tlet loc0 = arguments[0], loc1 = arguments[1], overlayOpCode = arguments[2];\n\t\tif (loc0 === Location.BOUNDARY) loc0 = Location.INTERIOR;\n\t\tif (loc1 === Location.BOUNDARY) loc1 = Location.INTERIOR;\n\t\tswitch (overlayOpCode) {\n\t\t\tcase OverlayOp.INTERSECTION:\n\t\t\t\treturn loc0 === Location.INTERIOR && loc1 === Location.INTERIOR;\n\t\t\tcase OverlayOp.UNION:\n\t\t\t\treturn loc0 === Location.INTERIOR || loc1 === Location.INTERIOR;\n\t\t\tcase OverlayOp.DIFFERENCE:\n\t\t\t\treturn loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR;\n\t\t\tcase OverlayOp.SYMDIFFERENCE:\n\t\t\t\treturn loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR || loc0 !== Location.INTERIOR && loc1 === Location.INTERIOR;\n\t\t}\n\t\treturn false;\n\t}\n};\nOverlayOp.INTERSECTION = 1;\nOverlayOp.UNION = 2;\nOverlayOp.DIFFERENCE = 3;\nOverlayOp.SYMDIFFERENCE = 4;\n","import extend from '../../../../../extend';\nimport DirectedEdge from '../../planargraph/DirectedEdge';\nimport inherits from '../../../../../inherits';\nexport default function PolygonizeDirectedEdge() {\n\tthis._edgeRing = null;\n\tthis._next = null;\n\tthis._label = -1;\n\tlet from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3];\n\tDirectedEdge.call(this, from, to, directionPt, edgeDirection);\n}\ninherits(PolygonizeDirectedEdge, DirectedEdge);\nextend(PolygonizeDirectedEdge.prototype, {\n\tgetNext: function () {\n\t\treturn this._next;\n\t},\n\tisInRing: function () {\n\t\treturn this._edgeRing !== null;\n\t},\n\tsetRing: function (edgeRing) {\n\t\tthis._edgeRing = edgeRing;\n\t},\n\tsetLabel: function (label) {\n\t\tthis._label = label;\n\t},\n\tgetLabel: function () {\n\t\treturn this._label;\n\t},\n\tsetNext: function (next) {\n\t\tthis._next = next;\n\t},\n\tgetRing: function () {\n\t\treturn this._edgeRing;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PolygonizeDirectedEdge;\n\t}\n});\n","import extend from '../../../../../extend';\nimport Edge from '../../planargraph/Edge';\nimport inherits from '../../../../../inherits';\nexport default function PolygonizeEdge() {\n\tEdge.apply(this);\n\tthis._line = null;\n\tlet line = arguments[0];\n\tthis._line = line;\n}\ninherits(PolygonizeEdge, Edge);\nextend(PolygonizeEdge.prototype, {\n\tgetLine: function () {\n\t\treturn this._line;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PolygonizeEdge;\n\t}\n});\n","import CoordinateList from '../../geom/CoordinateList';\nimport WKTWriter from '../../io/WKTWriter';\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence';\nimport PointLocation from '../../algorithm/PointLocation';\nimport LinearRing from '../../geom/LinearRing';\nimport extend from '../../../../../extend';\nimport Exception from '../../../../../java/lang/Exception';\nimport Orientation from '../../algorithm/Orientation';\nimport System from '../../../../../java/lang/System';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Comparator from '../../../../../java/util/Comparator';\nimport Assert from '../../util/Assert';\nexport default function EdgeRing() {\n\tthis._factory = null;\n\tthis._deList = new ArrayList();\n\tthis._lowestEdge = null;\n\tthis._ring = null;\n\tthis._ringPts = null;\n\tthis._holes = null;\n\tthis._shell = null;\n\tthis._isHole = null;\n\tthis._isProcessed = false;\n\tthis._isIncludedSet = false;\n\tthis._isIncluded = false;\n\tlet factory = arguments[0];\n\tthis._factory = factory;\n}\nextend(EdgeRing.prototype, {\n\tisIncluded: function () {\n\t\treturn this._isIncluded;\n\t},\n\tgetCoordinates: function () {\n\t\tif (this._ringPts === null) {\n\t\t\tvar coordList = new CoordinateList();\n\t\t\tfor (var i = this._deList.iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tvar edge = de.getEdge();\n\t\t\t\tEdgeRing.addEdge(edge.getLine().getCoordinates(), de.getEdgeDirection(), coordList);\n\t\t\t}\n\t\t\tthis._ringPts = coordList.toCoordinateArray();\n\t\t}\n\t\treturn this._ringPts;\n\t},\n\tisIncludedSet: function () {\n\t\treturn this._isIncludedSet;\n\t},\n\tisValid: function () {\n\t\tthis.getCoordinates();\n\t\tif (this._ringPts.length <= 3) return false;\n\t\tthis.getRing();\n\t\treturn this._ring.isValid();\n\t},\n\tbuild: function (startDE) {\n\t\tvar de = startDE;\n\t\tdo {\n\t\t\tthis.add(de);\n\t\t\tde.setRing(this);\n\t\t\tde = de.getNext();\n\t\t\tAssert.isTrue(de !== null, \"found null DE in ring\");\n\t\t\tAssert.isTrue(de === startDE || !de.isInRing(), \"found DE already in ring\");\n\t\t} while (de !== startDE);\n\t},\n\tisOuterHole: function () {\n\t\tif (!this._isHole) return false;\n\t\treturn !this.hasShell();\n\t},\n\tgetPolygon: function () {\n\t\tvar holeLR = null;\n\t\tif (this._holes !== null) {\n\t\t\tholeLR = new Array(this._holes.size()).fill(null);\n\t\t\tfor (var i = 0; i < this._holes.size(); i++) {\n\t\t\t\tholeLR[i] = this._holes.get(i);\n\t\t\t}\n\t\t}\n\t\tvar poly = this._factory.createPolygon(this._ring, holeLR);\n\t\treturn poly;\n\t},\n\tisHole: function () {\n\t\treturn this._isHole;\n\t},\n\tisProcessed: function () {\n\t\treturn this._isProcessed;\n\t},\n\taddHole: function () {\n\t\tif (arguments[0] instanceof LinearRing) {\n\t\t\tlet hole = arguments[0];\n\t\t\tif (this._holes === null) this._holes = new ArrayList();\n\t\t\tthis._holes.add(hole);\n\t\t} else if (arguments[0] instanceof EdgeRing) {\n\t\t\tlet holeER = arguments[0];\n\t\t\tholeER.setShell(this);\n\t\t\tvar hole = holeER.getRing();\n\t\t\tif (this._holes === null) this._holes = new ArrayList();\n\t\t\tthis._holes.add(hole);\n\t\t}\n\t},\n\tsetIncluded: function (isIncluded) {\n\t\tthis._isIncluded = isIncluded;\n\t\tthis._isIncludedSet = true;\n\t},\n\tgetOuterHole: function () {\n\t\tif (this.isHole()) return null;\n\t\tfor (var i = 0; i < this._deList.size(); i++) {\n\t\t\tvar de = this._deList.get(i);\n\t\t\tvar adjRing = de.getSym().getRing();\n\t\t\tif (adjRing.isOuterHole()) return adjRing;\n\t\t}\n\t\treturn null;\n\t},\n\tcomputeHole: function () {\n\t\tvar ring = this.getRing();\n\t\tthis._isHole = Orientation.isCCW(ring.getCoordinates());\n\t},\n\thasShell: function () {\n\t\treturn this._shell !== null;\n\t},\n\tisOuterShell: function () {\n\t\treturn this.getOuterHole() !== null;\n\t},\n\tgetLineString: function () {\n\t\tthis.getCoordinates();\n\t\treturn this._factory.createLineString(this._ringPts);\n\t},\n\ttoString: function () {\n\t\treturn WKTWriter.toLineString(new CoordinateArraySequence(this.getCoordinates()));\n\t},\n\tgetShell: function () {\n\t\tif (this.isHole()) return this._shell;\n\t\treturn this;\n\t},\n\tadd: function (de) {\n\t\tthis._deList.add(de);\n\t},\n\tgetRing: function () {\n\t\tif (this._ring !== null) return this._ring;\n\t\tthis.getCoordinates();\n\t\tif (this._ringPts.length < 3) System.out.println(this._ringPts);\n\t\ttry {\n\t\t\tthis._ring = this._factory.createLinearRing(this._ringPts);\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof Exception) {\n\t\t\t\tSystem.out.println(this._ringPts);\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\treturn this._ring;\n\t},\n\tupdateIncluded: function () {\n\t\tif (this.isHole()) return null;\n\t\tfor (var i = 0; i < this._deList.size(); i++) {\n\t\t\tvar de = this._deList.get(i);\n\t\t\tvar adjShell = de.getSym().getRing().getShell();\n\t\t\tif (adjShell !== null && adjShell.isIncludedSet()) {\n\t\t\t\tthis.setIncluded(!adjShell.isIncluded());\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t},\n\tsetShell: function (shell) {\n\t\tthis._shell = shell;\n\t},\n\tsetProcessed: function (isProcessed) {\n\t\tthis._isProcessed = isProcessed;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeRing;\n\t}\n});\nEdgeRing.findDirEdgesInRing = function (startDE) {\n\tvar de = startDE;\n\tvar edges = new ArrayList();\n\tdo {\n\t\tedges.add(de);\n\t\tde = de.getNext();\n\t\tAssert.isTrue(de !== null, \"found null DE in ring\");\n\t\tAssert.isTrue(de === startDE || !de.isInRing(), \"found DE already in ring\");\n\t} while (de !== startDE);\n\treturn edges;\n};\nEdgeRing.addEdge = function (coords, isForward, coordList) {\n\tif (isForward) {\n\t\tfor (var i = 0; i < coords.length; i++) {\n\t\t\tcoordList.add(coords[i], false);\n\t\t}\n\t} else {\n\t\tfor (var i = coords.length - 1; i >= 0; i--) {\n\t\t\tcoordList.add(coords[i], false);\n\t\t}\n\t}\n};\nEdgeRing.findEdgeRingContaining = function (testEr, shellList) {\n\tvar testRing = testEr.getRing();\n\tvar testEnv = testRing.getEnvelopeInternal();\n\tvar testPt = testRing.getCoordinateN(0);\n\tvar minShell = null;\n\tvar minShellEnv = null;\n\tfor (var it = shellList.iterator(); it.hasNext(); ) {\n\t\tvar tryShell = it.next();\n\t\tvar tryShellRing = tryShell.getRing();\n\t\tvar tryShellEnv = tryShellRing.getEnvelopeInternal();\n\t\tif (tryShellEnv.equals(testEnv)) continue;\n\t\tif (!tryShellEnv.contains(testEnv)) continue;\n\t\ttestPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryShellRing.getCoordinates());\n\t\tvar isContained = false;\n\t\tif (PointLocation.isInRing(testPt, tryShellRing.getCoordinates())) isContained = true;\n\t\tif (isContained) {\n\t\t\tif (minShell === null || minShellEnv.contains(tryShellEnv)) {\n\t\t\t\tminShell = tryShell;\n\t\t\t\tminShellEnv = minShell.getRing().getEnvelopeInternal();\n\t\t\t}\n\t\t}\n\t}\n\treturn minShell;\n};\nfunction EnvelopeComparator() {}\nextend(EnvelopeComparator.prototype, {\n\tcompare: function (obj0, obj1) {\n\t\tvar r0 = obj0;\n\t\tvar r1 = obj1;\n\t\treturn r0.getRing().getEnvelope().compareTo(r1.getRing().getEnvelope());\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparator];\n\t},\n\tgetClass: function () {\n\t\treturn EnvelopeComparator;\n\t}\n});\nEdgeRing.EnvelopeComparator = EnvelopeComparator;\n","import PolygonizeDirectedEdge from './PolygonizeDirectedEdge';\nimport HashSet from '../../../../../java/util/HashSet';\nimport Stack from '../../../../../java/util/Stack';\nimport Node from '../../planargraph/Node';\nimport PolygonizeEdge from './PolygonizeEdge';\nimport extend from '../../../../../extend';\nimport EdgeRing from './EdgeRing';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport inherits from '../../../../../inherits';\nimport PlanarGraph from '../../planargraph/PlanarGraph';\nexport default function PolygonizeGraph() {\n\tPlanarGraph.apply(this);\n\tthis._factory = null;\n\tlet factory = arguments[0];\n\tthis._factory = factory;\n}\ninherits(PolygonizeGraph, PlanarGraph);\nextend(PolygonizeGraph.prototype, {\n\tfindEdgeRing: function (startDE) {\n\t\tvar er = new EdgeRing(this._factory);\n\t\ter.build(startDE);\n\t\treturn er;\n\t},\n\tcomputeDepthParity: function () {\n\t\tif (arguments.length === 0) {\n\t\t\twhile (true) {\n\t\t\t\tvar de = null;\n\t\t\t\tif (de === null) return null;\n\t\t\t\tthis.computeDepthParity(de);\n\t\t\t}\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet de = arguments[0];\n\t\t}\n\t},\n\tcomputeNextCWEdges: function () {\n\t\tfor (var iNode = this.nodeIterator(); iNode.hasNext(); ) {\n\t\t\tvar node = iNode.next();\n\t\t\tPolygonizeGraph.computeNextCWEdges(node);\n\t\t}\n\t},\n\taddEdge: function (line) {\n\t\tif (line.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\tvar linePts = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());\n\t\tif (linePts.length < 2) {\n\t\t\treturn null;\n\t\t}\n\t\tvar startPt = linePts[0];\n\t\tvar endPt = linePts[linePts.length - 1];\n\t\tvar nStart = this.getNode(startPt);\n\t\tvar nEnd = this.getNode(endPt);\n\t\tvar de0 = new PolygonizeDirectedEdge(nStart, nEnd, linePts[1], true);\n\t\tvar de1 = new PolygonizeDirectedEdge(nEnd, nStart, linePts[linePts.length - 2], false);\n\t\tvar edge = new PolygonizeEdge(line);\n\t\tedge.setDirectedEdges(de0, de1);\n\t\tthis.add(edge);\n\t},\n\tdeleteCutEdges: function () {\n\t\tthis.computeNextCWEdges();\n\t\tPolygonizeGraph.findLabeledEdgeRings(this._dirEdges);\n\t\tvar cutLines = new ArrayList();\n\t\tfor (var i = this._dirEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.isMarked()) continue;\n\t\t\tvar sym = de.getSym();\n\t\t\tif (de.getLabel() === sym.getLabel()) {\n\t\t\t\tde.setMarked(true);\n\t\t\t\tsym.setMarked(true);\n\t\t\t\tvar e = de.getEdge();\n\t\t\t\tcutLines.add(e.getLine());\n\t\t\t}\n\t\t}\n\t\treturn cutLines;\n\t},\n\tgetEdgeRings: function () {\n\t\tthis.computeNextCWEdges();\n\t\tPolygonizeGraph.label(this._dirEdges, -1);\n\t\tvar maximalRings = PolygonizeGraph.findLabeledEdgeRings(this._dirEdges);\n\t\tthis.convertMaximalToMinimalEdgeRings(maximalRings);\n\t\tvar edgeRingList = new ArrayList();\n\t\tfor (var i = this._dirEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tif (de.isMarked()) continue;\n\t\t\tif (de.isInRing()) continue;\n\t\t\tvar er = this.findEdgeRing(de);\n\t\t\tedgeRingList.add(er);\n\t\t}\n\t\treturn edgeRingList;\n\t},\n\tgetNode: function (pt) {\n\t\tvar node = this.findNode(pt);\n\t\tif (node === null) {\n\t\t\tnode = new Node(pt);\n\t\t\tthis.add(node);\n\t\t}\n\t\treturn node;\n\t},\n\tconvertMaximalToMinimalEdgeRings: function (ringEdges) {\n\t\tfor (var i = ringEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar de = i.next();\n\t\t\tvar label = de.getLabel();\n\t\t\tvar intNodes = PolygonizeGraph.findIntersectionNodes(de, label);\n\t\t\tif (intNodes === null) continue;\n\t\t\tfor (var iNode = intNodes.iterator(); iNode.hasNext(); ) {\n\t\t\t\tvar node = iNode.next();\n\t\t\t\tPolygonizeGraph.computeNextCCWEdges(node, label);\n\t\t\t}\n\t\t}\n\t},\n\tdeleteDangles: function () {\n\t\tvar nodesToRemove = this.findNodesOfDegree(1);\n\t\tvar dangleLines = new HashSet();\n\t\tvar nodeStack = new Stack();\n\t\tfor (var i = nodesToRemove.iterator(); i.hasNext(); ) {\n\t\t\tnodeStack.push(i.next());\n\t\t}\n\t\twhile (!nodeStack.isEmpty()) {\n\t\t\tvar node = nodeStack.pop();\n\t\t\tPolygonizeGraph.deleteAllEdges(node);\n\t\t\tvar nodeOutEdges = node.getOutEdges().getEdges();\n\t\t\tfor (var i = nodeOutEdges.iterator(); i.hasNext(); ) {\n\t\t\t\tvar de = i.next();\n\t\t\t\tde.setMarked(true);\n\t\t\t\tvar sym = de.getSym();\n\t\t\t\tif (sym !== null) sym.setMarked(true);\n\t\t\t\tvar e = de.getEdge();\n\t\t\t\tdangleLines.add(e.getLine());\n\t\t\t\tvar toNode = de.getToNode();\n\t\t\t\tif (PolygonizeGraph.getDegreeNonDeleted(toNode) === 1) nodeStack.push(toNode);\n\t\t\t}\n\t\t}\n\t\treturn dangleLines;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PolygonizeGraph;\n\t}\n});\nPolygonizeGraph.findLabeledEdgeRings = function (dirEdges) {\n\tvar edgeRingStarts = new ArrayList();\n\tvar currLabel = 1;\n\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\tvar de = i.next();\n\t\tif (de.isMarked()) continue;\n\t\tif (de.getLabel() >= 0) continue;\n\t\tedgeRingStarts.add(de);\n\t\tvar edges = EdgeRing.findDirEdgesInRing(de);\n\t\tPolygonizeGraph.label(edges, currLabel);\n\t\tcurrLabel++;\n\t}\n\treturn edgeRingStarts;\n};\nPolygonizeGraph.getDegreeNonDeleted = function (node) {\n\tvar edges = node.getOutEdges().getEdges();\n\tvar degree = 0;\n\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\tvar de = i.next();\n\t\tif (!de.isMarked()) degree++;\n\t}\n\treturn degree;\n};\nPolygonizeGraph.deleteAllEdges = function (node) {\n\tvar edges = node.getOutEdges().getEdges();\n\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\tvar de = i.next();\n\t\tde.setMarked(true);\n\t\tvar sym = de.getSym();\n\t\tif (sym !== null) sym.setMarked(true);\n\t}\n};\nPolygonizeGraph.label = function (dirEdges, label) {\n\tfor (var i = dirEdges.iterator(); i.hasNext(); ) {\n\t\tvar de = i.next();\n\t\tde.setLabel(label);\n\t}\n};\nPolygonizeGraph.computeNextCWEdges = function (node) {\n\tvar deStar = node.getOutEdges();\n\tvar startDE = null;\n\tvar prevDE = null;\n\tfor (var i = deStar.getEdges().iterator(); i.hasNext(); ) {\n\t\tvar outDE = i.next();\n\t\tif (outDE.isMarked()) continue;\n\t\tif (startDE === null) startDE = outDE;\n\t\tif (prevDE !== null) {\n\t\t\tvar sym = prevDE.getSym();\n\t\t\tsym.setNext(outDE);\n\t\t}\n\t\tprevDE = outDE;\n\t}\n\tif (prevDE !== null) {\n\t\tvar sym = prevDE.getSym();\n\t\tsym.setNext(startDE);\n\t}\n};\nPolygonizeGraph.computeNextCCWEdges = function (node, label) {\n\tvar deStar = node.getOutEdges();\n\tvar firstOutDE = null;\n\tvar prevInDE = null;\n\tvar edges = deStar.getEdges();\n\tfor (var i = edges.size() - 1; i >= 0; i--) {\n\t\tvar de = edges.get(i);\n\t\tvar sym = de.getSym();\n\t\tvar outDE = null;\n\t\tif (de.getLabel() === label) outDE = de;\n\t\tvar inDE = null;\n\t\tif (sym.getLabel() === label) inDE = sym;\n\t\tif (outDE === null && inDE === null) continue;\n\t\tif (inDE !== null) {\n\t\t\tprevInDE = inDE;\n\t\t}\n\t\tif (outDE !== null) {\n\t\t\tif (prevInDE !== null) {\n\t\t\t\tprevInDE.setNext(outDE);\n\t\t\t\tprevInDE = null;\n\t\t\t}\n\t\t\tif (firstOutDE === null) firstOutDE = outDE;\n\t\t}\n\t}\n\tif (prevInDE !== null) {\n\t\tAssert.isTrue(firstOutDE !== null);\n\t\tprevInDE.setNext(firstOutDE);\n\t}\n};\nPolygonizeGraph.getDegree = function (node, label) {\n\tvar edges = node.getOutEdges().getEdges();\n\tvar degree = 0;\n\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\tvar de = i.next();\n\t\tif (de.getLabel() === label) degree++;\n\t}\n\treturn degree;\n};\nPolygonizeGraph.findIntersectionNodes = function (startDE, label) {\n\tvar de = startDE;\n\tvar intNodes = null;\n\tdo {\n\t\tvar node = de.getFromNode();\n\t\tif (PolygonizeGraph.getDegree(node, label) > 1) {\n\t\t\tif (intNodes === null) intNodes = new ArrayList();\n\t\t\tintNodes.add(node);\n\t\t}\n\t\tde = de.getNext();\n\t\tAssert.isTrue(de !== null, \"found null DE in ring\");\n\t\tAssert.isTrue(de === startDE || !de.isInRing(), \"found DE already in ring\");\n\t} while (de !== startDE);\n\treturn intNodes;\n};\n","import LineString from '../../geom/LineString';\nimport Geometry from '../../geom/Geometry';\nimport PolygonizeGraph from './PolygonizeGraph';\nimport hasInterface from '../../../../../hasInterface';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Collection from '../../../../../java/util/Collection';\nimport extend from '../../../../../extend';\nimport Collections from '../../../../../java/util/Collections';\nimport EdgeRing from './EdgeRing';\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function Polygonizer() {\n\tthis._lineStringAdder = new LineStringAdder(this);\n\tthis._graph = null;\n\tthis._dangles = new ArrayList();\n\tthis._cutEdges = new ArrayList();\n\tthis._invalidRingLines = new ArrayList();\n\tthis._holeList = null;\n\tthis._shellList = null;\n\tthis._polyList = null;\n\tthis._isCheckingRingsValid = true;\n\tthis._extractOnlyPolygonal = null;\n\tthis._geomFactory = null;\n\tif (arguments.length === 0) {\n\t\tPolygonizer.call(this, false);\n\t} else if (arguments.length === 1) {\n\t\tlet extractOnlyPolygonal = arguments[0];\n\t\tthis._extractOnlyPolygonal = extractOnlyPolygonal;\n\t}\n}\nextend(Polygonizer.prototype, {\n\tgetGeometry: function () {\n\t\tif (this._geomFactory === null) this._geomFactory = new GeometryFactory();\n\t\tthis.polygonize();\n\t\tif (this._extractOnlyPolygonal) {\n\t\t\treturn this._geomFactory.buildGeometry(this._polyList);\n\t\t}\n\t\treturn this._geomFactory.createGeometryCollection(GeometryFactory.toGeometryArray(this._polyList));\n\t},\n\tgetInvalidRingLines: function () {\n\t\tthis.polygonize();\n\t\treturn this._invalidRingLines;\n\t},\n\tfindValidRings: function (edgeRingList, validEdgeRingList, invalidRingList) {\n\t\tfor (var i = edgeRingList.iterator(); i.hasNext(); ) {\n\t\t\tvar er = i.next();\n\t\t\tif (er.isValid()) validEdgeRingList.add(er); else invalidRingList.add(er.getLineString());\n\t\t}\n\t},\n\tpolygonize: function () {\n\t\tif (this._polyList !== null) return null;\n\t\tthis._polyList = new ArrayList();\n\t\tif (this._graph === null) return null;\n\t\tthis._dangles = this._graph.deleteDangles();\n\t\tthis._cutEdges = this._graph.deleteCutEdges();\n\t\tvar edgeRingList = this._graph.getEdgeRings();\n\t\tvar validEdgeRingList = new ArrayList();\n\t\tthis._invalidRingLines = new ArrayList();\n\t\tif (this._isCheckingRingsValid) {\n\t\t\tthis.findValidRings(edgeRingList, validEdgeRingList, this._invalidRingLines);\n\t\t} else {\n\t\t\tvalidEdgeRingList = edgeRingList;\n\t\t}\n\t\tthis.findShellsAndHoles(validEdgeRingList);\n\t\tPolygonizer.assignHolesToShells(this._holeList, this._shellList);\n\t\tCollections.sort(this._shellList, new EdgeRing.EnvelopeComparator());\n\t\tvar includeAll = true;\n\t\tif (this._extractOnlyPolygonal) {\n\t\t\tPolygonizer.findDisjointShells(this._shellList);\n\t\t\tincludeAll = false;\n\t\t}\n\t\tthis._polyList = Polygonizer.extractPolygons(this._shellList, includeAll);\n\t},\n\tgetDangles: function () {\n\t\tthis.polygonize();\n\t\treturn this._dangles;\n\t},\n\tgetCutEdges: function () {\n\t\tthis.polygonize();\n\t\treturn this._cutEdges;\n\t},\n\tgetPolygons: function () {\n\t\tthis.polygonize();\n\t\treturn this._polyList;\n\t},\n\tadd: function () {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geomList = arguments[0];\n\t\t\tfor (var i = geomList.iterator(); i.hasNext(); ) {\n\t\t\t\tvar geometry = i.next();\n\t\t\t\tthis.add(geometry);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof LineString) {\n\t\t\tlet line = arguments[0];\n\t\t\tthis._geomFactory = line.getFactory();\n\t\t\tif (this._graph === null) this._graph = new PolygonizeGraph(this._geomFactory);\n\t\t\tthis._graph.addEdge(line);\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet g = arguments[0];\n\t\t\tg.apply(this._lineStringAdder);\n\t\t}\n\t},\n\tsetCheckRingsValid: function (isCheckingRingsValid) {\n\t\tthis._isCheckingRingsValid = isCheckingRingsValid;\n\t},\n\tfindShellsAndHoles: function (edgeRingList) {\n\t\tthis._holeList = new ArrayList();\n\t\tthis._shellList = new ArrayList();\n\t\tfor (var i = edgeRingList.iterator(); i.hasNext(); ) {\n\t\t\tvar er = i.next();\n\t\t\ter.computeHole();\n\t\t\tif (er.isHole()) this._holeList.add(er); else this._shellList.add(er);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Polygonizer;\n\t}\n});\nPolygonizer.findOuterShells = function (shellList) {\n\tfor (var i = shellList.iterator(); i.hasNext(); ) {\n\t\tvar er = i.next();\n\t\tvar outerHoleER = er.getOuterHole();\n\t\tif (outerHoleER !== null && !outerHoleER.isProcessed()) {\n\t\t\ter.setIncluded(true);\n\t\t\touterHoleER.setProcessed(true);\n\t\t}\n\t}\n};\nPolygonizer.extractPolygons = function (shellList, includeAll) {\n\tvar polyList = new ArrayList();\n\tfor (var i = shellList.iterator(); i.hasNext(); ) {\n\t\tvar er = i.next();\n\t\tif (includeAll || er.isIncluded()) {\n\t\t\tpolyList.add(er.getPolygon());\n\t\t}\n\t}\n\treturn polyList;\n};\nPolygonizer.assignHolesToShells = function (holeList, shellList) {\n\tfor (var i = holeList.iterator(); i.hasNext(); ) {\n\t\tvar holeER = i.next();\n\t\tPolygonizer.assignHoleToShell(holeER, shellList);\n\t}\n};\nPolygonizer.assignHoleToShell = function (holeER, shellList) {\n\tvar shell = EdgeRing.findEdgeRingContaining(holeER, shellList);\n\tif (shell !== null) {\n\t\tshell.addHole(holeER);\n\t}\n};\nPolygonizer.findDisjointShells = function (shellList) {\n\tPolygonizer.findOuterShells(shellList);\n\tvar isMoreToScan = null;\n\tdo {\n\t\tisMoreToScan = false;\n\t\tfor (var i = shellList.iterator(); i.hasNext(); ) {\n\t\t\tvar er = i.next();\n\t\t\tif (er.isIncludedSet()) continue;\n\t\t\ter.updateIncluded();\n\t\t\tif (!er.isIncludedSet()) {\n\t\t\t\tisMoreToScan = true;\n\t\t\t}\n\t\t}\n\t} while (isMoreToScan);\n};\nfunction LineStringAdder() {\n\tthis.p = null;\n\tlet p = arguments[0];\n\tthis.p = p;\n}\nextend(LineStringAdder.prototype, {\n\tfilter: function (g) {\n\t\tif (g instanceof LineString) this.p.add(g);\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryComponentFilter];\n\t},\n\tgetClass: function () {\n\t\treturn LineStringAdder;\n\t}\n});\nPolygonizer.LineStringAdder = LineStringAdder;\n","import EdgeEnd from '../../geomgraph/EdgeEnd';\nimport extend from '../../../../../extend';\nimport Label from '../../geomgraph/Label';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function EdgeEndBuilder() {}\nextend(EdgeEndBuilder.prototype, {\n\tcreateEdgeEndForNext: function (edge, l, eiCurr, eiNext) {\n\t\tvar iNext = eiCurr.segmentIndex + 1;\n\t\tif (iNext >= edge.getNumPoints() && eiNext === null) return null;\n\t\tvar pNext = edge.getCoordinate(iNext);\n\t\tif (eiNext !== null && eiNext.segmentIndex === eiCurr.segmentIndex) pNext = eiNext.coord;\n\t\tvar e = new EdgeEnd(edge, eiCurr.coord, pNext, new Label(edge.getLabel()));\n\t\tl.add(e);\n\t},\n\tcreateEdgeEndForPrev: function (edge, l, eiCurr, eiPrev) {\n\t\tvar iPrev = eiCurr.segmentIndex;\n\t\tif (eiCurr.dist === 0.0) {\n\t\t\tif (iPrev === 0) return null;\n\t\t\tiPrev--;\n\t\t}\n\t\tvar pPrev = edge.getCoordinate(iPrev);\n\t\tif (eiPrev !== null && eiPrev.segmentIndex >= iPrev) pPrev = eiPrev.coord;\n\t\tvar label = new Label(edge.getLabel());\n\t\tlabel.flip();\n\t\tvar e = new EdgeEnd(edge, eiCurr.coord, pPrev, label);\n\t\tl.add(e);\n\t},\n\tcomputeEdgeEnds: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet edges = arguments[0];\n\t\t\tvar l = new ArrayList();\n\t\t\tfor (var i = edges; i.hasNext(); ) {\n\t\t\t\tvar e = i.next();\n\t\t\t\tthis.computeEdgeEnds(e, l);\n\t\t\t}\n\t\t\treturn l;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet edge = arguments[0], l = arguments[1];\n\t\t\tvar eiList = edge.getEdgeIntersectionList();\n\t\t\teiList.addEndpoints();\n\t\t\tvar it = eiList.iterator();\n\t\t\tvar eiPrev = null;\n\t\t\tvar eiCurr = null;\n\t\t\tif (!it.hasNext()) return null;\n\t\t\tvar eiNext = it.next();\n\t\t\tdo {\n\t\t\t\teiPrev = eiCurr;\n\t\t\t\teiCurr = eiNext;\n\t\t\t\teiNext = null;\n\t\t\t\tif (it.hasNext()) eiNext = it.next();\n\t\t\t\tif (eiCurr !== null) {\n\t\t\t\t\tthis.createEdgeEndForPrev(edge, l, eiCurr, eiPrev);\n\t\t\t\t\tthis.createEdgeEndForNext(edge, l, eiCurr, eiNext);\n\t\t\t\t}\n\t\t\t} while (eiCurr !== null);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeEndBuilder;\n\t}\n});\n","import Location from '../../geom/Location';\nimport EdgeEnd from '../../geomgraph/EdgeEnd';\nimport Position from '../../geomgraph/Position';\nimport extend from '../../../../../extend';\nimport GeometryGraph from '../../geomgraph/GeometryGraph';\nimport Label from '../../geomgraph/Label';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Edge from '../../geomgraph/Edge';\nimport inherits from '../../../../../inherits';\nexport default function EdgeEndBundle() {\n\tthis._edgeEnds = new ArrayList();\n\tif (arguments.length === 1) {\n\t\tlet e = arguments[0];\n\t\tEdgeEndBundle.call(this, null, e);\n\t} else if (arguments.length === 2) {\n\t\tlet boundaryNodeRule = arguments[0], e = arguments[1];\n\t\tEdgeEnd.call(this, e.getEdge(), e.getCoordinate(), e.getDirectedCoordinate(), new Label(e.getLabel()));\n\t\tthis.insert(e);\n\t}\n}\ninherits(EdgeEndBundle, EdgeEnd);\nextend(EdgeEndBundle.prototype, {\n\tinsert: function (e) {\n\t\tthis._edgeEnds.add(e);\n\t},\n\tprint: function (out) {\n\t\tout.println(\"EdgeEndBundle--> Label: \" + this._label);\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar ee = it.next();\n\t\t\tee.print(out);\n\t\t\tout.println();\n\t\t}\n\t},\n\titerator: function () {\n\t\treturn this._edgeEnds.iterator();\n\t},\n\tgetEdgeEnds: function () {\n\t\treturn this._edgeEnds;\n\t},\n\tcomputeLabelOn: function (geomIndex, boundaryNodeRule) {\n\t\tvar boundaryCount = 0;\n\t\tvar foundInterior = false;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tvar loc = e.getLabel().getLocation(geomIndex);\n\t\t\tif (loc === Location.BOUNDARY) boundaryCount++;\n\t\t\tif (loc === Location.INTERIOR) foundInterior = true;\n\t\t}\n\t\tvar loc = Location.NONE;\n\t\tif (foundInterior) loc = Location.INTERIOR;\n\t\tif (boundaryCount > 0) {\n\t\t\tloc = GeometryGraph.determineBoundary(boundaryNodeRule, boundaryCount);\n\t\t}\n\t\tthis._label.setLocation(geomIndex, loc);\n\t},\n\tcomputeLabelSide: function (geomIndex, side) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tif (e.getLabel().isArea()) {\n\t\t\t\tvar loc = e.getLabel().getLocation(geomIndex, side);\n\t\t\t\tif (loc === Location.INTERIOR) {\n\t\t\t\t\tthis._label.setLocation(geomIndex, side, Location.INTERIOR);\n\t\t\t\t\treturn null;\n\t\t\t\t} else if (loc === Location.EXTERIOR) this._label.setLocation(geomIndex, side, Location.EXTERIOR);\n\t\t\t}\n\t\t}\n\t},\n\tgetLabel: function () {\n\t\treturn this._label;\n\t},\n\tcomputeLabelSides: function (geomIndex) {\n\t\tthis.computeLabelSide(geomIndex, Position.LEFT);\n\t\tthis.computeLabelSide(geomIndex, Position.RIGHT);\n\t},\n\tupdateIM: function (im) {\n\t\tEdge.updateIM(this._label, im);\n\t},\n\tcomputeLabel: function (boundaryNodeRule) {\n\t\tvar isArea = false;\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar e = it.next();\n\t\t\tif (e.getLabel().isArea()) isArea = true;\n\t\t}\n\t\tif (isArea) this._label = new Label(Location.NONE, Location.NONE, Location.NONE); else this._label = new Label(Location.NONE);\n\t\tfor (var i = 0; i < 2; i++) {\n\t\t\tthis.computeLabelOn(i, boundaryNodeRule);\n\t\t\tif (isArea) this.computeLabelSides(i);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeEndBundle;\n\t}\n});\n","import extend from '../../../../../extend';\nimport EdgeEndStar from '../../geomgraph/EdgeEndStar';\nimport inherits from '../../../../../inherits';\nimport EdgeEndBundle from './EdgeEndBundle';\nexport default function EdgeEndBundleStar() {\n\tEdgeEndStar.apply(this);\n}\ninherits(EdgeEndBundleStar, EdgeEndStar);\nextend(EdgeEndBundleStar.prototype, {\n\tupdateIM: function (im) {\n\t\tfor (var it = this.iterator(); it.hasNext(); ) {\n\t\t\tvar esb = it.next();\n\t\t\tesb.updateIM(im);\n\t\t}\n\t},\n\tinsert: function (e) {\n\t\tvar eb = this._edgeMap.get(e);\n\t\tif (eb === null) {\n\t\t\teb = new EdgeEndBundle(e);\n\t\t\tthis.insertEdgeEnd(e, eb);\n\t\t} else {\n\t\t\teb.insert(e);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EdgeEndBundleStar;\n\t}\n});\n","import Node from '../../geomgraph/Node';\nimport extend from '../../../../../extend';\nimport inherits from '../../../../../inherits';\nexport default function RelateNode() {\n\tlet coord = arguments[0], edges = arguments[1];\n\tNode.call(this, coord, edges);\n}\ninherits(RelateNode, Node);\nextend(RelateNode.prototype, {\n\tupdateIMFromEdges: function (im) {\n\t\tthis._edges.updateIM(im);\n\t},\n\tcomputeIM: function (im) {\n\t\tim.setAtLeastIfValid(this._label.getLocation(0), this._label.getLocation(1), 0);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RelateNode;\n\t}\n});\n","import EdgeEndBundleStar from './EdgeEndBundleStar';\nimport extend from '../../../../../extend';\nimport RelateNode from './RelateNode';\nimport inherits from '../../../../../inherits';\nimport NodeFactory from '../../geomgraph/NodeFactory';\nexport default function RelateNodeFactory() {\n\tNodeFactory.apply(this);\n}\ninherits(RelateNodeFactory, NodeFactory);\nextend(RelateNodeFactory.prototype, {\n\tcreateNode: function (coord) {\n\t\treturn new RelateNode(coord, new EdgeEndBundleStar());\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RelateNodeFactory;\n\t}\n});\n","import PointLocator from '../../algorithm/PointLocator';\nimport Location from '../../geom/Location';\nimport IntersectionMatrix from '../../geom/IntersectionMatrix';\nimport EdgeEndBuilder from './EdgeEndBuilder';\nimport extend from '../../../../../extend';\nimport NodeMap from '../../geomgraph/NodeMap';\nimport RelateNodeFactory from './RelateNodeFactory';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport Assert from '../../util/Assert';\nexport default function RelateComputer() {\n\tthis._li = new RobustLineIntersector();\n\tthis._ptLocator = new PointLocator();\n\tthis._arg = null;\n\tthis._nodes = new NodeMap(new RelateNodeFactory());\n\tthis._im = null;\n\tthis._isolatedEdges = new ArrayList();\n\tthis._invalidPoint = null;\n\tlet arg = arguments[0];\n\tthis._arg = arg;\n}\nextend(RelateComputer.prototype, {\n\tinsertEdgeEnds: function (ee) {\n\t\tfor (var i = ee.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis._nodes.add(e);\n\t\t}\n\t},\n\tcomputeProperIntersectionIM: function (intersector, im) {\n\t\tvar dimA = this._arg[0].getGeometry().getDimension();\n\t\tvar dimB = this._arg[1].getGeometry().getDimension();\n\t\tvar hasProper = intersector.hasProperIntersection();\n\t\tvar hasProperInterior = intersector.hasProperInteriorIntersection();\n\t\tif (dimA === 2 && dimB === 2) {\n\t\t\tif (hasProper) im.setAtLeast(\"212101212\");\n\t\t} else if (dimA === 2 && dimB === 1) {\n\t\t\tif (hasProper) im.setAtLeast(\"FFF0FFFF2\");\n\t\t\tif (hasProperInterior) im.setAtLeast(\"1FFFFF1FF\");\n\t\t} else if (dimA === 1 && dimB === 2) {\n\t\t\tif (hasProper) im.setAtLeast(\"F0FFFFFF2\");\n\t\t\tif (hasProperInterior) im.setAtLeast(\"1F1FFFFFF\");\n\t\t} else if (dimA === 1 && dimB === 1) {\n\t\t\tif (hasProperInterior) im.setAtLeast(\"0FFFFFFFF\");\n\t\t}\n\t},\n\tlabelIsolatedEdges: function (thisIndex, targetIndex) {\n\t\tfor (var ei = this._arg[thisIndex].getEdgeIterator(); ei.hasNext(); ) {\n\t\t\tvar e = ei.next();\n\t\t\tif (e.isIsolated()) {\n\t\t\t\tthis.labelIsolatedEdge(e, targetIndex, this._arg[targetIndex].getGeometry());\n\t\t\t\tthis._isolatedEdges.add(e);\n\t\t\t}\n\t\t}\n\t},\n\tlabelIsolatedEdge: function (e, targetIndex, target) {\n\t\tif (target.getDimension() > 0) {\n\t\t\tvar loc = this._ptLocator.locate(e.getCoordinate(), target);\n\t\t\te.getLabel().setAllLocations(targetIndex, loc);\n\t\t} else {\n\t\t\te.getLabel().setAllLocations(targetIndex, Location.EXTERIOR);\n\t\t}\n\t},\n\tcomputeIM: function () {\n\t\tvar im = new IntersectionMatrix();\n\t\tim.set(Location.EXTERIOR, Location.EXTERIOR, 2);\n\t\tif (!this._arg[0].getGeometry().getEnvelopeInternal().intersects(this._arg[1].getGeometry().getEnvelopeInternal())) {\n\t\t\tthis.computeDisjointIM(im);\n\t\t\treturn im;\n\t\t}\n\t\tthis._arg[0].computeSelfNodes(this._li, false);\n\t\tthis._arg[1].computeSelfNodes(this._li, false);\n\t\tvar intersector = this._arg[0].computeEdgeIntersections(this._arg[1], this._li, false);\n\t\tthis.computeIntersectionNodes(0);\n\t\tthis.computeIntersectionNodes(1);\n\t\tthis.copyNodesAndLabels(0);\n\t\tthis.copyNodesAndLabels(1);\n\t\tthis.labelIsolatedNodes();\n\t\tthis.computeProperIntersectionIM(intersector, im);\n\t\tvar eeBuilder = new EdgeEndBuilder();\n\t\tvar ee0 = eeBuilder.computeEdgeEnds(this._arg[0].getEdgeIterator());\n\t\tthis.insertEdgeEnds(ee0);\n\t\tvar ee1 = eeBuilder.computeEdgeEnds(this._arg[1].getEdgeIterator());\n\t\tthis.insertEdgeEnds(ee1);\n\t\tthis.labelNodeEdges();\n\t\tthis.labelIsolatedEdges(0, 1);\n\t\tthis.labelIsolatedEdges(1, 0);\n\t\tthis.updateIM(im);\n\t\treturn im;\n\t},\n\tlabelNodeEdges: function () {\n\t\tfor (var ni = this._nodes.iterator(); ni.hasNext(); ) {\n\t\t\tvar node = ni.next();\n\t\t\tnode.getEdges().computeLabelling(this._arg);\n\t\t}\n\t},\n\tcopyNodesAndLabels: function (argIndex) {\n\t\tfor (var i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n\t\t\tvar graphNode = i.next();\n\t\t\tvar newNode = this._nodes.addNode(graphNode.getCoordinate());\n\t\t\tnewNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex));\n\t\t}\n\t},\n\tlabelIntersectionNodes: function (argIndex) {\n\t\tfor (var i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar eLoc = e.getLabel().getLocation(argIndex);\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tvar n = this._nodes.find(ei.coord);\n\t\t\t\tif (n.getLabel().isNull(argIndex)) {\n\t\t\t\t\tif (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else n.setLabel(argIndex, Location.INTERIOR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tlabelIsolatedNode: function (n, targetIndex) {\n\t\tvar loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry());\n\t\tn.getLabel().setAllLocations(targetIndex, loc);\n\t},\n\tcomputeIntersectionNodes: function (argIndex) {\n\t\tfor (var i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tvar eLoc = e.getLabel().getLocation(argIndex);\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tvar n = this._nodes.addNode(ei.coord);\n\t\t\t\tif (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else {\n\t\t\t\t\tif (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tlabelIsolatedNodes: function () {\n\t\tfor (var ni = this._nodes.iterator(); ni.hasNext(); ) {\n\t\t\tvar n = ni.next();\n\t\t\tvar label = n.getLabel();\n\t\t\tAssert.isTrue(label.getGeometryCount() > 0, \"node with empty label found\");\n\t\t\tif (n.isIsolated()) {\n\t\t\t\tif (label.isNull(0)) this.labelIsolatedNode(n, 0); else this.labelIsolatedNode(n, 1);\n\t\t\t}\n\t\t}\n\t},\n\tupdateIM: function (im) {\n\t\tfor (var ei = this._isolatedEdges.iterator(); ei.hasNext(); ) {\n\t\t\tvar e = ei.next();\n\t\t\te.updateIM(im);\n\t\t}\n\t\tfor (var ni = this._nodes.iterator(); ni.hasNext(); ) {\n\t\t\tvar node = ni.next();\n\t\t\tnode.updateIM(im);\n\t\t\tnode.updateIMFromEdges(im);\n\t\t}\n\t},\n\tcomputeDisjointIM: function (im) {\n\t\tvar ga = this._arg[0].getGeometry();\n\t\tif (!ga.isEmpty()) {\n\t\t\tim.set(Location.INTERIOR, Location.EXTERIOR, ga.getDimension());\n\t\t\tim.set(Location.BOUNDARY, Location.EXTERIOR, ga.getBoundaryDimension());\n\t\t}\n\t\tvar gb = this._arg[1].getGeometry();\n\t\tif (!gb.isEmpty()) {\n\t\t\tim.set(Location.EXTERIOR, Location.INTERIOR, gb.getDimension());\n\t\t\tim.set(Location.EXTERIOR, Location.BOUNDARY, gb.getBoundaryDimension());\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RelateComputer;\n\t}\n});\n","import LineString from '../../geom/LineString';\nimport Coordinate from '../../geom/Coordinate';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nimport extend from '../../../../../extend';\nexport default function RectangleContains() {\n\tthis._rectEnv = null;\n\tlet rectangle = arguments[0];\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n}\nextend(RectangleContains.prototype, {\n\tisContainedInBoundary: function (geom) {\n\t\tif (geom instanceof Polygon) return false;\n\t\tif (geom instanceof Point) return this.isPointContainedInBoundary(geom);\n\t\tif (geom instanceof LineString) return this.isLineStringContainedInBoundary(geom);\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar comp = geom.getGeometryN(i);\n\t\t\tif (!this.isContainedInBoundary(comp)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\tisLineSegmentContainedInBoundary: function (p0, p1) {\n\t\tif (p0.equals(p1)) return this.isPointContainedInBoundary(p0);\n\t\tif (p0.x === p1.x) {\n\t\t\tif (p0.x === this._rectEnv.getMinX() || p0.x === this._rectEnv.getMaxX()) return true;\n\t\t} else if (p0.y === p1.y) {\n\t\t\tif (p0.y === this._rectEnv.getMinY() || p0.y === this._rectEnv.getMaxY()) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tisLineStringContainedInBoundary: function (line) {\n\t\tvar seq = line.getCoordinateSequence();\n\t\tvar p0 = new Coordinate();\n\t\tvar p1 = new Coordinate();\n\t\tfor (var i = 0; i < seq.size() - 1; i++) {\n\t\t\tseq.getCoordinate(i, p0);\n\t\t\tseq.getCoordinate(i + 1, p1);\n\t\t\tif (!this.isLineSegmentContainedInBoundary(p0, p1)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\tisPointContainedInBoundary: function () {\n\t\tif (arguments[0] instanceof Point) {\n\t\t\tlet point = arguments[0];\n\t\t\treturn this.isPointContainedInBoundary(point.getCoordinate());\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet pt = arguments[0];\n\t\t\treturn pt.x === this._rectEnv.getMinX() || pt.x === this._rectEnv.getMaxX() || pt.y === this._rectEnv.getMinY() || pt.y === this._rectEnv.getMaxY();\n\t\t}\n\t},\n\tcontains: function (geom) {\n\t\tif (!this._rectEnv.contains(geom.getEnvelopeInternal())) return false;\n\t\tif (this.isContainedInBoundary(geom)) return false;\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RectangleContains;\n\t}\n});\nRectangleContains.contains = function (rectangle, b) {\n\tvar rc = new RectangleContains(rectangle);\n\treturn rc.contains(b);\n};\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport RobustLineIntersector from './RobustLineIntersector';\nimport Envelope from '../geom/Envelope';\nexport default function RectangleLineIntersector() {\n\tthis._li = new RobustLineIntersector();\n\tthis._rectEnv = null;\n\tthis._diagUp0 = null;\n\tthis._diagUp1 = null;\n\tthis._diagDown0 = null;\n\tthis._diagDown1 = null;\n\tlet rectEnv = arguments[0];\n\tthis._rectEnv = rectEnv;\n\tthis._diagUp0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMinY());\n\tthis._diagUp1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMaxY());\n\tthis._diagDown0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMaxY());\n\tthis._diagDown1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMinY());\n}\nextend(RectangleLineIntersector.prototype, {\n\tintersects: function (p0, p1) {\n\t\tvar segEnv = new Envelope(p0, p1);\n\t\tif (!this._rectEnv.intersects(segEnv)) return false;\n\t\tif (this._rectEnv.intersects(p0)) return true;\n\t\tif (this._rectEnv.intersects(p1)) return true;\n\t\tif (p0.compareTo(p1) > 0) {\n\t\t\tvar tmp = p0;\n\t\t\tp0 = p1;\n\t\t\tp1 = tmp;\n\t\t}\n\t\tvar isSegUpwards = false;\n\t\tif (p1.y > p0.y) isSegUpwards = true;\n\t\tif (isSegUpwards) {\n\t\t\tthis._li.computeIntersection(p0, p1, this._diagDown0, this._diagDown1);\n\t\t} else {\n\t\t\tthis._li.computeIntersection(p0, p1, this._diagUp0, this._diagUp1);\n\t\t}\n\t\tif (this._li.hasIntersection()) return true;\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RectangleLineIntersector;\n\t}\n});\n","import extend from '../../../../../extend';\nimport GeometryCollection from '../GeometryCollection';\nexport default function ShortCircuitedGeometryVisitor() {\n\tthis._isDone = false;\n}\nextend(ShortCircuitedGeometryVisitor.prototype, {\n\tapplyTo: function (geom) {\n\t\tfor (var i = 0; i < geom.getNumGeometries() && !this._isDone; i++) {\n\t\t\tvar element = geom.getGeometryN(i);\n\t\t\tif (!(element instanceof GeometryCollection)) {\n\t\t\t\tthis.visit(element);\n\t\t\t\tif (this.isDone()) {\n\t\t\t\t\tthis._isDone = true;\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else this.applyTo(element);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ShortCircuitedGeometryVisitor;\n\t}\n});\n","import Coordinate from '../../geom/Coordinate';\nimport Polygon from '../../geom/Polygon';\nimport RectangleLineIntersector from '../../algorithm/RectangleLineIntersector';\nimport extend from '../../../../../extend';\nimport ShortCircuitedGeometryVisitor from '../../geom/util/ShortCircuitedGeometryVisitor';\nimport SimplePointInAreaLocator from '../../algorithm/locate/SimplePointInAreaLocator';\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter';\nimport inherits from '../../../../../inherits';\nexport default function RectangleIntersects() {\n\tthis._rectangle = null;\n\tthis._rectEnv = null;\n\tlet rectangle = arguments[0];\n\tthis._rectangle = rectangle;\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n}\nextend(RectangleIntersects.prototype, {\n\tintersects: function (geom) {\n\t\tif (!this._rectEnv.intersects(geom.getEnvelopeInternal())) return false;\n\t\tvar visitor = new EnvelopeIntersectsVisitor(this._rectEnv);\n\t\tvisitor.applyTo(geom);\n\t\tif (visitor.intersects()) return true;\n\t\tvar ecpVisitor = new GeometryContainsPointVisitor(this._rectangle);\n\t\tecpVisitor.applyTo(geom);\n\t\tif (ecpVisitor.containsPoint()) return true;\n\t\tvar riVisitor = new RectangleIntersectsSegmentVisitor(this._rectangle);\n\t\triVisitor.applyTo(geom);\n\t\tif (riVisitor.intersects()) return true;\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RectangleIntersects;\n\t}\n});\nRectangleIntersects.intersects = function (rectangle, b) {\n\tvar rp = new RectangleIntersects(rectangle);\n\treturn rp.intersects(b);\n};\nfunction EnvelopeIntersectsVisitor() {\n\tShortCircuitedGeometryVisitor.apply(this);\n\tthis._rectEnv = null;\n\tthis._intersects = false;\n\tlet rectEnv = arguments[0];\n\tthis._rectEnv = rectEnv;\n}\ninherits(EnvelopeIntersectsVisitor, ShortCircuitedGeometryVisitor);\nextend(EnvelopeIntersectsVisitor.prototype, {\n\tisDone: function () {\n\t\treturn this._intersects === true;\n\t},\n\tvisit: function (element) {\n\t\tvar elementEnv = element.getEnvelopeInternal();\n\t\tif (!this._rectEnv.intersects(elementEnv)) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this._rectEnv.contains(elementEnv)) {\n\t\t\tthis._intersects = true;\n\t\t\treturn null;\n\t\t}\n\t\tif (elementEnv.getMinX() >= this._rectEnv.getMinX() && elementEnv.getMaxX() <= this._rectEnv.getMaxX()) {\n\t\t\tthis._intersects = true;\n\t\t\treturn null;\n\t\t}\n\t\tif (elementEnv.getMinY() >= this._rectEnv.getMinY() && elementEnv.getMaxY() <= this._rectEnv.getMaxY()) {\n\t\t\tthis._intersects = true;\n\t\t\treturn null;\n\t\t}\n\t},\n\tintersects: function () {\n\t\treturn this._intersects;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn EnvelopeIntersectsVisitor;\n\t}\n});\nfunction GeometryContainsPointVisitor() {\n\tShortCircuitedGeometryVisitor.apply(this);\n\tthis._rectSeq = null;\n\tthis._rectEnv = null;\n\tthis._containsPoint = false;\n\tlet rectangle = arguments[0];\n\tthis._rectSeq = rectangle.getExteriorRing().getCoordinateSequence();\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n}\ninherits(GeometryContainsPointVisitor, ShortCircuitedGeometryVisitor);\nextend(GeometryContainsPointVisitor.prototype, {\n\tisDone: function () {\n\t\treturn this._containsPoint === true;\n\t},\n\tvisit: function (geom) {\n\t\tif (!(geom instanceof Polygon)) return null;\n\t\tvar elementEnv = geom.getEnvelopeInternal();\n\t\tif (!this._rectEnv.intersects(elementEnv)) return null;\n\t\tvar rectPt = new Coordinate();\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tthis._rectSeq.getCoordinate(i, rectPt);\n\t\t\tif (!elementEnv.contains(rectPt)) continue;\n\t\t\tif (SimplePointInAreaLocator.containsPointInPolygon(rectPt, geom)) {\n\t\t\t\tthis._containsPoint = true;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t},\n\tcontainsPoint: function () {\n\t\treturn this._containsPoint;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryContainsPointVisitor;\n\t}\n});\nfunction RectangleIntersectsSegmentVisitor() {\n\tShortCircuitedGeometryVisitor.apply(this);\n\tthis._rectEnv = null;\n\tthis._rectIntersector = null;\n\tthis._hasIntersection = false;\n\tthis._p0 = new Coordinate();\n\tthis._p1 = new Coordinate();\n\tlet rectangle = arguments[0];\n\tthis._rectEnv = rectangle.getEnvelopeInternal();\n\tthis._rectIntersector = new RectangleLineIntersector(this._rectEnv);\n}\ninherits(RectangleIntersectsSegmentVisitor, ShortCircuitedGeometryVisitor);\nextend(RectangleIntersectsSegmentVisitor.prototype, {\n\tintersects: function () {\n\t\treturn this._hasIntersection;\n\t},\n\tisDone: function () {\n\t\treturn this._hasIntersection === true;\n\t},\n\tvisit: function (geom) {\n\t\tvar elementEnv = geom.getEnvelopeInternal();\n\t\tif (!this._rectEnv.intersects(elementEnv)) return null;\n\t\tvar lines = LinearComponentExtracter.getLines(geom);\n\t\tthis.checkIntersectionWithLineStrings(lines);\n\t},\n\tcheckIntersectionWithLineStrings: function (lines) {\n\t\tfor (var i = lines.iterator(); i.hasNext(); ) {\n\t\t\tvar testLine = i.next();\n\t\t\tthis.checkIntersectionWithSegments(testLine);\n\t\t\tif (this._hasIntersection) return null;\n\t\t}\n\t},\n\tcheckIntersectionWithSegments: function (testLine) {\n\t\tvar seq1 = testLine.getCoordinateSequence();\n\t\tfor (var j = 1; j < seq1.size(); j++) {\n\t\t\tseq1.getCoordinate(j - 1, this._p0);\n\t\t\tseq1.getCoordinate(j, this._p1);\n\t\t\tif (this._rectIntersector.intersects(this._p0, this._p1)) {\n\t\t\t\tthis._hasIntersection = true;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RectangleIntersectsSegmentVisitor;\n\t}\n});\n","import RelateComputer from './RelateComputer';\nimport extend from '../../../../../extend';\nimport GeometryGraphOperation from '../GeometryGraphOperation';\nimport RectangleContains from '../predicate/RectangleContains';\nimport inherits from '../../../../../inherits';\nimport RectangleIntersects from '../predicate/RectangleIntersects';\nexport default function RelateOp() {\n\tthis._relate = null;\n\tif (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tGeometryGraphOperation.call(this, g0, g1);\n\t\tthis._relate = new RelateComputer(this._arg);\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2];\n\t\tGeometryGraphOperation.call(this, g0, g1, boundaryNodeRule);\n\t\tthis._relate = new RelateComputer(this._arg);\n\t}\n}\ninherits(RelateOp, GeometryGraphOperation);\nextend(RelateOp.prototype, {\n\tgetIntersectionMatrix: function () {\n\t\treturn this._relate.computeIM();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RelateOp;\n\t}\n});\nRelateOp.covers = function (g1, g2) {\n\tif (g2.getDimension() === 2 && g1.getDimension() < 2) {\n\t\treturn false;\n\t}\n\tif (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) {\n\t\treturn false;\n\t}\n\tif (!g1.getEnvelopeInternal().covers(g2.getEnvelopeInternal())) return false;\n\tif (g1.isRectangle()) {\n\t\treturn true;\n\t}\n\treturn new RelateOp(g1, g2).getIntersectionMatrix().isCovers();\n};\nRelateOp.intersects = function (g1, g2) {\n\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\tif (g1.isRectangle()) {\n\t\treturn RectangleIntersects.intersects(g1, g2);\n\t}\n\tif (g2.isRectangle()) {\n\t\treturn RectangleIntersects.intersects(g2, g1);\n\t}\n\tif (g1.isGeometryCollection() || g2.isGeometryCollection()) {\n\t\tvar r = false;\n\t\tfor (var i = 0; i < g1.getNumGeometries(); i++) {\n\t\t\tfor (var j = 0; j < g2.getNumGeometries(); j++) {\n\t\t\t\tif (g1.getGeometryN(i).intersects(g2.getGeometryN(j))) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\treturn new RelateOp(g1, g2).getIntersectionMatrix().isIntersects();\n};\nRelateOp.touches = function (g1, g2) {\n\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\treturn new RelateOp(g1, g2).getIntersectionMatrix().isTouches(g1.getDimension(), g2.getDimension());\n};\nRelateOp.relate = function () {\n\tif (arguments.length === 2) {\n\t\tlet a = arguments[0], b = arguments[1];\n\t\tvar relOp = new RelateOp(a, b);\n\t\tvar im = relOp.getIntersectionMatrix();\n\t\treturn im;\n\t} else if (arguments.length === 3) {\n\t\tlet a = arguments[0], b = arguments[1], boundaryNodeRule = arguments[2];\n\t\tvar relOp = new RelateOp(a, b, boundaryNodeRule);\n\t\tvar im = relOp.getIntersectionMatrix();\n\t\treturn im;\n\t}\n};\nRelateOp.overlaps = function (g1, g2) {\n\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\treturn new RelateOp(g1, g2).getIntersectionMatrix().isOverlaps(g1.getDimension(), g2.getDimension());\n};\nRelateOp.crosses = function (g1, g2) {\n\tif (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false;\n\treturn new RelateOp(g1, g2).getIntersectionMatrix().isCrosses(g1.getDimension(), g2.getDimension());\n};\nRelateOp.contains = function (g1, g2) {\n\tif (g2.getDimension() === 2 && g1.getDimension() < 2) {\n\t\treturn false;\n\t}\n\tif (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) {\n\t\treturn false;\n\t}\n\tif (!g1.getEnvelopeInternal().contains(g2.getEnvelopeInternal())) return false;\n\tif (g1.isRectangle()) {\n\t\treturn RectangleContains.contains(g1, g2);\n\t}\n\treturn new RelateOp(g1, g2).getIntersectionMatrix().isContains();\n};\n","import extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nexport default function GeometryCombiner() {\n\tthis._geomFactory = null;\n\tthis._skipEmpty = false;\n\tthis._inputGeoms = null;\n\tlet geoms = arguments[0];\n\tthis._geomFactory = GeometryCombiner.extractFactory(geoms);\n\tthis._inputGeoms = geoms;\n}\nextend(GeometryCombiner.prototype, {\n\textractElements: function (geom, elems) {\n\t\tif (geom === null) return null;\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar elemGeom = geom.getGeometryN(i);\n\t\t\tif (this._skipEmpty && elemGeom.isEmpty()) continue;\n\t\t\telems.add(elemGeom);\n\t\t}\n\t},\n\tcombine: function () {\n\t\tvar elems = new ArrayList();\n\t\tfor (var i = this._inputGeoms.iterator(); i.hasNext(); ) {\n\t\t\tvar g = i.next();\n\t\t\tthis.extractElements(g, elems);\n\t\t}\n\t\tif (elems.size() === 0) {\n\t\t\tif (this._geomFactory !== null) {\n\t\t\t\treturn this._geomFactory.createGeometryCollection();\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\treturn this._geomFactory.buildGeometry(elems);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryCombiner;\n\t}\n});\nGeometryCombiner.combine = function () {\n\tif (arguments.length === 1) {\n\t\tlet geoms = arguments[0];\n\t\tvar combiner = new GeometryCombiner(geoms);\n\t\treturn combiner.combine();\n\t} else if (arguments.length === 2) {\n\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\tvar combiner = new GeometryCombiner(GeometryCombiner.createList(g0, g1));\n\t\treturn combiner.combine();\n\t} else if (arguments.length === 3) {\n\t\tlet g0 = arguments[0], g1 = arguments[1], g2 = arguments[2];\n\t\tvar combiner = new GeometryCombiner(GeometryCombiner.createList(g0, g1, g2));\n\t\treturn combiner.combine();\n\t}\n};\nGeometryCombiner.extractFactory = function (geoms) {\n\tif (geoms.isEmpty()) return null;\n\treturn geoms.iterator().next().getFactory();\n};\nGeometryCombiner.createList = function () {\n\tif (arguments.length === 2) {\n\t\tlet obj0 = arguments[0], obj1 = arguments[1];\n\t\tvar list = new ArrayList();\n\t\tlist.add(obj0);\n\t\tlist.add(obj1);\n\t\treturn list;\n\t} else if (arguments.length === 3) {\n\t\tlet obj0 = arguments[0], obj1 = arguments[1], obj2 = arguments[2];\n\t\tvar list = new ArrayList();\n\t\tlist.add(obj0);\n\t\tlist.add(obj1);\n\t\tlist.add(obj2);\n\t\treturn list;\n\t}\n};\n","import PointLocator from '../../algorithm/PointLocator';\nimport Location from '../../geom/Location';\nimport TreeSet from '../../../../../java/util/TreeSet';\nimport extend from '../../../../../extend';\nimport GeometryCombiner from '../../geom/util/GeometryCombiner';\nimport CoordinateArrays from '../../geom/CoordinateArrays';\nexport default function PointGeometryUnion() {\n\tthis._pointGeom = null;\n\tthis._otherGeom = null;\n\tthis._geomFact = null;\n\tlet pointGeom = arguments[0], otherGeom = arguments[1];\n\tthis._pointGeom = pointGeom;\n\tthis._otherGeom = otherGeom;\n\tthis._geomFact = otherGeom.getFactory();\n}\nextend(PointGeometryUnion.prototype, {\n\tunion: function () {\n\t\tvar locater = new PointLocator();\n\t\tvar exteriorCoords = new TreeSet();\n\t\tfor (var i = 0; i < this._pointGeom.getNumGeometries(); i++) {\n\t\t\tvar point = this._pointGeom.getGeometryN(i);\n\t\t\tvar coord = point.getCoordinate();\n\t\t\tvar loc = locater.locate(coord, this._otherGeom);\n\t\t\tif (loc === Location.EXTERIOR) exteriorCoords.add(coord);\n\t\t}\n\t\tif (exteriorCoords.size() === 0) return this._otherGeom;\n\t\tvar ptComp = null;\n\t\tvar coords = CoordinateArrays.toCoordinateArray(exteriorCoords);\n\t\tif (coords.length === 1) {\n\t\t\tptComp = this._geomFact.createPoint(coords[0]);\n\t\t} else {\n\t\t\tptComp = this._geomFact.createMultiPointFromCoords(coords);\n\t\t}\n\t\treturn GeometryCombiner.combine(ptComp, this._otherGeom);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PointGeometryUnion;\n\t}\n});\nPointGeometryUnion.union = function (pointGeom, otherGeom) {\n\tvar unioner = new PointGeometryUnion(pointGeom, otherGeom);\n\treturn unioner.union();\n};\n","import Geometry from '../Geometry';\nimport hasInterface from '../../../../../hasInterface';\nimport extend from '../../../../../extend';\nimport GeometryCollection from '../GeometryCollection';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryFilter from '../GeometryFilter';\nimport List from '../../../../../java/util/List';\nexport default function GeometryExtracter() {\n\tthis._geometryType = null;\n\tthis._comps = null;\n\tlet geometryType = arguments[0], comps = arguments[1];\n\tthis._geometryType = geometryType;\n\tthis._comps = comps;\n}\nextend(GeometryExtracter.prototype, {\n\tfilter: function (geom) {\n\t\tif (this._geometryType === null || GeometryExtracter.isOfType(geom, this._geometryType)) this._comps.add(geom);\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryFilter];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryExtracter;\n\t}\n});\nGeometryExtracter.isOfType = function (geom, geometryType) {\n\tif (geom.getGeometryType() === geometryType) return true;\n\tif (geometryType === Geometry.TYPENAME_LINESTRING && geom.getGeometryType() === Geometry.TYPENAME_LINEARRING) return true;\n\treturn false;\n};\nGeometryExtracter.extract = function () {\n\tif (arguments.length === 2) {\n\t\tlet geom = arguments[0], geometryType = arguments[1];\n\t\treturn GeometryExtracter.extract(geom, geometryType, new ArrayList());\n\t} else if (arguments.length === 3) {\n\t\tif (hasInterface(arguments[2], List) && (arguments[0] instanceof Geometry && typeof arguments[1] === \"string\")) {\n\t\t\tlet geom = arguments[0], geometryType = arguments[1], list = arguments[2];\n\t\t\tif (geom.getGeometryType() === geometryType) {\n\t\t\t\tlist.add(geom);\n\t\t\t} else if (geom instanceof GeometryCollection) {\n\t\t\t\tgeom.apply(new GeometryExtracter(geometryType, list));\n\t\t\t}\n\t\t\treturn list;\n\t\t} else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Geometry && arguments[1] instanceof Class)) {\n\t\t\tlet geom = arguments[0], clz = arguments[1], list = arguments[2];\n\t\t\treturn GeometryExtracter.extract(geom, GeometryExtracter.toGeometryType(clz), list);\n\t\t}\n\t}\n};\n","import PolygonExtracter from '../../geom/util/PolygonExtracter';\nimport STRtree from '../../index/strtree/STRtree';\nimport Geometry from '../../geom/Geometry';\nimport hasInterface from '../../../../../hasInterface';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport extend from '../../../../../extend';\nimport GeometryCombiner from '../../geom/util/GeometryCombiner';\nimport Polygonal from '../../geom/Polygonal';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport List from '../../../../../java/util/List';\nexport default function CascadedPolygonUnion() {\n\tthis._inputPolys = null;\n\tthis._geomFactory = null;\n\tlet polys = arguments[0];\n\tthis._inputPolys = polys;\n\tif (this._inputPolys === null) this._inputPolys = new ArrayList();\n}\nextend(CascadedPolygonUnion.prototype, {\n\treduceToGeometries: function (geomTree) {\n\t\tvar geoms = new ArrayList();\n\t\tfor (var i = geomTree.iterator(); i.hasNext(); ) {\n\t\t\tvar o = i.next();\n\t\t\tvar geom = null;\n\t\t\tif (hasInterface(o, List)) {\n\t\t\t\tgeom = this.unionTree(o);\n\t\t\t} else if (o instanceof Geometry) {\n\t\t\t\tgeom = o;\n\t\t\t}\n\t\t\tgeoms.add(geom);\n\t\t}\n\t\treturn geoms;\n\t},\n\textractByEnvelope: function (env, geom, disjointGeoms) {\n\t\tvar intersectingGeoms = new ArrayList();\n\t\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\t\tvar elem = geom.getGeometryN(i);\n\t\t\tif (elem.getEnvelopeInternal().intersects(env)) intersectingGeoms.add(elem); else disjointGeoms.add(elem);\n\t\t}\n\t\treturn this._geomFactory.buildGeometry(intersectingGeoms);\n\t},\n\tunionOptimized: function (g0, g1) {\n\t\tvar g0Env = g0.getEnvelopeInternal();\n\t\tvar g1Env = g1.getEnvelopeInternal();\n\t\tif (!g0Env.intersects(g1Env)) {\n\t\t\tvar combo = GeometryCombiner.combine(g0, g1);\n\t\t\treturn combo;\n\t\t}\n\t\tif (g0.getNumGeometries() <= 1 && g1.getNumGeometries() <= 1) return this.unionActual(g0, g1);\n\t\tvar commonEnv = g0Env.intersection(g1Env);\n\t\treturn this.unionUsingEnvelopeIntersection(g0, g1, commonEnv);\n\t},\n\tunion: function () {\n\t\tif (this._inputPolys === null) throw new IllegalStateException(\"union() method cannot be called twice\");\n\t\tif (this._inputPolys.isEmpty()) return null;\n\t\tthis._geomFactory = this._inputPolys.iterator().next().getFactory();\n\t\tvar index = new STRtree(CascadedPolygonUnion.STRTREE_NODE_CAPACITY);\n\t\tfor (var i = this._inputPolys.iterator(); i.hasNext(); ) {\n\t\t\tvar item = i.next();\n\t\t\tindex.insert(item.getEnvelopeInternal(), item);\n\t\t}\n\t\tthis._inputPolys = null;\n\t\tvar itemTree = index.itemsTree();\n\t\tvar unionAll = this.unionTree(itemTree);\n\t\treturn unionAll;\n\t},\n\tbinaryUnion: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geoms = arguments[0];\n\t\t\treturn this.binaryUnion(geoms, 0, geoms.size());\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet geoms = arguments[0], start = arguments[1], end = arguments[2];\n\t\t\tif (end - start <= 1) {\n\t\t\t\tvar g0 = CascadedPolygonUnion.getGeometry(geoms, start);\n\t\t\t\treturn this.unionSafe(g0, null);\n\t\t\t} else if (end - start === 2) {\n\t\t\t\treturn this.unionSafe(CascadedPolygonUnion.getGeometry(geoms, start), CascadedPolygonUnion.getGeometry(geoms, start + 1));\n\t\t\t} else {\n\t\t\t\tvar mid = Math.trunc((end + start) / 2);\n\t\t\t\tvar g0 = this.binaryUnion(geoms, start, mid);\n\t\t\t\tvar g1 = this.binaryUnion(geoms, mid, end);\n\t\t\t\treturn this.unionSafe(g0, g1);\n\t\t\t}\n\t\t}\n\t},\n\trepeatedUnion: function (geoms) {\n\t\tvar union = null;\n\t\tfor (var i = geoms.iterator(); i.hasNext(); ) {\n\t\t\tvar g = i.next();\n\t\t\tif (union === null) union = g.copy(); else union = union.union(g);\n\t\t}\n\t\treturn union;\n\t},\n\tunionSafe: function (g0, g1) {\n\t\tif (g0 === null && g1 === null) return null;\n\t\tif (g0 === null) return g1.copy();\n\t\tif (g1 === null) return g0.copy();\n\t\treturn this.unionOptimized(g0, g1);\n\t},\n\tunionActual: function (g0, g1) {\n\t\treturn CascadedPolygonUnion.restrictToPolygons(g0.union(g1));\n\t},\n\tunionTree: function (geomTree) {\n\t\tvar geoms = this.reduceToGeometries(geomTree);\n\t\tvar union = this.binaryUnion(geoms);\n\t\treturn union;\n\t},\n\tunionUsingEnvelopeIntersection: function (g0, g1, common) {\n\t\tvar disjointPolys = new ArrayList();\n\t\tvar g0Int = this.extractByEnvelope(common, g0, disjointPolys);\n\t\tvar g1Int = this.extractByEnvelope(common, g1, disjointPolys);\n\t\tvar union = this.unionActual(g0Int, g1Int);\n\t\tdisjointPolys.add(union);\n\t\tvar overallUnion = GeometryCombiner.combine(disjointPolys);\n\t\treturn overallUnion;\n\t},\n\tbufferUnion: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tvar factory = geoms.get(0).getFactory();\n\t\t\tvar gColl = factory.buildGeometry(geoms);\n\t\t\tvar unionAll = gColl.buffer(0.0);\n\t\t\treturn unionAll;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet g0 = arguments[0], g1 = arguments[1];\n\t\t\tvar factory = g0.getFactory();\n\t\t\tvar gColl = factory.createGeometryCollection([g0, g1]);\n\t\t\tvar unionAll = gColl.buffer(0.0);\n\t\t\treturn unionAll;\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn CascadedPolygonUnion;\n\t}\n});\nCascadedPolygonUnion.restrictToPolygons = function (g) {\n\tif (hasInterface(g, Polygonal)) {\n\t\treturn g;\n\t}\n\tvar polygons = PolygonExtracter.getPolygons(g);\n\tif (polygons.size() === 1) return polygons.get(0);\n\treturn g.getFactory().createMultiPolygon(GeometryFactory.toPolygonArray(polygons));\n};\nCascadedPolygonUnion.getGeometry = function (list, index) {\n\tif (index >= list.size()) return null;\n\treturn list.get(index);\n};\nCascadedPolygonUnion.union = function (polys) {\n\tvar op = new CascadedPolygonUnion(polys);\n\treturn op.union();\n};\nCascadedPolygonUnion.STRTREE_NODE_CAPACITY = 4;\n","import Geometry from '../../geom/Geometry';\nimport PointGeometryUnion from './PointGeometryUnion';\nimport hasInterface from '../../../../../hasInterface';\nimport Collection from '../../../../../java/util/Collection';\nimport SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport GeometryExtracter from '../../geom/util/GeometryExtracter';\nimport OverlayOp from '../overlay/OverlayOp';\nimport CascadedPolygonUnion from './CascadedPolygonUnion';\nexport default function UnaryUnionOp() {\n\tthis._polygons = new ArrayList();\n\tthis._lines = new ArrayList();\n\tthis._points = new ArrayList();\n\tthis._geomFact = null;\n\tif (arguments.length === 1) {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tthis.extract(geoms);\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tthis.extract(geom);\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet geoms = arguments[0], geomFact = arguments[1];\n\t\tthis._geomFact = geomFact;\n\t\tthis.extract(geoms);\n\t}\n}\nextend(UnaryUnionOp.prototype, {\n\tunionNoOpt: function (g0) {\n\t\tvar empty = this._geomFact.createPoint();\n\t\treturn SnapIfNeededOverlayOp.overlayOp(g0, empty, OverlayOp.UNION);\n\t},\n\tunionWithNull: function (g0, g1) {\n\t\tif (g0 === null && g1 === null) return null;\n\t\tif (g1 === null) return g0;\n\t\tif (g0 === null) return g1;\n\t\treturn g0.union(g1);\n\t},\n\textract: function () {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tfor (var i = geoms.iterator(); i.hasNext(); ) {\n\t\t\t\tvar geom = i.next();\n\t\t\t\tthis.extract(geom);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tif (this._geomFact === null) this._geomFact = geom.getFactory();\n\t\t\tGeometryExtracter.extract(geom, Geometry.TYPENAME_POLYGON, this._polygons);\n\t\t\tGeometryExtracter.extract(geom, Geometry.TYPENAME_LINESTRING, this._lines);\n\t\t\tGeometryExtracter.extract(geom, Geometry.TYPENAME_POINT, this._points);\n\t\t}\n\t},\n\tunion: function () {\n\t\tif (this._geomFact === null) {\n\t\t\treturn null;\n\t\t}\n\t\tvar unionPoints = null;\n\t\tif (this._points.size() > 0) {\n\t\t\tvar ptGeom = this._geomFact.buildGeometry(this._points);\n\t\t\tunionPoints = this.unionNoOpt(ptGeom);\n\t\t}\n\t\tvar unionLines = null;\n\t\tif (this._lines.size() > 0) {\n\t\t\tvar lineGeom = this._geomFact.buildGeometry(this._lines);\n\t\t\tunionLines = this.unionNoOpt(lineGeom);\n\t\t}\n\t\tvar unionPolygons = null;\n\t\tif (this._polygons.size() > 0) {\n\t\t\tunionPolygons = CascadedPolygonUnion.union(this._polygons);\n\t\t}\n\t\tvar unionLA = this.unionWithNull(unionLines, unionPolygons);\n\t\tvar union = null;\n\t\tif (unionPoints === null) union = unionLA; else if (unionLA === null) union = unionPoints; else union = PointGeometryUnion.union(unionPoints, unionLA);\n\t\tif (union === null) return this._geomFact.createGeometryCollection();\n\t\treturn union;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn UnaryUnionOp;\n\t}\n});\nUnaryUnionOp.union = function () {\n\tif (arguments.length === 1) {\n\t\tif (hasInterface(arguments[0], Collection)) {\n\t\t\tlet geoms = arguments[0];\n\t\t\tvar op = new UnaryUnionOp(geoms);\n\t\t\treturn op.union();\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tvar op = new UnaryUnionOp(geom);\n\t\t\treturn op.union();\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet geoms = arguments[0], geomFact = arguments[1];\n\t\tvar op = new UnaryUnionOp(geoms, geomFact);\n\t\treturn op.union();\n\t}\n};\n","import Location from '../../geom/Location';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Position from '../../geomgraph/Position';\nimport Polygon from '../../geom/Polygon';\nimport extend from '../../../../../extend';\nimport MultiPolygon from '../../geom/MultiPolygon';\nimport MaximalEdgeRing from '../overlay/MaximalEdgeRing';\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Assert from '../../util/Assert';\nimport PlanarGraph from '../../geomgraph/PlanarGraph';\nexport default function ConnectedInteriorTester() {\n\tthis._geometryFactory = new GeometryFactory();\n\tthis._geomGraph = null;\n\tthis._disconnectedRingcoord = null;\n\tlet geomGraph = arguments[0];\n\tthis._geomGraph = geomGraph;\n}\nextend(ConnectedInteriorTester.prototype, {\n\tvisitInteriorRing: function (ring, graph) {\n\t\tvar pts = ring.getCoordinates();\n\t\tvar pt0 = pts[0];\n\t\tvar pt1 = ConnectedInteriorTester.findDifferentPoint(pts, pt0);\n\t\tvar e = graph.findEdgeInSameDirection(pt0, pt1);\n\t\tvar de = graph.findEdgeEnd(e);\n\t\tvar intDe = null;\n\t\tif (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) {\n\t\t\tintDe = de;\n\t\t} else if (de.getSym().getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) {\n\t\t\tintDe = de.getSym();\n\t\t}\n\t\tAssert.isTrue(intDe !== null, \"unable to find dirEdge with Interior on RHS\");\n\t\tthis.visitLinkedDirectedEdges(intDe);\n\t},\n\tvisitShellInteriors: function (g, graph) {\n\t\tif (g instanceof Polygon) {\n\t\t\tvar p = g;\n\t\t\tthis.visitInteriorRing(p.getExteriorRing(), graph);\n\t\t}\n\t\tif (g instanceof MultiPolygon) {\n\t\t\tvar mp = g;\n\t\t\tfor (var i = 0; i < mp.getNumGeometries(); i++) {\n\t\t\t\tvar p = mp.getGeometryN(i);\n\t\t\t\tthis.visitInteriorRing(p.getExteriorRing(), graph);\n\t\t\t}\n\t\t}\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._disconnectedRingcoord;\n\t},\n\tsetInteriorEdgesInResult: function (graph) {\n\t\tfor (var it = graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) {\n\t\t\t\tde.setInResult(true);\n\t\t\t}\n\t\t}\n\t},\n\tvisitLinkedDirectedEdges: function (start) {\n\t\tvar startDe = start;\n\t\tvar de = start;\n\t\tdo {\n\t\t\tAssert.isTrue(de !== null, \"found null Directed Edge\");\n\t\t\tde.setVisited(true);\n\t\t\tde = de.getNext();\n\t\t} while (de !== startDe);\n\t},\n\tbuildEdgeRings: function (dirEdges) {\n\t\tvar edgeRings = new ArrayList();\n\t\tfor (var it = dirEdges.iterator(); it.hasNext(); ) {\n\t\t\tvar de = it.next();\n\t\t\tif (de.isInResult() && de.getEdgeRing() === null) {\n\t\t\t\tvar er = new MaximalEdgeRing(de, this._geometryFactory);\n\t\t\t\ter.linkDirectedEdgesForMinimalEdgeRings();\n\t\t\t\tvar minEdgeRings = er.buildMinimalRings();\n\t\t\t\tedgeRings.addAll(minEdgeRings);\n\t\t\t}\n\t\t}\n\t\treturn edgeRings;\n\t},\n\thasUnvisitedShellEdge: function (edgeRings) {\n\t\tfor (var i = 0; i < edgeRings.size(); i++) {\n\t\t\tvar er = edgeRings.get(i);\n\t\t\tif (er.isHole()) continue;\n\t\t\tvar edges = er.getEdges();\n\t\t\tvar de = edges.get(0);\n\t\t\tif (de.getLabel().getLocation(0, Position.RIGHT) !== Location.INTERIOR) continue;\n\t\t\tfor (var j = 0; j < edges.size(); j++) {\n\t\t\t\tde = edges.get(j);\n\t\t\t\tif (!de.isVisited()) {\n\t\t\t\t\tthis._disconnectedRingcoord = de.getCoordinate();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tisInteriorsConnected: function () {\n\t\tvar splitEdges = new ArrayList();\n\t\tthis._geomGraph.computeSplitEdges(splitEdges);\n\t\tvar graph = new PlanarGraph(new OverlayNodeFactory());\n\t\tgraph.addEdges(splitEdges);\n\t\tthis.setInteriorEdgesInResult(graph);\n\t\tgraph.linkResultDirectedEdges();\n\t\tvar edgeRings = this.buildEdgeRings(graph.getEdgeEnds());\n\t\tthis.visitShellInteriors(this._geomGraph.getGeometry(), graph);\n\t\treturn !this.hasUnvisitedShellEdge(edgeRings);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ConnectedInteriorTester;\n\t}\n});\nConnectedInteriorTester.findDifferentPoint = function (coord, pt) {\n\tfor (var i = 0; i < coord.length; i++) {\n\t\tif (!coord[i].equals(pt)) return coord[i];\n\t}\n\treturn null;\n};\n","import Location from '../../geom/Location';\nimport EdgeEndBuilder from './EdgeEndBuilder';\nimport extend from '../../../../../extend';\nimport NodeMap from '../../geomgraph/NodeMap';\nimport RelateNodeFactory from './RelateNodeFactory';\nexport default function RelateNodeGraph() {\n\tthis._nodes = new NodeMap(new RelateNodeFactory());\n}\nextend(RelateNodeGraph.prototype, {\n\tinsertEdgeEnds: function (ee) {\n\t\tfor (var i = ee.iterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis._nodes.add(e);\n\t\t}\n\t},\n\tgetNodeIterator: function () {\n\t\treturn this._nodes.iterator();\n\t},\n\tcopyNodesAndLabels: function (geomGraph, argIndex) {\n\t\tfor (var nodeIt = geomGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n\t\t\tvar graphNode = nodeIt.next();\n\t\t\tvar newNode = this._nodes.addNode(graphNode.getCoordinate());\n\t\t\tnewNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex));\n\t\t}\n\t},\n\tbuild: function (geomGraph) {\n\t\tthis.computeIntersectionNodes(geomGraph, 0);\n\t\tthis.copyNodesAndLabels(geomGraph, 0);\n\t\tvar eeBuilder = new EdgeEndBuilder();\n\t\tvar eeList = eeBuilder.computeEdgeEnds(geomGraph.getEdgeIterator());\n\t\tthis.insertEdgeEnds(eeList);\n\t},\n\tcomputeIntersectionNodes: function (geomGraph, argIndex) {\n\t\tfor (var edgeIt = geomGraph.getEdgeIterator(); edgeIt.hasNext(); ) {\n\t\t\tvar e = edgeIt.next();\n\t\t\tvar eLoc = e.getLabel().getLocation(argIndex);\n\t\t\tfor (var eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n\t\t\t\tvar ei = eiIt.next();\n\t\t\t\tvar n = this._nodes.addNode(ei.coord);\n\t\t\t\tif (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else {\n\t\t\t\t\tif (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn RelateNodeGraph;\n\t}\n});\n","import RelateNodeGraph from '../relate/RelateNodeGraph';\nimport extend from '../../../../../extend';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nexport default function ConsistentAreaTester() {\n\tthis._li = new RobustLineIntersector();\n\tthis._geomGraph = null;\n\tthis._nodeGraph = new RelateNodeGraph();\n\tthis._invalidPoint = null;\n\tlet geomGraph = arguments[0];\n\tthis._geomGraph = geomGraph;\n}\nextend(ConsistentAreaTester.prototype, {\n\tisNodeEdgeAreaLabelsConsistent: function () {\n\t\tfor (var nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n\t\t\tvar node = nodeIt.next();\n\t\t\tif (!node.getEdges().isAreaLabelsConsistent(this._geomGraph)) {\n\t\t\t\tthis._invalidPoint = node.getCoordinate().copy();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\tgetInvalidPoint: function () {\n\t\treturn this._invalidPoint;\n\t},\n\thasDuplicateRings: function () {\n\t\tfor (var nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n\t\t\tvar node = nodeIt.next();\n\t\t\tfor (var i = node.getEdges().iterator(); i.hasNext(); ) {\n\t\t\t\tvar eeb = i.next();\n\t\t\t\tif (eeb.getEdgeEnds().size() > 1) {\n\t\t\t\t\tthis._invalidPoint = eeb.getEdge().getCoordinate(0);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tisNodeConsistentArea: function () {\n\t\tvar intersector = this._geomGraph.computeSelfNodes(this._li, true, true);\n\t\tif (intersector.hasProperIntersection()) {\n\t\t\tthis._invalidPoint = intersector.getProperIntersectionPoint();\n\t\t\treturn false;\n\t\t}\n\t\tthis._nodeGraph.build(this._geomGraph);\n\t\treturn this.isNodeEdgeAreaLabelsConsistent();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ConsistentAreaTester;\n\t}\n});\n","import STRtree from '../../index/strtree/STRtree';\nimport IsValidOp from './IsValidOp';\nimport PointLocation from '../../algorithm/PointLocation';\nimport extend from '../../../../../extend';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Envelope from '../../geom/Envelope';\nexport default function IndexedNestedRingTester() {\n\tthis._graph = null;\n\tthis._rings = new ArrayList();\n\tthis._totalEnv = new Envelope();\n\tthis._index = null;\n\tthis._nestedPt = null;\n\tlet graph = arguments[0];\n\tthis._graph = graph;\n}\nextend(IndexedNestedRingTester.prototype, {\n\tbuildIndex: function () {\n\t\tthis._index = new STRtree();\n\t\tfor (var i = 0; i < this._rings.size(); i++) {\n\t\t\tvar ring = this._rings.get(i);\n\t\t\tvar env = ring.getEnvelopeInternal();\n\t\t\tthis._index.insert(env, ring);\n\t\t}\n\t},\n\tgetNestedPoint: function () {\n\t\treturn this._nestedPt;\n\t},\n\tisNonNested: function () {\n\t\tthis.buildIndex();\n\t\tfor (var i = 0; i < this._rings.size(); i++) {\n\t\t\tvar innerRing = this._rings.get(i);\n\t\t\tvar innerRingPts = innerRing.getCoordinates();\n\t\t\tvar results = this._index.query(innerRing.getEnvelopeInternal());\n\t\t\tfor (var j = 0; j < results.size(); j++) {\n\t\t\t\tvar searchRing = results.get(j);\n\t\t\t\tvar searchRingPts = searchRing.getCoordinates();\n\t\t\t\tif (innerRing === searchRing) continue;\n\t\t\t\tif (!innerRing.getEnvelopeInternal().intersects(searchRing.getEnvelopeInternal())) continue;\n\t\t\t\tvar innerRingPt = IsValidOp.findPtNotNode(innerRingPts, searchRing, this._graph);\n\t\t\t\tif (innerRingPt === null) continue;\n\t\t\t\tvar isInside = PointLocation.isInRing(innerRingPt, searchRingPts);\n\t\t\t\tif (isInside) {\n\t\t\t\t\tthis._nestedPt = innerRingPt;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\tadd: function (ring) {\n\t\tthis._rings.add(ring);\n\t\tthis._totalEnv.expandToInclude(ring.getEnvelopeInternal());\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IndexedNestedRingTester;\n\t}\n});\n","import extend from '../../../../../extend';\nexport default function TopologyValidationError() {\n\tthis._errorType = null;\n\tthis._pt = null;\n\tif (arguments.length === 1) {\n\t\tlet errorType = arguments[0];\n\t\tTopologyValidationError.call(this, errorType, null);\n\t} else if (arguments.length === 2) {\n\t\tlet errorType = arguments[0], pt = arguments[1];\n\t\tthis._errorType = errorType;\n\t\tif (pt !== null) this._pt = pt.copy();\n\t}\n}\nextend(TopologyValidationError.prototype, {\n\tgetErrorType: function () {\n\t\treturn this._errorType;\n\t},\n\tgetMessage: function () {\n\t\treturn TopologyValidationError.errMsg[this._errorType];\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._pt;\n\t},\n\ttoString: function () {\n\t\tvar locStr = \"\";\n\t\tif (this._pt !== null) locStr = \" at or near point \" + this._pt;\n\t\treturn this.getMessage() + locStr;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TopologyValidationError;\n\t}\n});\nTopologyValidationError.ERROR = 0;\nTopologyValidationError.REPEATED_POINT = 1;\nTopologyValidationError.HOLE_OUTSIDE_SHELL = 2;\nTopologyValidationError.NESTED_HOLES = 3;\nTopologyValidationError.DISCONNECTED_INTERIOR = 4;\nTopologyValidationError.SELF_INTERSECTION = 5;\nTopologyValidationError.RING_SELF_INTERSECTION = 6;\nTopologyValidationError.NESTED_SHELLS = 7;\nTopologyValidationError.DUPLICATE_RINGS = 8;\nTopologyValidationError.TOO_FEW_POINTS = 9;\nTopologyValidationError.INVALID_COORDINATE = 10;\nTopologyValidationError.RING_NOT_CLOSED = 11;\nTopologyValidationError.errMsg = [\"Topology Validation Error\", \"Repeated Point\", \"Hole lies outside shell\", \"Holes are nested\", \"Interior is disconnected\", \"Self-intersection\", \"Ring Self-intersection\", \"Nested shells\", \"Duplicate Rings\", \"Too few distinct points in geometry component\", \"Invalid Coordinate\", \"Ring is not closed\"];\n","import Location from '../../geom/Location';\nimport TreeSet from '../../../../../java/util/TreeSet';\nimport LineString from '../../geom/LineString';\nimport Geometry from '../../geom/Geometry';\nimport ConnectedInteriorTester from './ConnectedInteriorTester';\nimport Coordinate from '../../geom/Coordinate';\nimport Point from '../../geom/Point';\nimport Polygon from '../../geom/Polygon';\nimport MultiPoint from '../../geom/MultiPoint';\nimport PointLocation from '../../algorithm/PointLocation';\nimport LinearRing from '../../geom/LinearRing';\nimport Double from '../../../../../java/lang/Double';\nimport extend from '../../../../../extend';\nimport GeometryGraph from '../../geomgraph/GeometryGraph';\nimport MultiPolygon from '../../geom/MultiPolygon';\nimport ConsistentAreaTester from './ConsistentAreaTester';\nimport GeometryCollection from '../../geom/GeometryCollection';\nimport IndexedNestedRingTester from './IndexedNestedRingTester';\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector';\nimport TopologyValidationError from './TopologyValidationError';\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator';\nimport Assert from '../../util/Assert';\nexport default function IsValidOp() {\n\tthis._parentGeometry = null;\n\tthis._isSelfTouchingRingFormingHoleValid = false;\n\tthis._validErr = null;\n\tlet parentGeometry = arguments[0];\n\tthis._parentGeometry = parentGeometry;\n}\nextend(IsValidOp.prototype, {\n\tcheckInvalidCoordinates: function () {\n\t\tif (arguments[0] instanceof Array) {\n\t\t\tlet coords = arguments[0];\n\t\t\tfor (var i = 0; i < coords.length; i++) {\n\t\t\t\tif (!IsValidOp.isValid(coords[i])) {\n\t\t\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.INVALID_COORDINATE, coords[i]);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Polygon) {\n\t\t\tlet poly = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(poly.getExteriorRing().getCoordinates());\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\t\t\tthis.checkInvalidCoordinates(poly.getInteriorRingN(i).getCoordinates());\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t}\n\t},\n\tcheckHolesNotNested: function (p, graph) {\n\t\tvar nestedTester = new IndexedNestedRingTester(graph);\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar innerHole = p.getInteriorRingN(i);\n\t\t\tnestedTester.add(innerHole);\n\t\t}\n\t\tvar isNonNested = nestedTester.isNonNested();\n\t\tif (!isNonNested) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.NESTED_HOLES, nestedTester.getNestedPoint());\n\t\t}\n\t},\n\tcheckConsistentArea: function (graph) {\n\t\tvar cat = new ConsistentAreaTester(graph);\n\t\tvar isValidArea = cat.isNodeConsistentArea();\n\t\tif (!isValidArea) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.SELF_INTERSECTION, cat.getInvalidPoint());\n\t\t\treturn null;\n\t\t}\n\t\tif (cat.hasDuplicateRings()) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.DUPLICATE_RINGS, cat.getInvalidPoint());\n\t\t}\n\t},\n\tisValid: function () {\n\t\tthis.checkValid(this._parentGeometry);\n\t\treturn this._validErr === null;\n\t},\n\tcheckShellInsideHole: function (shell, hole, graph) {\n\t\tvar shellPts = shell.getCoordinates();\n\t\tvar holePts = hole.getCoordinates();\n\t\tvar shellPt = IsValidOp.findPtNotNode(shellPts, hole, graph);\n\t\tif (shellPt !== null) {\n\t\t\tvar insideHole = PointLocation.isInRing(shellPt, holePts);\n\t\t\tif (!insideHole) {\n\t\t\t\treturn shellPt;\n\t\t\t}\n\t\t}\n\t\tvar holePt = IsValidOp.findPtNotNode(holePts, shell, graph);\n\t\tif (holePt !== null) {\n\t\t\tvar insideShell = PointLocation.isInRing(holePt, shellPts);\n\t\t\tif (insideShell) {\n\t\t\t\treturn holePt;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\tAssert.shouldNeverReachHere(\"points in shell and hole appear to be equal\");\n\t\treturn null;\n\t},\n\tcheckNoSelfIntersectingRings: function (graph) {\n\t\tfor (var i = graph.getEdgeIterator(); i.hasNext(); ) {\n\t\t\tvar e = i.next();\n\t\t\tthis.checkNoSelfIntersectingRing(e.getEdgeIntersectionList());\n\t\t\tif (this._validErr !== null) return null;\n\t\t}\n\t},\n\tcheckConnectedInteriors: function (graph) {\n\t\tvar cit = new ConnectedInteriorTester(graph);\n\t\tif (!cit.isInteriorsConnected()) this._validErr = new TopologyValidationError(TopologyValidationError.DISCONNECTED_INTERIOR, cit.getCoordinate());\n\t},\n\tcheckNoSelfIntersectingRing: function (eiList) {\n\t\tvar nodeSet = new TreeSet();\n\t\tvar isFirst = true;\n\t\tfor (var i = eiList.iterator(); i.hasNext(); ) {\n\t\t\tvar ei = i.next();\n\t\t\tif (isFirst) {\n\t\t\t\tisFirst = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nodeSet.contains(ei.coord)) {\n\t\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.RING_SELF_INTERSECTION, ei.coord);\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\tnodeSet.add(ei.coord);\n\t\t\t}\n\t\t}\n\t},\n\tcheckHolesInShell: function (p, graph) {\n\t\tvar shell = p.getExteriorRing();\n\t\tvar pir = new IndexedPointInAreaLocator(shell);\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar hole = p.getInteriorRingN(i);\n\t\t\tvar holePt = IsValidOp.findPtNotNode(hole.getCoordinates(), shell, graph);\n\t\t\tif (holePt === null) return null;\n\t\t\tvar outside = Location.EXTERIOR === pir.locate(holePt);\n\t\t\tif (outside) {\n\t\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.HOLE_OUTSIDE_SHELL, holePt);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t},\n\tcheckTooFewPoints: function (graph) {\n\t\tif (graph.hasTooFewPoints()) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.TOO_FEW_POINTS, graph.getInvalidPoint());\n\t\t\treturn null;\n\t\t}\n\t},\n\tgetValidationError: function () {\n\t\tthis.checkValid(this._parentGeometry);\n\t\treturn this._validErr;\n\t},\n\tcheckValid: function () {\n\t\tif (arguments[0] instanceof Point) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t} else if (arguments[0] instanceof MultiPoint) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t} else if (arguments[0] instanceof LinearRing) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkClosedRing(g);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar li = new RobustLineIntersector();\n\t\t\tgraph.computeSelfNodes(li, true, true);\n\t\t\tthis.checkNoSelfIntersectingRings(graph);\n\t\t} else if (arguments[0] instanceof LineString) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g.getCoordinates());\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t} else if (arguments[0] instanceof Polygon) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis.checkInvalidCoordinates(g);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkClosedRings(g);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConsistentArea(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tif (!this._isSelfTouchingRingFormingHoleValid) {\n\t\t\t\tthis.checkNoSelfIntersectingRings(graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tthis.checkHolesInShell(g, graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkHolesNotNested(g, graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConnectedInteriors(graph);\n\t\t} else if (arguments[0] instanceof MultiPolygon) {\n\t\t\tlet g = arguments[0];\n\t\t\tfor (var i = 0; i < g.getNumGeometries(); i++) {\n\t\t\t\tvar p = g.getGeometryN(i);\n\t\t\t\tthis.checkInvalidCoordinates(p);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t\tthis.checkClosedRings(p);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tvar graph = new GeometryGraph(0, g);\n\t\t\tthis.checkTooFewPoints(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConsistentArea(graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tif (!this._isSelfTouchingRingFormingHoleValid) {\n\t\t\t\tthis.checkNoSelfIntersectingRings(graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tfor (var i = 0; i < g.getNumGeometries(); i++) {\n\t\t\t\tvar p = g.getGeometryN(i);\n\t\t\t\tthis.checkHolesInShell(p, graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tfor (var i = 0; i < g.getNumGeometries(); i++) {\n\t\t\t\tvar p = g.getGeometryN(i);\n\t\t\t\tthis.checkHolesNotNested(p, graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t\tthis.checkShellsNotNested(g, graph);\n\t\t\tif (this._validErr !== null) return null;\n\t\t\tthis.checkConnectedInteriors(graph);\n\t\t} else if (arguments[0] instanceof GeometryCollection) {\n\t\t\tlet gc = arguments[0];\n\t\t\tfor (var i = 0; i < gc.getNumGeometries(); i++) {\n\t\t\t\tvar g = gc.getGeometryN(i);\n\t\t\t\tthis.checkValid(g);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t} else if (arguments[0] instanceof Geometry) {\n\t\t\tlet g = arguments[0];\n\t\t\tthis._validErr = null;\n\t\t\tif (g.isEmpty()) return null;\n\t\t\tif (g instanceof Point) this.checkValid(g); else if (g instanceof MultiPoint) this.checkValid(g); else if (g instanceof LinearRing) this.checkValid(g); else if (g instanceof LineString) this.checkValid(g); else if (g instanceof Polygon) this.checkValid(g); else if (g instanceof MultiPolygon) this.checkValid(g); else if (g instanceof GeometryCollection) this.checkValid(g); else throw new UnsupportedOperationException(g.getClass().getName());\n\t\t}\n\t},\n\tsetSelfTouchingRingFormingHoleValid: function (isValid) {\n\t\tthis._isSelfTouchingRingFormingHoleValid = isValid;\n\t},\n\tcheckShellNotNested: function (shell, p, graph) {\n\t\tvar shellPts = shell.getCoordinates();\n\t\tvar polyShell = p.getExteriorRing();\n\t\tvar polyPts = polyShell.getCoordinates();\n\t\tvar shellPt = IsValidOp.findPtNotNode(shellPts, polyShell, graph);\n\t\tif (shellPt === null) return null;\n\t\tvar insidePolyShell = PointLocation.isInRing(shellPt, polyPts);\n\t\tif (!insidePolyShell) return null;\n\t\tif (p.getNumInteriorRing() <= 0) {\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, shellPt);\n\t\t\treturn null;\n\t\t}\n\t\tvar badNestedPt = null;\n\t\tfor (var i = 0; i < p.getNumInteriorRing(); i++) {\n\t\t\tvar hole = p.getInteriorRingN(i);\n\t\t\tbadNestedPt = this.checkShellInsideHole(shell, hole, graph);\n\t\t\tif (badNestedPt === null) return null;\n\t\t}\n\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, badNestedPt);\n\t},\n\tcheckClosedRings: function (poly) {\n\t\tthis.checkClosedRing(poly.getExteriorRing());\n\t\tif (this._validErr !== null) return null;\n\t\tfor (var i = 0; i < poly.getNumInteriorRing(); i++) {\n\t\t\tthis.checkClosedRing(poly.getInteriorRingN(i));\n\t\t\tif (this._validErr !== null) return null;\n\t\t}\n\t},\n\tcheckClosedRing: function (ring) {\n\t\tif (!ring.isClosed()) {\n\t\t\tvar pt = null;\n\t\t\tif (ring.getNumPoints() >= 1) pt = ring.getCoordinateN(0);\n\t\t\tthis._validErr = new TopologyValidationError(TopologyValidationError.RING_NOT_CLOSED, pt);\n\t\t}\n\t},\n\tcheckShellsNotNested: function (mp, graph) {\n\t\tfor (var i = 0; i < mp.getNumGeometries(); i++) {\n\t\t\tvar p = mp.getGeometryN(i);\n\t\t\tvar shell = p.getExteriorRing();\n\t\t\tfor (var j = 0; j < mp.getNumGeometries(); j++) {\n\t\t\t\tif (i === j) continue;\n\t\t\t\tvar p2 = mp.getGeometryN(j);\n\t\t\t\tthis.checkShellNotNested(shell, p2, graph);\n\t\t\t\tif (this._validErr !== null) return null;\n\t\t\t}\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IsValidOp;\n\t}\n});\nIsValidOp.findPtNotNode = function (testCoords, searchRing, graph) {\n\tvar searchEdge = graph.findEdge(searchRing);\n\tvar eiList = searchEdge.getEdgeIntersectionList();\n\tfor (var i = 0; i < testCoords.length; i++) {\n\t\tvar pt = testCoords[i];\n\t\tif (!eiList.isIntersection(pt)) return pt;\n\t}\n\treturn null;\n};\nIsValidOp.isValid = function () {\n\tif (arguments[0] instanceof Geometry) {\n\t\tlet geom = arguments[0];\n\t\tvar isValidOp = new IsValidOp(geom);\n\t\treturn isValidOp.isValid();\n\t} else if (arguments[0] instanceof Coordinate) {\n\t\tlet coord = arguments[0];\n\t\tif (Double.isNaN(coord.x)) return false;\n\t\tif (Double.isInfinite(coord.x)) return false;\n\t\tif (Double.isNaN(coord.y)) return false;\n\t\tif (Double.isInfinite(coord.y)) return false;\n\t\treturn true;\n\t}\n};\n","import LineString from '../geom/LineString';\nimport CoordinateList from '../geom/CoordinateList';\nimport Geometry from '../geom/Geometry';\nimport Coordinate from '../geom/Coordinate';\nimport GeometryEditor from '../geom/util/GeometryEditor';\nimport LinearRing from '../geom/LinearRing';\nimport extend from '../../../../extend';\nimport inherits from '../../../../inherits';\nexport default function PrecisionReducerCoordinateOperation() {\n\tGeometryEditor.CoordinateOperation.apply(this);\n\tthis._targetPM = null;\n\tthis._removeCollapsed = true;\n\tlet targetPM = arguments[0], removeCollapsed = arguments[1];\n\tthis._targetPM = targetPM;\n\tthis._removeCollapsed = removeCollapsed;\n}\ninherits(PrecisionReducerCoordinateOperation, GeometryEditor.CoordinateOperation);\nextend(PrecisionReducerCoordinateOperation.prototype, {\n\tedit: function () {\n\t\tif (arguments.length === 2 && (arguments[1] instanceof Geometry && arguments[0] instanceof Array)) {\n\t\t\tlet coordinates = arguments[0], geom = arguments[1];\n\t\t\tif (coordinates.length === 0) return null;\n\t\t\tvar reducedCoords = new Array(coordinates.length).fill(null);\n\t\t\tfor (var i = 0; i < coordinates.length; i++) {\n\t\t\t\tvar coord = new Coordinate(coordinates[i]);\n\t\t\t\tthis._targetPM.makePrecise(coord);\n\t\t\t\treducedCoords[i] = coord;\n\t\t\t}\n\t\t\tvar noRepeatedCoordList = new CoordinateList(reducedCoords, false);\n\t\t\tvar noRepeatedCoords = noRepeatedCoordList.toCoordinateArray();\n\t\t\tvar minLength = 0;\n\t\t\tif (geom instanceof LineString) minLength = 2;\n\t\t\tif (geom instanceof LinearRing) minLength = 4;\n\t\t\tvar collapsedCoords = reducedCoords;\n\t\t\tif (this._removeCollapsed) collapsedCoords = null;\n\t\t\tif (noRepeatedCoords.length < minLength) {\n\t\t\t\treturn collapsedCoords;\n\t\t\t}\n\t\t\treturn noRepeatedCoords;\n\t\t} else return GeometryEditor.CoordinateOperation.prototype.edit.apply(this, arguments);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn PrecisionReducerCoordinateOperation;\n\t}\n});\n","import hasInterface from '../../../../hasInterface';\nimport GeometryFactory from '../geom/GeometryFactory';\nimport IsValidOp from '../operation/valid/IsValidOp';\nimport GeometryEditor from '../geom/util/GeometryEditor';\nimport extend from '../../../../extend';\nimport BufferOp from '../operation/buffer/BufferOp';\nimport Polygonal from '../geom/Polygonal';\nimport PrecisionReducerCoordinateOperation from './PrecisionReducerCoordinateOperation';\nexport default function GeometryPrecisionReducer() {\n\tthis._targetPM = null;\n\tthis._removeCollapsed = true;\n\tthis._changePrecisionModel = false;\n\tthis._isPointwise = false;\n\tlet pm = arguments[0];\n\tthis._targetPM = pm;\n}\nextend(GeometryPrecisionReducer.prototype, {\n\tfixPolygonalTopology: function (geom) {\n\t\tvar geomToBuffer = geom;\n\t\tif (!this._changePrecisionModel) {\n\t\t\tgeomToBuffer = this.changePM(geom, this._targetPM);\n\t\t}\n\t\tvar bufGeom = BufferOp.bufferOp(geomToBuffer, 0);\n\t\tvar finalGeom = bufGeom;\n\t\tif (!this._changePrecisionModel) {\n\t\t\tfinalGeom = bufGeom.copy();\n\t\t\tthis.changePM(finalGeom, geom.getPrecisionModel());\n\t\t}\n\t\treturn finalGeom;\n\t},\n\treducePointwise: function (geom) {\n\t\tvar geomEdit = null;\n\t\tif (this._changePrecisionModel) {\n\t\t\tvar newFactory = this.createFactory(geom.getFactory(), this._targetPM);\n\t\t\tgeomEdit = new GeometryEditor(newFactory);\n\t\t} else geomEdit = new GeometryEditor();\n\t\tvar finalRemoveCollapsed = this._removeCollapsed;\n\t\tif (geom.getDimension() >= 2) finalRemoveCollapsed = true;\n\t\tvar reduceGeom = geomEdit.edit(geom, new PrecisionReducerCoordinateOperation(this._targetPM, finalRemoveCollapsed));\n\t\treturn reduceGeom;\n\t},\n\tchangePM: function (geom, newPM) {\n\t\tvar geomEditor = this.createEditor(geom.getFactory(), newPM);\n\t\treturn geomEditor.edit(geom, new GeometryEditor.NoOpGeometryOperation());\n\t},\n\tsetRemoveCollapsedComponents: function (removeCollapsed) {\n\t\tthis._removeCollapsed = removeCollapsed;\n\t},\n\tcreateFactory: function (inputFactory, pm) {\n\t\tvar newFactory = new GeometryFactory(pm, inputFactory.getSRID(), inputFactory.getCoordinateSequenceFactory());\n\t\treturn newFactory;\n\t},\n\tsetChangePrecisionModel: function (changePrecisionModel) {\n\t\tthis._changePrecisionModel = changePrecisionModel;\n\t},\n\treduce: function (geom) {\n\t\tvar reducePW = this.reducePointwise(geom);\n\t\tif (this._isPointwise) return reducePW;\n\t\tif (!hasInterface(reducePW, Polygonal)) return reducePW;\n\t\tif (IsValidOp.isValid(reducePW)) return reducePW;\n\t\treturn this.fixPolygonalTopology(reducePW);\n\t},\n\tsetPointwise: function (isPointwise) {\n\t\tthis._isPointwise = isPointwise;\n\t},\n\tcreateEditor: function (geomFactory, newPM) {\n\t\tif (geomFactory.getPrecisionModel() === newPM) return new GeometryEditor();\n\t\tvar newFactory = this.createFactory(geomFactory, newPM);\n\t\tvar geomEdit = new GeometryEditor(newFactory);\n\t\treturn geomEdit;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn GeometryPrecisionReducer;\n\t}\n});\nGeometryPrecisionReducer.reduce = function (g, precModel) {\n\tvar reducer = new GeometryPrecisionReducer(precModel);\n\treturn reducer.reduce(g);\n};\nGeometryPrecisionReducer.reducePointwise = function (g, precModel) {\n\tvar reducer = new GeometryPrecisionReducer(precModel);\n\treducer.setPointwise(true);\n\treturn reducer.reduce(g);\n};\n","import CoordinateList from '../geom/CoordinateList';\nimport Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nexport default function DouglasPeuckerLineSimplifier() {\n\tthis._pts = null;\n\tthis._usePt = null;\n\tthis._distanceTolerance = null;\n\tthis._seg = new LineSegment();\n\tlet pts = arguments[0];\n\tthis._pts = pts;\n}\nextend(DouglasPeuckerLineSimplifier.prototype, {\n\tsimplifySection: function (i, j) {\n\t\tif (i + 1 === j) {\n\t\t\treturn null;\n\t\t}\n\t\tthis._seg.p0 = this._pts[i];\n\t\tthis._seg.p1 = this._pts[j];\n\t\tvar maxDistance = -1.0;\n\t\tvar maxIndex = i;\n\t\tfor (var k = i + 1; k < j; k++) {\n\t\t\tvar distance = this._seg.distance(this._pts[k]);\n\t\t\tif (distance > maxDistance) {\n\t\t\t\tmaxDistance = distance;\n\t\t\t\tmaxIndex = k;\n\t\t\t}\n\t\t}\n\t\tif (maxDistance <= this._distanceTolerance) {\n\t\t\tfor (var k = i + 1; k < j; k++) {\n\t\t\t\tthis._usePt[k] = false;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.simplifySection(i, maxIndex);\n\t\t\tthis.simplifySection(maxIndex, j);\n\t\t}\n\t},\n\tsetDistanceTolerance: function (distanceTolerance) {\n\t\tthis._distanceTolerance = distanceTolerance;\n\t},\n\tsimplify: function () {\n\t\tthis._usePt = new Array(this._pts.length).fill(null);\n\t\tfor (var i = 0; i < this._pts.length; i++) {\n\t\t\tthis._usePt[i] = true;\n\t\t}\n\t\tthis.simplifySection(0, this._pts.length - 1);\n\t\tvar coordList = new CoordinateList();\n\t\tfor (var i = 0; i < this._pts.length; i++) {\n\t\t\tif (this._usePt[i]) coordList.add(new Coordinate(this._pts[i]));\n\t\t}\n\t\treturn coordList.toCoordinateArray();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DouglasPeuckerLineSimplifier;\n\t}\n});\nDouglasPeuckerLineSimplifier.simplify = function (pts, distanceTolerance) {\n\tvar simp = new DouglasPeuckerLineSimplifier(pts);\n\tsimp.setDistanceTolerance(distanceTolerance);\n\treturn simp.simplify();\n};\n","import DouglasPeuckerLineSimplifier from './DouglasPeuckerLineSimplifier';\nimport GeometryTransformer from '../geom/util/GeometryTransformer';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport Polygon from '../geom/Polygon';\nimport LinearRing from '../geom/LinearRing';\nimport extend from '../../../../extend';\nimport MultiPolygon from '../geom/MultiPolygon';\nimport inherits from '../../../../inherits';\nexport default function DouglasPeuckerSimplifier() {\n\tthis._inputGeom = null;\n\tthis._distanceTolerance = null;\n\tthis._isEnsureValidTopology = true;\n\tlet inputGeom = arguments[0];\n\tthis._inputGeom = inputGeom;\n}\nextend(DouglasPeuckerSimplifier.prototype, {\n\tsetEnsureValid: function (isEnsureValidTopology) {\n\t\tthis._isEnsureValidTopology = isEnsureValidTopology;\n\t},\n\tgetResultGeometry: function () {\n\t\tif (this._inputGeom.isEmpty()) return this._inputGeom.copy();\n\t\treturn new DPTransformer(this._isEnsureValidTopology, this._distanceTolerance).transform(this._inputGeom);\n\t},\n\tsetDistanceTolerance: function (distanceTolerance) {\n\t\tif (distanceTolerance < 0.0) throw new IllegalArgumentException(\"Tolerance must be non-negative\");\n\t\tthis._distanceTolerance = distanceTolerance;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DouglasPeuckerSimplifier;\n\t}\n});\nDouglasPeuckerSimplifier.simplify = function (geom, distanceTolerance) {\n\tvar tss = new DouglasPeuckerSimplifier(geom);\n\ttss.setDistanceTolerance(distanceTolerance);\n\treturn tss.getResultGeometry();\n};\nfunction DPTransformer() {\n\tGeometryTransformer.apply(this);\n\tthis._isEnsureValidTopology = true;\n\tthis._distanceTolerance = null;\n\tlet isEnsureValidTopology = arguments[0], distanceTolerance = arguments[1];\n\tthis._isEnsureValidTopology = isEnsureValidTopology;\n\tthis._distanceTolerance = distanceTolerance;\n}\ninherits(DPTransformer, GeometryTransformer);\nextend(DPTransformer.prototype, {\n\ttransformPolygon: function (geom, parent) {\n\t\tif (geom.isEmpty()) return null;\n\t\tvar rawGeom = GeometryTransformer.prototype.transformPolygon.call(this, geom, parent);\n\t\tif (parent instanceof MultiPolygon) {\n\t\t\treturn rawGeom;\n\t\t}\n\t\treturn this.createValidArea(rawGeom);\n\t},\n\tcreateValidArea: function (rawAreaGeom) {\n\t\tif (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0);\n\t\treturn rawAreaGeom;\n\t},\n\ttransformCoordinates: function (coords, parent) {\n\t\tvar inputPts = coords.toCoordinateArray();\n\t\tvar newPts = null;\n\t\tif (inputPts.length === 0) {\n\t\t\tnewPts = new Array(0).fill(null);\n\t\t} else {\n\t\t\tnewPts = DouglasPeuckerLineSimplifier.simplify(inputPts, this._distanceTolerance);\n\t\t}\n\t\treturn this._factory.getCoordinateSequenceFactory().create(newPts);\n\t},\n\ttransformMultiPolygon: function (geom, parent) {\n\t\tvar rawGeom = GeometryTransformer.prototype.transformMultiPolygon.call(this, geom, parent);\n\t\treturn this.createValidArea(rawGeom);\n\t},\n\ttransformLinearRing: function (geom, parent) {\n\t\tvar removeDegenerateRings = parent instanceof Polygon;\n\t\tvar simpResult = GeometryTransformer.prototype.transformLinearRing.call(this, geom, parent);\n\t\tif (removeDegenerateRings && !(simpResult instanceof LinearRing)) return null;\n\t\t;\n\t\treturn simpResult;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DPTransformer;\n\t}\n});\nDouglasPeuckerSimplifier.DPTransformer = DPTransformer;\n","import extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nimport inherits from '../../../../inherits';\nexport default function TaggedLineSegment() {\n\tthis._parent = null;\n\tthis._index = null;\n\tif (arguments.length === 2) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tTaggedLineSegment.call(this, p0, p1, null, -1);\n\t} else if (arguments.length === 4) {\n\t\tlet p0 = arguments[0], p1 = arguments[1], parent = arguments[2], index = arguments[3];\n\t\tLineSegment.call(this, p0, p1);\n\t\tthis._parent = parent;\n\t\tthis._index = index;\n\t}\n}\ninherits(TaggedLineSegment, LineSegment);\nextend(TaggedLineSegment.prototype, {\n\tgetIndex: function () {\n\t\treturn this._index;\n\t},\n\tgetParent: function () {\n\t\treturn this._parent;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TaggedLineSegment;\n\t}\n});\n","import extend from '../../../../extend';\nimport TaggedLineSegment from './TaggedLineSegment';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function TaggedLineString() {\n\tthis._parentLine = null;\n\tthis._segs = null;\n\tthis._resultSegs = new ArrayList();\n\tthis._minimumSize = null;\n\tif (arguments.length === 1) {\n\t\tlet parentLine = arguments[0];\n\t\tTaggedLineString.call(this, parentLine, 2);\n\t} else if (arguments.length === 2) {\n\t\tlet parentLine = arguments[0], minimumSize = arguments[1];\n\t\tthis._parentLine = parentLine;\n\t\tthis._minimumSize = minimumSize;\n\t\tthis.init();\n\t}\n}\nextend(TaggedLineString.prototype, {\n\taddToResult: function (seg) {\n\t\tthis._resultSegs.add(seg);\n\t},\n\tasLineString: function () {\n\t\treturn this._parentLine.getFactory().createLineString(TaggedLineString.extractCoordinates(this._resultSegs));\n\t},\n\tgetResultSize: function () {\n\t\tvar resultSegsSize = this._resultSegs.size();\n\t\treturn resultSegsSize === 0 ? 0 : resultSegsSize + 1;\n\t},\n\tgetParent: function () {\n\t\treturn this._parentLine;\n\t},\n\tgetSegment: function (i) {\n\t\treturn this._segs[i];\n\t},\n\tgetParentCoordinates: function () {\n\t\treturn this._parentLine.getCoordinates();\n\t},\n\tgetMinimumSize: function () {\n\t\treturn this._minimumSize;\n\t},\n\tasLinearRing: function () {\n\t\treturn this._parentLine.getFactory().createLinearRing(TaggedLineString.extractCoordinates(this._resultSegs));\n\t},\n\tgetSegments: function () {\n\t\treturn this._segs;\n\t},\n\tinit: function () {\n\t\tvar pts = this._parentLine.getCoordinates();\n\t\tthis._segs = new Array(pts.length - 1).fill(null);\n\t\tfor (var i = 0; i < pts.length - 1; i++) {\n\t\t\tvar seg = new TaggedLineSegment(pts[i], pts[i + 1], this._parentLine, i);\n\t\t\tthis._segs[i] = seg;\n\t\t}\n\t},\n\tgetResultCoordinates: function () {\n\t\treturn TaggedLineString.extractCoordinates(this._resultSegs);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TaggedLineString;\n\t}\n});\nTaggedLineString.extractCoordinates = function (segs) {\n\tvar pts = new Array(segs.size() + 1).fill(null);\n\tvar seg = null;\n\tfor (var i = 0; i < segs.size(); i++) {\n\t\tseg = segs.get(i);\n\t\tpts[i] = seg.p0;\n\t}\n\tpts[pts.length - 1] = seg.p1;\n\treturn pts;\n};\n","import Quadtree from '../index/quadtree/Quadtree';\nimport ItemVisitor from '../index/ItemVisitor';\nimport extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Envelope from '../geom/Envelope';\nimport TaggedLineString from './TaggedLineString';\nexport default function LineSegmentIndex() {\n\tthis._index = new Quadtree();\n}\nextend(LineSegmentIndex.prototype, {\n\tremove: function (seg) {\n\t\tthis._index.remove(new Envelope(seg.p0, seg.p1), seg);\n\t},\n\tadd: function () {\n\t\tif (arguments[0] instanceof TaggedLineString) {\n\t\t\tlet line = arguments[0];\n\t\t\tvar segs = line.getSegments();\n\t\t\tfor (var i = 0; i < segs.length; i++) {\n\t\t\t\tvar seg = segs[i];\n\t\t\t\tthis.add(seg);\n\t\t\t}\n\t\t} else if (arguments[0] instanceof LineSegment) {\n\t\t\tlet seg = arguments[0];\n\t\t\tthis._index.insert(new Envelope(seg.p0, seg.p1), seg);\n\t\t}\n\t},\n\tquery: function (querySeg) {\n\t\tvar env = new Envelope(querySeg.p0, querySeg.p1);\n\t\tvar visitor = new LineSegmentVisitor(querySeg);\n\t\tthis._index.query(env, visitor);\n\t\tvar itemsFound = visitor.getItems();\n\t\treturn itemsFound;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineSegmentIndex;\n\t}\n});\nfunction LineSegmentVisitor() {\n\tthis._querySeg = null;\n\tthis._items = new ArrayList();\n\tlet querySeg = arguments[0];\n\tthis._querySeg = querySeg;\n}\nextend(LineSegmentVisitor.prototype, {\n\tvisitItem: function (item) {\n\t\tvar seg = item;\n\t\tif (Envelope.intersects(seg.p0, seg.p1, this._querySeg.p0, this._querySeg.p1)) this._items.add(item);\n\t},\n\tgetItems: function () {\n\t\treturn this._items;\n\t},\n\tinterfaces_: function () {\n\t\treturn [ItemVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn LineSegmentVisitor;\n\t}\n});\n","import extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nimport LineSegmentIndex from './LineSegmentIndex';\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector';\nexport default function TaggedLineStringSimplifier() {\n\tthis._li = new RobustLineIntersector();\n\tthis._inputIndex = new LineSegmentIndex();\n\tthis._outputIndex = new LineSegmentIndex();\n\tthis._line = null;\n\tthis._linePts = null;\n\tthis._distanceTolerance = 0.0;\n\tlet inputIndex = arguments[0], outputIndex = arguments[1];\n\tthis._inputIndex = inputIndex;\n\tthis._outputIndex = outputIndex;\n}\nextend(TaggedLineStringSimplifier.prototype, {\n\tflatten: function (start, end) {\n\t\tvar p0 = this._linePts[start];\n\t\tvar p1 = this._linePts[end];\n\t\tvar newSeg = new LineSegment(p0, p1);\n\t\tthis.remove(this._line, start, end);\n\t\tthis._outputIndex.add(newSeg);\n\t\treturn newSeg;\n\t},\n\thasBadIntersection: function (parentLine, sectionIndex, candidateSeg) {\n\t\tif (this.hasBadOutputIntersection(candidateSeg)) return true;\n\t\tif (this.hasBadInputIntersection(parentLine, sectionIndex, candidateSeg)) return true;\n\t\treturn false;\n\t},\n\tsetDistanceTolerance: function (distanceTolerance) {\n\t\tthis._distanceTolerance = distanceTolerance;\n\t},\n\tsimplifySection: function (i, j, depth) {\n\t\tdepth += 1;\n\t\tvar sectionIndex = new Array(2).fill(null);\n\t\tif (i + 1 === j) {\n\t\t\tvar newSeg = this._line.getSegment(i);\n\t\t\tthis._line.addToResult(newSeg);\n\t\t\treturn null;\n\t\t}\n\t\tvar isValidToSimplify = true;\n\t\tif (this._line.getResultSize() < this._line.getMinimumSize()) {\n\t\t\tvar worstCaseSize = depth + 1;\n\t\t\tif (worstCaseSize < this._line.getMinimumSize()) isValidToSimplify = false;\n\t\t}\n\t\tvar distance = new Array(1).fill(null);\n\t\tvar furthestPtIndex = this.findFurthestPoint(this._linePts, i, j, distance);\n\t\tif (distance[0] > this._distanceTolerance) isValidToSimplify = false;\n\t\tvar candidateSeg = new LineSegment();\n\t\tcandidateSeg.p0 = this._linePts[i];\n\t\tcandidateSeg.p1 = this._linePts[j];\n\t\tsectionIndex[0] = i;\n\t\tsectionIndex[1] = j;\n\t\tif (this.hasBadIntersection(this._line, sectionIndex, candidateSeg)) isValidToSimplify = false;\n\t\tif (isValidToSimplify) {\n\t\t\tvar newSeg = this.flatten(i, j);\n\t\t\tthis._line.addToResult(newSeg);\n\t\t\treturn null;\n\t\t}\n\t\tthis.simplifySection(i, furthestPtIndex, depth);\n\t\tthis.simplifySection(furthestPtIndex, j, depth);\n\t},\n\thasBadOutputIntersection: function (candidateSeg) {\n\t\tvar querySegs = this._outputIndex.query(candidateSeg);\n\t\tfor (var i = querySegs.iterator(); i.hasNext(); ) {\n\t\t\tvar querySeg = i.next();\n\t\t\tif (this.hasInteriorIntersection(querySeg, candidateSeg)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tfindFurthestPoint: function (pts, i, j, maxDistance) {\n\t\tvar seg = new LineSegment();\n\t\tseg.p0 = pts[i];\n\t\tseg.p1 = pts[j];\n\t\tvar maxDist = -1.0;\n\t\tvar maxIndex = i;\n\t\tfor (var k = i + 1; k < j; k++) {\n\t\t\tvar midPt = pts[k];\n\t\t\tvar distance = seg.distance(midPt);\n\t\t\tif (distance > maxDist) {\n\t\t\t\tmaxDist = distance;\n\t\t\t\tmaxIndex = k;\n\t\t\t}\n\t\t}\n\t\tmaxDistance[0] = maxDist;\n\t\treturn maxIndex;\n\t},\n\tsimplify: function (line) {\n\t\tthis._line = line;\n\t\tthis._linePts = line.getParentCoordinates();\n\t\tthis.simplifySection(0, this._linePts.length - 1, 0);\n\t},\n\tremove: function (line, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar seg = line.getSegment(i);\n\t\t\tthis._inputIndex.remove(seg);\n\t\t}\n\t},\n\thasInteriorIntersection: function (seg0, seg1) {\n\t\tthis._li.computeIntersection(seg0.p0, seg0.p1, seg1.p0, seg1.p1);\n\t\treturn this._li.isInteriorIntersection();\n\t},\n\thasBadInputIntersection: function (parentLine, sectionIndex, candidateSeg) {\n\t\tvar querySegs = this._inputIndex.query(candidateSeg);\n\t\tfor (var i = querySegs.iterator(); i.hasNext(); ) {\n\t\t\tvar querySeg = i.next();\n\t\t\tif (this.hasInteriorIntersection(querySeg, candidateSeg)) {\n\t\t\t\tif (TaggedLineStringSimplifier.isInLineSection(parentLine, sectionIndex, querySeg)) continue;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TaggedLineStringSimplifier;\n\t}\n});\nTaggedLineStringSimplifier.isInLineSection = function (line, sectionIndex, seg) {\n\tif (seg.getParent() !== line.getParent()) return false;\n\tvar segIndex = seg.getIndex();\n\tif (segIndex >= sectionIndex[0] && segIndex < sectionIndex[1]) return true;\n\treturn false;\n};\n","import extend from '../../../../extend';\nimport TaggedLineStringSimplifier from './TaggedLineStringSimplifier';\nimport LineSegmentIndex from './LineSegmentIndex';\nexport default function TaggedLinesSimplifier() {\n\tthis._inputIndex = new LineSegmentIndex();\n\tthis._outputIndex = new LineSegmentIndex();\n\tthis._distanceTolerance = 0.0;\n}\nextend(TaggedLinesSimplifier.prototype, {\n\tsetDistanceTolerance: function (distanceTolerance) {\n\t\tthis._distanceTolerance = distanceTolerance;\n\t},\n\tsimplify: function (taggedLines) {\n\t\tfor (var i = taggedLines.iterator(); i.hasNext(); ) {\n\t\t\tthis._inputIndex.add(i.next());\n\t\t}\n\t\tfor (var i = taggedLines.iterator(); i.hasNext(); ) {\n\t\t\tvar tlss = new TaggedLineStringSimplifier(this._inputIndex, this._outputIndex);\n\t\t\ttlss.setDistanceTolerance(this._distanceTolerance);\n\t\t\ttlss.simplify(i.next());\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TaggedLinesSimplifier;\n\t}\n});\n","import LineString from '../geom/LineString';\nimport HashMap from '../../../../java/util/HashMap';\nimport GeometryTransformer from '../geom/util/GeometryTransformer';\nimport TaggedLinesSimplifier from './TaggedLinesSimplifier';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport GeometryComponentFilter from '../geom/GeometryComponentFilter';\nimport inherits from '../../../../inherits';\nimport TaggedLineString from './TaggedLineString';\nexport default function TopologyPreservingSimplifier() {\n\tthis._inputGeom = null;\n\tthis._lineSimplifier = new TaggedLinesSimplifier();\n\tthis._linestringMap = null;\n\tlet inputGeom = arguments[0];\n\tthis._inputGeom = inputGeom;\n}\nextend(TopologyPreservingSimplifier.prototype, {\n\tgetResultGeometry: function () {\n\t\tif (this._inputGeom.isEmpty()) return this._inputGeom.copy();\n\t\tthis._linestringMap = new HashMap();\n\t\tthis._inputGeom.apply(new LineStringMapBuilderFilter(this));\n\t\tthis._lineSimplifier.simplify(this._linestringMap.values());\n\t\tvar result = new LineStringTransformer(this._linestringMap).transform(this._inputGeom);\n\t\treturn result;\n\t},\n\tsetDistanceTolerance: function (distanceTolerance) {\n\t\tif (distanceTolerance < 0.0) throw new IllegalArgumentException(\"Tolerance must be non-negative\");\n\t\tthis._lineSimplifier.setDistanceTolerance(distanceTolerance);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TopologyPreservingSimplifier;\n\t}\n});\nTopologyPreservingSimplifier.simplify = function (geom, distanceTolerance) {\n\tvar tss = new TopologyPreservingSimplifier(geom);\n\ttss.setDistanceTolerance(distanceTolerance);\n\treturn tss.getResultGeometry();\n};\nfunction LineStringTransformer() {\n\tGeometryTransformer.apply(this);\n\tthis._linestringMap = null;\n\tlet linestringMap = arguments[0];\n\tthis._linestringMap = linestringMap;\n}\ninherits(LineStringTransformer, GeometryTransformer);\nextend(LineStringTransformer.prototype, {\n\ttransformCoordinates: function (coords, parent) {\n\t\tif (coords.size() === 0) return null;\n\t\tif (parent instanceof LineString) {\n\t\t\tvar taggedLine = this._linestringMap.get(parent);\n\t\t\treturn this.createCoordinateSequence(taggedLine.getResultCoordinates());\n\t\t}\n\t\treturn GeometryTransformer.prototype.transformCoordinates.call(this, coords, parent);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LineStringTransformer;\n\t}\n});\nfunction LineStringMapBuilderFilter() {\n\tthis.tps = null;\n\tlet tps = arguments[0];\n\tthis.tps = tps;\n}\nextend(LineStringMapBuilderFilter.prototype, {\n\tfilter: function (geom) {\n\t\tif (geom instanceof LineString) {\n\t\t\tvar line = geom;\n\t\t\tif (line.isEmpty()) return null;\n\t\t\tvar minSize = line.isClosed() ? 4 : 2;\n\t\t\tvar taggedLine = new TaggedLineString(line, minSize);\n\t\t\tthis.tps._linestringMap.put(line, taggedLine);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [GeometryComponentFilter];\n\t},\n\tgetClass: function () {\n\t\treturn LineStringMapBuilderFilter;\n\t}\n});\nTopologyPreservingSimplifier.LineStringTransformer = LineStringTransformer;\nTopologyPreservingSimplifier.LineStringMapBuilderFilter = LineStringMapBuilderFilter;\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nexport default function SplitSegment() {\n\tthis._seg = null;\n\tthis._segLen = null;\n\tthis._splitPt = null;\n\tthis._minimumLen = 0.0;\n\tlet seg = arguments[0];\n\tthis._seg = seg;\n\tthis._segLen = seg.getLength();\n}\nextend(SplitSegment.prototype, {\n\tsplitAt: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet pt = arguments[0];\n\t\t\tvar minFrac = this._minimumLen / this._segLen;\n\t\t\tif (pt.distance(this._seg.p0) < this._minimumLen) {\n\t\t\t\tthis._splitPt = this._seg.pointAlong(minFrac);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (pt.distance(this._seg.p1) < this._minimumLen) {\n\t\t\t\tthis._splitPt = SplitSegment.pointAlongReverse(this._seg, minFrac);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tthis._splitPt = pt;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet length = arguments[0], endPt = arguments[1];\n\t\t\tvar actualLen = this.getConstrainedLength(length);\n\t\t\tvar frac = actualLen / this._segLen;\n\t\t\tif (endPt.equals2D(this._seg.p0)) this._splitPt = this._seg.pointAlong(frac); else this._splitPt = SplitSegment.pointAlongReverse(this._seg, frac);\n\t\t}\n\t},\n\tsetMinimumLength: function (minLen) {\n\t\tthis._minimumLen = minLen;\n\t},\n\tgetConstrainedLength: function (len) {\n\t\tif (len < this._minimumLen) return this._minimumLen;\n\t\treturn len;\n\t},\n\tgetSplitPoint: function () {\n\t\treturn this._splitPt;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn SplitSegment;\n\t}\n});\nSplitSegment.pointAlongReverse = function (seg, segmentLengthFraction) {\n\tvar coord = new Coordinate();\n\tcoord.x = seg.p1.x - segmentLengthFraction * (seg.p1.x - seg.p0.x);\n\tcoord.y = seg.p1.y - segmentLengthFraction * (seg.p1.y - seg.p0.y);\n\treturn coord;\n};\n","import extend from '../../../../extend';\nexport default function ConstraintSplitPointFinder() {}\nextend(ConstraintSplitPointFinder.prototype, {\n\tfindSplitPoint: function (seg, encroachPt) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ConstraintSplitPointFinder;\n\t}\n});\n","import extend from '../../../../extend';\nimport SplitSegment from './SplitSegment';\nimport ConstraintSplitPointFinder from './ConstraintSplitPointFinder';\nexport default function NonEncroachingSplitPointFinder() {}\nextend(NonEncroachingSplitPointFinder.prototype, {\n\tfindSplitPoint: function (seg, encroachPt) {\n\t\tvar lineSeg = seg.getLineSegment();\n\t\tvar segLen = lineSeg.getLength();\n\t\tvar midPtLen = segLen / 2;\n\t\tvar splitSeg = new SplitSegment(lineSeg);\n\t\tvar projPt = NonEncroachingSplitPointFinder.projectedSplitPoint(seg, encroachPt);\n\t\tvar nonEncroachDiam = projPt.distance(encroachPt) * 2 * 0.8;\n\t\tvar maxSplitLen = nonEncroachDiam;\n\t\tif (maxSplitLen > midPtLen) {\n\t\t\tmaxSplitLen = midPtLen;\n\t\t}\n\t\tsplitSeg.setMinimumLength(maxSplitLen);\n\t\tsplitSeg.splitAt(projPt);\n\t\treturn splitSeg.getSplitPoint();\n\t},\n\tinterfaces_: function () {\n\t\treturn [ConstraintSplitPointFinder];\n\t},\n\tgetClass: function () {\n\t\treturn NonEncroachingSplitPointFinder;\n\t}\n});\nNonEncroachingSplitPointFinder.projectedSplitPoint = function (seg, encroachPt) {\n\tvar lineSeg = seg.getLineSegment();\n\tvar projPt = lineSeg.project(encroachPt);\n\treturn projPt;\n};\n","import WKTWriter from '../../io/WKTWriter';\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence';\nimport extend from '../../../../../extend';\nimport DD from '../../math/DD';\nimport System from '../../../../../java/lang/System';\nimport Triangle from '../../geom/Triangle';\nexport default function TrianglePredicate() {}\nextend(TrianglePredicate.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TrianglePredicate;\n\t}\n});\nTrianglePredicate.triArea = function (a, b, c) {\n\treturn (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\n};\nTrianglePredicate.isInCircleDDNormalized = function (a, b, c, p) {\n\tvar adx = DD.valueOf(a.x).selfSubtract(p.x);\n\tvar ady = DD.valueOf(a.y).selfSubtract(p.y);\n\tvar bdx = DD.valueOf(b.x).selfSubtract(p.x);\n\tvar bdy = DD.valueOf(b.y).selfSubtract(p.y);\n\tvar cdx = DD.valueOf(c.x).selfSubtract(p.x);\n\tvar cdy = DD.valueOf(c.y).selfSubtract(p.y);\n\tvar abdet = adx.multiply(bdy).selfSubtract(bdx.multiply(ady));\n\tvar bcdet = bdx.multiply(cdy).selfSubtract(cdx.multiply(bdy));\n\tvar cadet = cdx.multiply(ady).selfSubtract(adx.multiply(cdy));\n\tvar alift = adx.multiply(adx).selfAdd(ady.multiply(ady));\n\tvar blift = bdx.multiply(bdx).selfAdd(bdy.multiply(bdy));\n\tvar clift = cdx.multiply(cdx).selfAdd(cdy.multiply(cdy));\n\tvar sum = alift.selfMultiply(bcdet).selfAdd(blift.selfMultiply(cadet)).selfAdd(clift.selfMultiply(abdet));\n\tvar isInCircle = sum.doubleValue() > 0;\n\treturn isInCircle;\n};\nTrianglePredicate.checkRobustInCircle = function (a, b, c, p) {\n\tvar nonRobustInCircle = TrianglePredicate.isInCircleNonRobust(a, b, c, p);\n\tvar isInCircleDD = TrianglePredicate.isInCircleDDSlow(a, b, c, p);\n\tvar isInCircleCC = TrianglePredicate.isInCircleCC(a, b, c, p);\n\tvar circumCentre = Triangle.circumcentre(a, b, c);\n\tSystem.out.println(\"p radius diff a = \" + Math.abs(p.distance(circumCentre) - a.distance(circumCentre)) / a.distance(circumCentre));\n\tif (nonRobustInCircle !== isInCircleDD || nonRobustInCircle !== isInCircleCC) {\n\t\tSystem.out.println(\"inCircle robustness failure (double result = \" + nonRobustInCircle + \", DD result = \" + isInCircleDD + \", CC result = \" + isInCircleCC + \")\");\n\t\tSystem.out.println(WKTWriter.toLineString(new CoordinateArraySequence([a, b, c, p])));\n\t\tSystem.out.println(\"Circumcentre = \" + WKTWriter.toPoint(circumCentre) + \" radius = \" + a.distance(circumCentre));\n\t\tSystem.out.println(\"p radius diff a = \" + Math.abs(p.distance(circumCentre) / a.distance(circumCentre) - 1));\n\t\tSystem.out.println(\"p radius diff b = \" + Math.abs(p.distance(circumCentre) / b.distance(circumCentre) - 1));\n\t\tSystem.out.println(\"p radius diff c = \" + Math.abs(p.distance(circumCentre) / c.distance(circumCentre) - 1));\n\t\tSystem.out.println();\n\t}\n};\nTrianglePredicate.isInCircleDDFast = function (a, b, c, p) {\n\tvar aTerm = DD.sqr(a.x).selfAdd(DD.sqr(a.y)).selfMultiply(TrianglePredicate.triAreaDDFast(b, c, p));\n\tvar bTerm = DD.sqr(b.x).selfAdd(DD.sqr(b.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, c, p));\n\tvar cTerm = DD.sqr(c.x).selfAdd(DD.sqr(c.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, p));\n\tvar pTerm = DD.sqr(p.x).selfAdd(DD.sqr(p.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, c));\n\tvar sum = aTerm.selfSubtract(bTerm).selfAdd(cTerm).selfSubtract(pTerm);\n\tvar isInCircle = sum.doubleValue() > 0;\n\treturn isInCircle;\n};\nTrianglePredicate.isInCircleCC = function (a, b, c, p) {\n\tvar cc = Triangle.circumcentre(a, b, c);\n\tvar ccRadius = a.distance(cc);\n\tvar pRadiusDiff = p.distance(cc) - ccRadius;\n\treturn pRadiusDiff <= 0;\n};\nTrianglePredicate.isInCircleNormalized = function (a, b, c, p) {\n\tvar adx = a.x - p.x;\n\tvar ady = a.y - p.y;\n\tvar bdx = b.x - p.x;\n\tvar bdy = b.y - p.y;\n\tvar cdx = c.x - p.x;\n\tvar cdy = c.y - p.y;\n\tvar abdet = adx * bdy - bdx * ady;\n\tvar bcdet = bdx * cdy - cdx * bdy;\n\tvar cadet = cdx * ady - adx * cdy;\n\tvar alift = adx * adx + ady * ady;\n\tvar blift = bdx * bdx + bdy * bdy;\n\tvar clift = cdx * cdx + cdy * cdy;\n\tvar disc = alift * bcdet + blift * cadet + clift * abdet;\n\treturn disc > 0;\n};\nTrianglePredicate.isInCircleDDSlow = function (a, b, c, p) {\n\tvar px = DD.valueOf(p.x);\n\tvar py = DD.valueOf(p.y);\n\tvar ax = DD.valueOf(a.x);\n\tvar ay = DD.valueOf(a.y);\n\tvar bx = DD.valueOf(b.x);\n\tvar by = DD.valueOf(b.y);\n\tvar cx = DD.valueOf(c.x);\n\tvar cy = DD.valueOf(c.y);\n\tvar aTerm = ax.multiply(ax).add(ay.multiply(ay)).multiply(TrianglePredicate.triAreaDDSlow(bx, by, cx, cy, px, py));\n\tvar bTerm = bx.multiply(bx).add(by.multiply(by)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, cx, cy, px, py));\n\tvar cTerm = cx.multiply(cx).add(cy.multiply(cy)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, px, py));\n\tvar pTerm = px.multiply(px).add(py.multiply(py)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, cx, cy));\n\tvar sum = aTerm.subtract(bTerm).add(cTerm).subtract(pTerm);\n\tvar isInCircle = sum.doubleValue() > 0;\n\treturn isInCircle;\n};\nTrianglePredicate.isInCircleNonRobust = function (a, b, c, p) {\n\tvar isInCircle = (a.x * a.x + a.y * a.y) * TrianglePredicate.triArea(b, c, p) - (b.x * b.x + b.y * b.y) * TrianglePredicate.triArea(a, c, p) + (c.x * c.x + c.y * c.y) * TrianglePredicate.triArea(a, b, p) - (p.x * p.x + p.y * p.y) * TrianglePredicate.triArea(a, b, c) > 0;\n\treturn isInCircle;\n};\nTrianglePredicate.isInCircleRobust = function (a, b, c, p) {\n\treturn TrianglePredicate.isInCircleNormalized(a, b, c, p);\n};\nTrianglePredicate.triAreaDDSlow = function (ax, ay, bx, by, cx, cy) {\n\treturn bx.subtract(ax).multiply(cy.subtract(ay)).subtract(by.subtract(ay).multiply(cx.subtract(ax)));\n};\nTrianglePredicate.triAreaDDFast = function (a, b, c) {\n\tvar t1 = DD.valueOf(b.x).selfSubtract(a.x).selfMultiply(DD.valueOf(c.y).selfSubtract(a.y));\n\tvar t2 = DD.valueOf(b.y).selfSubtract(a.y).selfMultiply(DD.valueOf(c.x).selfSubtract(a.x));\n\treturn t1.selfSubtract(t2);\n};\n","import NotRepresentableException from '../../algorithm/NotRepresentableException';\nimport Coordinate from '../../geom/Coordinate';\nimport TrianglePredicate from './TrianglePredicate';\nimport extend from '../../../../../extend';\nimport System from '../../../../../java/lang/System';\nimport HCoordinate from '../../algorithm/HCoordinate';\nexport default function Vertex() {\n\tthis._p = null;\n\tif (arguments.length === 1) {\n\t\tlet _p = arguments[0];\n\t\tthis._p = new Coordinate(_p);\n\t} else if (arguments.length === 2) {\n\t\tlet _x = arguments[0], _y = arguments[1];\n\t\tthis._p = new Coordinate(_x, _y);\n\t} else if (arguments.length === 3) {\n\t\tlet _x = arguments[0], _y = arguments[1], _z = arguments[2];\n\t\tthis._p = new Coordinate(_x, _y, _z);\n\t}\n}\nextend(Vertex.prototype, {\n\tcircleCenter: function (b, c) {\n\t\tvar a = new Vertex(this.getX(), this.getY());\n\t\tvar cab = this.bisector(a, b);\n\t\tvar cbc = this.bisector(b, c);\n\t\tvar hcc = new HCoordinate(cab, cbc);\n\t\tvar cc = null;\n\t\ttry {\n\t\t\tcc = new Vertex(hcc.getX(), hcc.getY());\n\t\t} catch (nre) {\n\t\t\tif (nre instanceof NotRepresentableException) {\n\t\t\t\tSystem.err.println(\"a: \" + a + \" b: \" + b + \" c: \" + c);\n\t\t\t\tSystem.err.println(nre);\n\t\t\t} else throw nre;\n\t\t} finally {}\n\t\treturn cc;\n\t},\n\tdot: function (v) {\n\t\treturn this._p.x * v.getX() + this._p.y * v.getY();\n\t},\n\tmagn: function () {\n\t\treturn Math.sqrt(this._p.x * this._p.x + this._p.y * this._p.y);\n\t},\n\tgetZ: function () {\n\t\treturn this._p.z;\n\t},\n\tbisector: function (a, b) {\n\t\tvar dx = b.getX() - a.getX();\n\t\tvar dy = b.getY() - a.getY();\n\t\tvar l1 = new HCoordinate(a.getX() + dx / 2.0, a.getY() + dy / 2.0, 1.0);\n\t\tvar l2 = new HCoordinate(a.getX() - dy + dx / 2.0, a.getY() + dx + dy / 2.0, 1.0);\n\t\treturn new HCoordinate(l1, l2);\n\t},\n\tequals: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet _x = arguments[0];\n\t\t\tif (this._p.x === _x.getX() && this._p.y === _x.getY()) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet _x = arguments[0], tolerance = arguments[1];\n\t\t\tif (this._p.distance(_x.getCoordinate()) < tolerance) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\tgetCoordinate: function () {\n\t\treturn this._p;\n\t},\n\tisInCircle: function (a, b, c) {\n\t\treturn TrianglePredicate.isInCircleRobust(a._p, b._p, c._p, this._p);\n\t},\n\tinterpolateZValue: function (v0, v1, v2) {\n\t\tvar x0 = v0.getX();\n\t\tvar y0 = v0.getY();\n\t\tvar a = v1.getX() - x0;\n\t\tvar b = v2.getX() - x0;\n\t\tvar c = v1.getY() - y0;\n\t\tvar d = v2.getY() - y0;\n\t\tvar det = a * d - b * c;\n\t\tvar dx = this.getX() - x0;\n\t\tvar dy = this.getY() - y0;\n\t\tvar t = (d * dx - b * dy) / det;\n\t\tvar u = (-c * dx + a * dy) / det;\n\t\tvar z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ());\n\t\treturn z;\n\t},\n\tmidPoint: function (a) {\n\t\tvar xm = (this._p.x + a.getX()) / 2.0;\n\t\tvar ym = (this._p.y + a.getY()) / 2.0;\n\t\tvar zm = (this._p.z + a.getZ()) / 2.0;\n\t\treturn new Vertex(xm, ym, zm);\n\t},\n\trightOf: function (e) {\n\t\treturn this.isCCW(e.dest(), e.orig());\n\t},\n\tisCCW: function (b, c) {\n\t\treturn (b._p.x - this._p.x) * (c._p.y - this._p.y) - (b._p.y - this._p.y) * (c._p.x - this._p.x) > 0;\n\t},\n\tgetX: function () {\n\t\treturn this._p.x;\n\t},\n\tcrossProduct: function (v) {\n\t\treturn this._p.x * v.getY() - this._p.y * v.getX();\n\t},\n\tsetZ: function (_z) {\n\t\tthis._p.z = _z;\n\t},\n\ttimes: function (c) {\n\t\treturn new Vertex(c * this._p.x, c * this._p.y);\n\t},\n\tcross: function () {\n\t\treturn new Vertex(this._p.y, -this._p.x);\n\t},\n\tleftOf: function (e) {\n\t\treturn this.isCCW(e.orig(), e.dest());\n\t},\n\ttoString: function () {\n\t\treturn \"POINT (\" + this._p.x + \" \" + this._p.y + \")\";\n\t},\n\tsub: function (v) {\n\t\treturn new Vertex(this._p.x - v.getX(), this._p.y - v.getY());\n\t},\n\tgetY: function () {\n\t\treturn this._p.y;\n\t},\n\tclassify: function (p0, p1) {\n\t\tvar p2 = this;\n\t\tvar a = p1.sub(p0);\n\t\tvar b = p2.sub(p0);\n\t\tvar sa = a.crossProduct(b);\n\t\tif (sa > 0.0) return Vertex.LEFT;\n\t\tif (sa < 0.0) return Vertex.RIGHT;\n\t\tif (a.getX() * b.getX() < 0.0 || a.getY() * b.getY() < 0.0) return Vertex.BEHIND;\n\t\tif (a.magn() < b.magn()) return Vertex.BEYOND;\n\t\tif (p0.equals(p2)) return Vertex.ORIGIN;\n\t\tif (p1.equals(p2)) return Vertex.DESTINATION;\n\t\treturn Vertex.BETWEEN;\n\t},\n\tsum: function (v) {\n\t\treturn new Vertex(this._p.x + v.getX(), this._p.y + v.getY());\n\t},\n\tdistance: function (v1, v2) {\n\t\treturn Math.sqrt(Math.pow(v2.getX() - v1.getX(), 2.0) + Math.pow(v2.getY() - v1.getY(), 2.0));\n\t},\n\tcircumRadiusRatio: function (b, c) {\n\t\tvar x = this.circleCenter(b, c);\n\t\tvar radius = this.distance(x, b);\n\t\tvar edgeLength = this.distance(this, b);\n\t\tvar el = this.distance(b, c);\n\t\tif (el < edgeLength) {\n\t\t\tedgeLength = el;\n\t\t}\n\t\tel = this.distance(c, this);\n\t\tif (el < edgeLength) {\n\t\t\tedgeLength = el;\n\t\t}\n\t\treturn radius / edgeLength;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Vertex;\n\t}\n});\nVertex.interpolateZ = function () {\n\tif (arguments.length === 3) {\n\t\tlet p = arguments[0], p0 = arguments[1], p1 = arguments[2];\n\t\tvar segLen = p0.distance(p1);\n\t\tvar ptLen = p.distance(p0);\n\t\tvar dz = p1.z - p0.z;\n\t\tvar pz = p0.z + dz * (ptLen / segLen);\n\t\treturn pz;\n\t} else if (arguments.length === 4) {\n\t\tlet p = arguments[0], v0 = arguments[1], v1 = arguments[2], v2 = arguments[3];\n\t\tvar x0 = v0.x;\n\t\tvar y0 = v0.y;\n\t\tvar a = v1.x - x0;\n\t\tvar b = v2.x - x0;\n\t\tvar c = v1.y - y0;\n\t\tvar d = v2.y - y0;\n\t\tvar det = a * d - b * c;\n\t\tvar dx = p.x - x0;\n\t\tvar dy = p.y - y0;\n\t\tvar t = (d * dx - b * dy) / det;\n\t\tvar u = (-c * dx + a * dy) / det;\n\t\tvar z = v0.z + t * (v1.z - v0.z) + u * (v2.z - v0.z);\n\t\treturn z;\n\t}\n};\nVertex.LEFT = 0;\nVertex.RIGHT = 1;\nVertex.BEYOND = 2;\nVertex.BEHIND = 3;\nVertex.BETWEEN = 4;\nVertex.ORIGIN = 5;\nVertex.DESTINATION = 6;\n","import extend from '../../../../extend';\nimport Vertex from './quadedge/Vertex';\nimport inherits from '../../../../inherits';\nexport default function ConstraintVertex() {\n\tthis._isOnConstraint = null;\n\tthis._constraint = null;\n\tlet p = arguments[0];\n\tVertex.call(this, p);\n}\ninherits(ConstraintVertex, Vertex);\nextend(ConstraintVertex.prototype, {\n\tgetConstraint: function () {\n\t\treturn this._constraint;\n\t},\n\tsetOnConstraint: function (isOnConstraint) {\n\t\tthis._isOnConstraint = isOnConstraint;\n\t},\n\tmerge: function (other) {\n\t\tif (other._isOnConstraint) {\n\t\t\tthis._isOnConstraint = true;\n\t\t\tthis._constraint = other._constraint;\n\t\t}\n\t},\n\tisOnConstraint: function () {\n\t\treturn this._isOnConstraint;\n\t},\n\tsetConstraint: function (constraint) {\n\t\tthis._isOnConstraint = true;\n\t\tthis._constraint = constraint;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ConstraintVertex;\n\t}\n});\n","import WKTWriter from '../../io/WKTWriter';\nimport extend from '../../../../../extend';\nimport LineSegment from '../../geom/LineSegment';\nexport default function QuadEdge() {\n\tthis._rot = null;\n\tthis._vertex = null;\n\tthis._next = null;\n\tthis._data = null;\n}\nextend(QuadEdge.prototype, {\n\tequalsNonOriented: function (qe) {\n\t\tif (this.equalsOriented(qe)) return true;\n\t\tif (this.equalsOriented(qe.sym())) return true;\n\t\treturn false;\n\t},\n\ttoLineSegment: function () {\n\t\treturn new LineSegment(this._vertex.getCoordinate(), this.dest().getCoordinate());\n\t},\n\tdest: function () {\n\t\treturn this.sym().orig();\n\t},\n\toNext: function () {\n\t\treturn this._next;\n\t},\n\tequalsOriented: function (qe) {\n\t\tif (this.orig().getCoordinate().equals2D(qe.orig().getCoordinate()) && this.dest().getCoordinate().equals2D(qe.dest().getCoordinate())) return true;\n\t\treturn false;\n\t},\n\tdNext: function () {\n\t\treturn this.sym().oNext().sym();\n\t},\n\tlPrev: function () {\n\t\treturn this._next.sym();\n\t},\n\trPrev: function () {\n\t\treturn this.sym().oNext();\n\t},\n\trot: function () {\n\t\treturn this._rot;\n\t},\n\toPrev: function () {\n\t\treturn this._rot._next._rot;\n\t},\n\tsym: function () {\n\t\treturn this._rot._rot;\n\t},\n\tsetOrig: function (o) {\n\t\tthis._vertex = o;\n\t},\n\tlNext: function () {\n\t\treturn this.invRot().oNext().rot();\n\t},\n\tgetLength: function () {\n\t\treturn this.orig().getCoordinate().distance(this.dest().getCoordinate());\n\t},\n\tinvRot: function () {\n\t\treturn this._rot.sym();\n\t},\n\tsetDest: function (d) {\n\t\tthis.sym().setOrig(d);\n\t},\n\tsetData: function (data) {\n\t\tthis._data = data;\n\t},\n\tgetData: function () {\n\t\treturn this._data;\n\t},\n\tdelete: function () {\n\t\tthis._rot = null;\n\t},\n\torig: function () {\n\t\treturn this._vertex;\n\t},\n\trNext: function () {\n\t\treturn this._rot._next.invRot();\n\t},\n\ttoString: function () {\n\t\tvar p0 = this._vertex.getCoordinate();\n\t\tvar p1 = this.dest().getCoordinate();\n\t\treturn WKTWriter.toLineString(p0, p1);\n\t},\n\tisLive: function () {\n\t\treturn this._rot !== null;\n\t},\n\tgetPrimary: function () {\n\t\tif (this.orig().getCoordinate().compareTo(this.dest().getCoordinate()) <= 0) return this; else return this.sym();\n\t},\n\tdPrev: function () {\n\t\treturn this.invRot().oNext().invRot();\n\t},\n\tsetNext: function (next) {\n\t\tthis._next = next;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn QuadEdge;\n\t}\n});\nQuadEdge.makeEdge = function (o, d) {\n\tvar q0 = new QuadEdge();\n\tvar q1 = new QuadEdge();\n\tvar q2 = new QuadEdge();\n\tvar q3 = new QuadEdge();\n\tq0._rot = q1;\n\tq1._rot = q2;\n\tq2._rot = q3;\n\tq3._rot = q0;\n\tq0.setNext(q0);\n\tq1.setNext(q3);\n\tq2.setNext(q2);\n\tq3.setNext(q1);\n\tvar base = q0;\n\tbase.setOrig(o);\n\tbase.setDest(d);\n\treturn base;\n};\nQuadEdge.swap = function (e) {\n\tvar a = e.oPrev();\n\tvar b = e.sym().oPrev();\n\tQuadEdge.splice(e, a);\n\tQuadEdge.splice(e.sym(), b);\n\tQuadEdge.splice(e, a.lNext());\n\tQuadEdge.splice(e.sym(), b.lNext());\n\te.setOrig(a.dest());\n\te.setDest(b.dest());\n};\nQuadEdge.splice = function (a, b) {\n\tvar alpha = a.oNext().rot();\n\tvar beta = b.oNext().rot();\n\tvar t1 = b.oNext();\n\tvar t2 = a.oNext();\n\tvar t3 = beta.oNext();\n\tvar t4 = alpha.oNext();\n\ta.setNext(t1);\n\tb.setNext(t2);\n\talpha.setNext(t3);\n\tbeta.setNext(t4);\n};\nQuadEdge.connect = function (a, b) {\n\tvar e = QuadEdge.makeEdge(a.dest(), b.orig());\n\tQuadEdge.splice(e, a.lNext());\n\tQuadEdge.splice(e.sym(), b);\n\treturn e;\n};\n","import QuadEdge from './quadedge/QuadEdge';\nimport extend from '../../../../extend';\nexport default function IncrementalDelaunayTriangulator() {\n\tthis._subdiv = null;\n\tthis._isUsingTolerance = false;\n\tlet subdiv = arguments[0];\n\tthis._subdiv = subdiv;\n\tthis._isUsingTolerance = subdiv.getTolerance() > 0.0;\n}\nextend(IncrementalDelaunayTriangulator.prototype, {\n\tinsertSite: function (v) {\n\t\tvar e = this._subdiv.locate(v);\n\t\tif (this._subdiv.isVertexOfEdge(e, v)) {\n\t\t\treturn e;\n\t\t} else if (this._subdiv.isOnEdge(e, v.getCoordinate())) {\n\t\t\te = e.oPrev();\n\t\t\tthis._subdiv.delete(e.oNext());\n\t\t}\n\t\tvar base = this._subdiv.makeEdge(e.orig(), v);\n\t\tQuadEdge.splice(base, e);\n\t\tvar startEdge = base;\n\t\tdo {\n\t\t\tbase = this._subdiv.connect(e, base.sym());\n\t\t\te = base.oPrev();\n\t\t} while (e.lNext() !== startEdge);\n\t\tdo {\n\t\t\tvar t = e.oPrev();\n\t\t\tif (t.dest().rightOf(e) && v.isInCircle(e.orig(), t.dest(), e.dest())) {\n\t\t\t\tQuadEdge.swap(e);\n\t\t\t\te = e.oPrev();\n\t\t\t} else if (e.oNext() === startEdge) {\n\t\t\t\treturn base;\n\t\t\t} else {\n\t\t\t\te = e.oNext().lPrev();\n\t\t\t}\n\t\t} while (true);\n\t},\n\tinsertSites: function (vertices) {\n\t\tfor (var i = vertices.iterator(); i.hasNext(); ) {\n\t\t\tvar v = i.next();\n\t\t\tthis.insertSite(v);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn IncrementalDelaunayTriangulator;\n\t}\n});\n","import extend from '../../../../../extend';\nexport default function QuadEdgeLocator() {}\nextend(QuadEdgeLocator.prototype, {\n\tlocate: function (v) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn QuadEdgeLocator;\n\t}\n});\n","import extend from '../../../../../extend';\nimport QuadEdgeLocator from './QuadEdgeLocator';\nexport default function LastFoundQuadEdgeLocator() {\n\tthis._subdiv = null;\n\tthis._lastEdge = null;\n\tlet subdiv = arguments[0];\n\tthis._subdiv = subdiv;\n\tthis.init();\n}\nextend(LastFoundQuadEdgeLocator.prototype, {\n\tinit: function () {\n\t\tthis._lastEdge = this.findEdge();\n\t},\n\tlocate: function (v) {\n\t\tif (!this._lastEdge.isLive()) {\n\t\t\tthis.init();\n\t\t}\n\t\tvar e = this._subdiv.locateFromEdge(v, this._lastEdge);\n\t\tthis._lastEdge = e;\n\t\treturn e;\n\t},\n\tfindEdge: function () {\n\t\tvar edges = this._subdiv.getEdges();\n\t\treturn edges.iterator().next();\n\t},\n\tinterfaces_: function () {\n\t\treturn [QuadEdgeLocator];\n\t},\n\tgetClass: function () {\n\t\treturn LastFoundQuadEdgeLocator;\n\t}\n});\n","import extend from '../../../../../extend';\nimport LineSegment from '../../geom/LineSegment';\nimport RuntimeException from '../../../../../java/lang/RuntimeException';\nimport inherits from '../../../../../inherits';\nexport default function LocateFailureException() {\n\tthis._seg = null;\n\tif (arguments.length === 1) {\n\t\tif (typeof arguments[0] === \"string\") {\n\t\t\tlet msg = arguments[0];\n\t\t\tRuntimeException.call(this, msg);\n\t\t} else if (arguments[0] instanceof LineSegment) {\n\t\t\tlet seg = arguments[0];\n\t\t\tRuntimeException.call(this, \"Locate failed to converge (at edge: \" + seg + \"). Possible causes include invalid Subdivision topology or very close sites\");\n\t\t\tthis._seg = new LineSegment(seg);\n\t\t}\n\t} else if (arguments.length === 2) {\n\t\tlet msg = arguments[0], seg = arguments[1];\n\t\tRuntimeException.call(this, LocateFailureException.msgWithSpatial(msg, seg));\n\t\tthis._seg = new LineSegment(seg);\n\t}\n}\ninherits(LocateFailureException, RuntimeException);\nextend(LocateFailureException.prototype, {\n\tgetSegment: function () {\n\t\treturn this._seg;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LocateFailureException;\n\t}\n});\nLocateFailureException.msgWithSpatial = function (msg, seg) {\n\tif (seg !== null) return msg + \" [ \" + seg + \" ]\";\n\treturn msg;\n};\n","import extend from '../../../../../extend';\nexport default function TriangleVisitor() {}\nextend(TriangleVisitor.prototype, {\n\tvisit: function (triEdges) {},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn TriangleVisitor;\n\t}\n});\n","import QuadEdge from './QuadEdge';\nimport CoordinateList from '../../geom/CoordinateList';\nimport HashSet from '../../../../../java/util/HashSet';\nimport WKTWriter from '../../io/WKTWriter';\nimport GeometryFactory from '../../geom/GeometryFactory';\nimport Coordinate from '../../geom/Coordinate';\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException';\nimport Stack from '../../../../../java/util/Stack';\nimport extend from '../../../../../extend';\nimport LastFoundQuadEdgeLocator from './LastFoundQuadEdgeLocator';\nimport LocateFailureException from './LocateFailureException';\nimport Vertex from './Vertex';\nimport System from '../../../../../java/lang/System';\nimport LineSegment from '../../geom/LineSegment';\nimport ArrayList from '../../../../../java/util/ArrayList';\nimport Envelope from '../../geom/Envelope';\nimport Triangle from '../../geom/Triangle';\nimport TriangleVisitor from './TriangleVisitor';\nexport default function QuadEdgeSubdivision() {\n\tthis._visitedKey = 0;\n\tthis._quadEdges = new ArrayList();\n\tthis._startingEdge = null;\n\tthis._tolerance = null;\n\tthis._edgeCoincidenceTolerance = null;\n\tthis._frameVertex = new Array(3).fill(null);\n\tthis._frameEnv = null;\n\tthis._locator = null;\n\tthis._seg = new LineSegment();\n\tthis._triEdges = new Array(3).fill(null);\n\tlet env = arguments[0], tolerance = arguments[1];\n\tthis._tolerance = tolerance;\n\tthis._edgeCoincidenceTolerance = tolerance / QuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR;\n\tthis.createFrame(env);\n\tthis._startingEdge = this.initSubdiv();\n\tthis._locator = new LastFoundQuadEdgeLocator(this);\n}\nextend(QuadEdgeSubdivision.prototype, {\n\tgetTriangleVertices: function (includeFrame) {\n\t\tvar visitor = new TriangleVertexListVisitor();\n\t\tthis.visitTriangles(visitor, includeFrame);\n\t\treturn visitor.getTriangleVertices();\n\t},\n\tisFrameVertex: function (v) {\n\t\tif (v.equals(this._frameVertex[0])) return true;\n\t\tif (v.equals(this._frameVertex[1])) return true;\n\t\tif (v.equals(this._frameVertex[2])) return true;\n\t\treturn false;\n\t},\n\tisVertexOfEdge: function (e, v) {\n\t\tif (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\tconnect: function (a, b) {\n\t\tvar q = QuadEdge.connect(a, b);\n\t\tthis._quadEdges.add(q);\n\t\treturn q;\n\t},\n\tgetVoronoiCellPolygon: function (qe, geomFact) {\n\t\tvar cellPts = new ArrayList();\n\t\tvar startQE = qe;\n\t\tdo {\n\t\t\tvar cc = qe.rot().orig().getCoordinate();\n\t\t\tcellPts.add(cc);\n\t\t\tqe = qe.oPrev();\n\t\t} while (qe !== startQE);\n\t\tvar coordList = new CoordinateList();\n\t\tcoordList.addAll(cellPts, false);\n\t\tcoordList.closeRing();\n\t\tif (coordList.size() < 4) {\n\t\t\tSystem.out.println(coordList);\n\t\t\tcoordList.add(coordList.get(coordList.size() - 1), true);\n\t\t}\n\t\tvar pts = coordList.toCoordinateArray();\n\t\tvar cellPoly = geomFact.createPolygon(geomFact.createLinearRing(pts));\n\t\tvar v = startQE.orig();\n\t\tcellPoly.setUserData(v.getCoordinate());\n\t\treturn cellPoly;\n\t},\n\tsetLocator: function (locator) {\n\t\tthis._locator = locator;\n\t},\n\tinitSubdiv: function () {\n\t\tvar ea = this.makeEdge(this._frameVertex[0], this._frameVertex[1]);\n\t\tvar eb = this.makeEdge(this._frameVertex[1], this._frameVertex[2]);\n\t\tQuadEdge.splice(ea.sym(), eb);\n\t\tvar ec = this.makeEdge(this._frameVertex[2], this._frameVertex[0]);\n\t\tQuadEdge.splice(eb.sym(), ec);\n\t\tQuadEdge.splice(ec.sym(), ea);\n\t\treturn ea;\n\t},\n\tisFrameBorderEdge: function (e) {\n\t\tvar leftTri = new Array(3).fill(null);\n\t\tQuadEdgeSubdivision.getTriangleEdges(e, leftTri);\n\t\tvar rightTri = new Array(3).fill(null);\n\t\tQuadEdgeSubdivision.getTriangleEdges(e.sym(), rightTri);\n\t\tvar vLeftTriOther = e.lNext().dest();\n\t\tif (this.isFrameVertex(vLeftTriOther)) return true;\n\t\tvar vRightTriOther = e.sym().lNext().dest();\n\t\tif (this.isFrameVertex(vRightTriOther)) return true;\n\t\treturn false;\n\t},\n\tmakeEdge: function (o, d) {\n\t\tvar q = QuadEdge.makeEdge(o, d);\n\t\tthis._quadEdges.add(q);\n\t\treturn q;\n\t},\n\tvisitTriangles: function (triVisitor, includeFrame) {\n\t\tthis._visitedKey++;\n\t\tvar edgeStack = new Stack();\n\t\tedgeStack.push(this._startingEdge);\n\t\tvar visitedEdges = new HashSet();\n\t\twhile (!edgeStack.empty()) {\n\t\t\tvar edge = edgeStack.pop();\n\t\t\tif (!visitedEdges.contains(edge)) {\n\t\t\t\tvar triEdges = this.fetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges);\n\t\t\t\tif (triEdges !== null) triVisitor.visit(triEdges);\n\t\t\t}\n\t\t}\n\t},\n\tisFrameEdge: function (e) {\n\t\tif (this.isFrameVertex(e.orig()) || this.isFrameVertex(e.dest())) return true;\n\t\treturn false;\n\t},\n\tisOnEdge: function (e, p) {\n\t\tthis._seg.setCoordinates(e.orig().getCoordinate(), e.dest().getCoordinate());\n\t\tvar dist = this._seg.distance(p);\n\t\treturn dist < this._edgeCoincidenceTolerance;\n\t},\n\tgetEnvelope: function () {\n\t\treturn new Envelope(this._frameEnv);\n\t},\n\tcreateFrame: function (env) {\n\t\tvar deltaX = env.getWidth();\n\t\tvar deltaY = env.getHeight();\n\t\tvar offset = 0.0;\n\t\tif (deltaX > deltaY) {\n\t\t\toffset = deltaX * 10.0;\n\t\t} else {\n\t\t\toffset = deltaY * 10.0;\n\t\t}\n\t\tthis._frameVertex[0] = new Vertex((env.getMaxX() + env.getMinX()) / 2.0, env.getMaxY() + offset);\n\t\tthis._frameVertex[1] = new Vertex(env.getMinX() - offset, env.getMinY() - offset);\n\t\tthis._frameVertex[2] = new Vertex(env.getMaxX() + offset, env.getMinY() - offset);\n\t\tthis._frameEnv = new Envelope(this._frameVertex[0].getCoordinate(), this._frameVertex[1].getCoordinate());\n\t\tthis._frameEnv.expandToInclude(this._frameVertex[2].getCoordinate());\n\t},\n\tgetTriangleCoordinates: function (includeFrame) {\n\t\tvar visitor = new TriangleCoordinatesVisitor();\n\t\tthis.visitTriangles(visitor, includeFrame);\n\t\treturn visitor.getTriangles();\n\t},\n\tgetVertices: function (includeFrame) {\n\t\tvar vertices = new HashSet();\n\t\tfor (var i = this._quadEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar qe = i.next();\n\t\t\tvar v = qe.orig();\n\t\t\tif (includeFrame || !this.isFrameVertex(v)) vertices.add(v);\n\t\t\tvar vd = qe.dest();\n\t\t\tif (includeFrame || !this.isFrameVertex(vd)) vertices.add(vd);\n\t\t}\n\t\treturn vertices;\n\t},\n\tfetchTriangleToVisit: function (edge, edgeStack, includeFrame, visitedEdges) {\n\t\tvar curr = edge;\n\t\tvar edgeCount = 0;\n\t\tvar isFrame = false;\n\t\tdo {\n\t\t\tthis._triEdges[edgeCount] = curr;\n\t\t\tif (this.isFrameEdge(curr)) isFrame = true;\n\t\t\tvar sym = curr.sym();\n\t\t\tif (!visitedEdges.contains(sym)) edgeStack.push(sym);\n\t\t\tvisitedEdges.add(curr);\n\t\t\tedgeCount++;\n\t\t\tcurr = curr.lNext();\n\t\t} while (curr !== edge);\n\t\tif (isFrame && !includeFrame) return null;\n\t\treturn this._triEdges;\n\t},\n\tgetEdges: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn this._quadEdges;\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet geomFact = arguments[0];\n\t\t\tvar quadEdges = this.getPrimaryEdges(false);\n\t\t\tvar edges = new Array(quadEdges.size()).fill(null);\n\t\t\tvar i = 0;\n\t\t\tfor (var it = quadEdges.iterator(); it.hasNext(); ) {\n\t\t\t\tvar qe = it.next();\n\t\t\t\tedges[i++] = geomFact.createLineString([qe.orig().getCoordinate(), qe.dest().getCoordinate()]);\n\t\t\t}\n\t\t\treturn geomFact.createMultiLineString(edges);\n\t\t}\n\t},\n\tgetVertexUniqueEdges: function (includeFrame) {\n\t\tvar edges = new ArrayList();\n\t\tvar visitedVertices = new HashSet();\n\t\tfor (var i = this._quadEdges.iterator(); i.hasNext(); ) {\n\t\t\tvar qe = i.next();\n\t\t\tvar v = qe.orig();\n\t\t\tif (!visitedVertices.contains(v)) {\n\t\t\t\tvisitedVertices.add(v);\n\t\t\t\tif (includeFrame || !this.isFrameVertex(v)) {\n\t\t\t\t\tedges.add(qe);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar qd = qe.sym();\n\t\t\tvar vd = qd.orig();\n\t\t\tif (!visitedVertices.contains(vd)) {\n\t\t\t\tvisitedVertices.add(vd);\n\t\t\t\tif (includeFrame || !this.isFrameVertex(vd)) {\n\t\t\t\t\tedges.add(qd);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn edges;\n\t},\n\tgetTriangleEdges: function (includeFrame) {\n\t\tvar visitor = new TriangleEdgesListVisitor();\n\t\tthis.visitTriangles(visitor, includeFrame);\n\t\treturn visitor.getTriangleEdges();\n\t},\n\tgetPrimaryEdges: function (includeFrame) {\n\t\tthis._visitedKey++;\n\t\tvar edges = new ArrayList();\n\t\tvar edgeStack = new Stack();\n\t\tedgeStack.push(this._startingEdge);\n\t\tvar visitedEdges = new HashSet();\n\t\twhile (!edgeStack.empty()) {\n\t\t\tvar edge = edgeStack.pop();\n\t\t\tif (!visitedEdges.contains(edge)) {\n\t\t\t\tvar priQE = edge.getPrimary();\n\t\t\t\tif (includeFrame || !this.isFrameEdge(priQE)) edges.add(priQE);\n\t\t\t\tedgeStack.push(edge.oNext());\n\t\t\t\tedgeStack.push(edge.sym().oNext());\n\t\t\t\tvisitedEdges.add(edge);\n\t\t\t\tvisitedEdges.add(edge.sym());\n\t\t\t}\n\t\t}\n\t\treturn edges;\n\t},\n\tdelete: function (e) {\n\t\tQuadEdge.splice(e, e.oPrev());\n\t\tQuadEdge.splice(e.sym(), e.sym().oPrev());\n\t\tvar eSym = e.sym();\n\t\tvar eRot = e.rot();\n\t\tvar eRotSym = e.rot().sym();\n\t\tthis._quadEdges.remove(e);\n\t\tthis._quadEdges.remove(eSym);\n\t\tthis._quadEdges.remove(eRot);\n\t\tthis._quadEdges.remove(eRotSym);\n\t\te.delete();\n\t\teSym.delete();\n\t\teRot.delete();\n\t\teRotSym.delete();\n\t},\n\tlocateFromEdge: function (v, startEdge) {\n\t\tvar iter = 0;\n\t\tvar maxIter = this._quadEdges.size();\n\t\tvar e = startEdge;\n\t\twhile (true) {\n\t\t\titer++;\n\t\t\tif (iter > maxIter) {\n\t\t\t\tthrow new LocateFailureException(e.toLineSegment());\n\t\t\t}\n\t\t\tif (v.equals(e.orig()) || v.equals(e.dest())) {\n\t\t\t\tbreak;\n\t\t\t} else if (v.rightOf(e)) {\n\t\t\t\te = e.sym();\n\t\t\t} else if (!v.rightOf(e.oNext())) {\n\t\t\t\te = e.oNext();\n\t\t\t} else if (!v.rightOf(e.dPrev())) {\n\t\t\t\te = e.dPrev();\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn e;\n\t},\n\tgetTolerance: function () {\n\t\treturn this._tolerance;\n\t},\n\tgetVoronoiCellPolygons: function (geomFact) {\n\t\tthis.visitTriangles(new TriangleCircumcentreVisitor(), true);\n\t\tvar cells = new ArrayList();\n\t\tvar edges = this.getVertexUniqueEdges(false);\n\t\tfor (var i = edges.iterator(); i.hasNext(); ) {\n\t\t\tvar qe = i.next();\n\t\t\tcells.add(this.getVoronoiCellPolygon(qe, geomFact));\n\t\t}\n\t\treturn cells;\n\t},\n\tgetVoronoiDiagram: function (geomFact) {\n\t\tvar vorCells = this.getVoronoiCellPolygons(geomFact);\n\t\treturn geomFact.createGeometryCollection(GeometryFactory.toGeometryArray(vorCells));\n\t},\n\tgetTriangles: function (geomFact) {\n\t\tvar triPtsList = this.getTriangleCoordinates(false);\n\t\tvar tris = new Array(triPtsList.size()).fill(null);\n\t\tvar i = 0;\n\t\tfor (var it = triPtsList.iterator(); it.hasNext(); ) {\n\t\t\tvar triPt = it.next();\n\t\t\ttris[i++] = geomFact.createPolygon(geomFact.createLinearRing(triPt));\n\t\t}\n\t\treturn geomFact.createGeometryCollection(tris);\n\t},\n\tinsertSite: function (v) {\n\t\tvar e = this.locate(v);\n\t\tif (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) {\n\t\t\treturn e;\n\t\t}\n\t\tvar base = this.makeEdge(e.orig(), v);\n\t\tQuadEdge.splice(base, e);\n\t\tvar startEdge = base;\n\t\tdo {\n\t\t\tbase = this.connect(e, base.sym());\n\t\t\te = base.oPrev();\n\t\t} while (e.lNext() !== startEdge);\n\t\treturn startEdge;\n\t},\n\tlocate: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tif (arguments[0] instanceof Vertex) {\n\t\t\t\tlet v = arguments[0];\n\t\t\t\treturn this._locator.locate(v);\n\t\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\t\tlet p = arguments[0];\n\t\t\t\treturn this._locator.locate(new Vertex(p));\n\t\t\t}\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\t\tvar e = this._locator.locate(new Vertex(p0));\n\t\t\tif (e === null) return null;\n\t\t\tvar base = e;\n\t\t\tif (e.dest().getCoordinate().equals2D(p0)) base = e.sym();\n\t\t\tvar locEdge = base;\n\t\t\tdo {\n\t\t\t\tif (locEdge.dest().getCoordinate().equals2D(p1)) return locEdge;\n\t\t\t\tlocEdge = locEdge.oNext();\n\t\t\t} while (locEdge !== base);\n\t\t\treturn null;\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn QuadEdgeSubdivision;\n\t}\n});\nQuadEdgeSubdivision.getTriangleEdges = function (startQE, triEdge) {\n\ttriEdge[0] = startQE;\n\ttriEdge[1] = triEdge[0].lNext();\n\ttriEdge[2] = triEdge[1].lNext();\n\tif (triEdge[2].lNext() !== triEdge[0]) throw new IllegalArgumentException(\"Edges do not form a triangle\");\n};\nfunction TriangleCircumcentreVisitor() {}\nextend(TriangleCircumcentreVisitor.prototype, {\n\tvisit: function (triEdges) {\n\t\tvar a = triEdges[0].orig().getCoordinate();\n\t\tvar b = triEdges[1].orig().getCoordinate();\n\t\tvar c = triEdges[2].orig().getCoordinate();\n\t\tvar cc = Triangle.circumcentre(a, b, c);\n\t\tvar ccVertex = new Vertex(cc);\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\ttriEdges[i].rot().setOrig(ccVertex);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [TriangleVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn TriangleCircumcentreVisitor;\n\t}\n});\nfunction TriangleEdgesListVisitor() {\n\tthis._triList = new ArrayList();\n}\nextend(TriangleEdgesListVisitor.prototype, {\n\tgetTriangleEdges: function () {\n\t\treturn this._triList;\n\t},\n\tvisit: function (triEdges) {\n\t\tthis._triList.add(triEdges);\n\t},\n\tinterfaces_: function () {\n\t\treturn [TriangleVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn TriangleEdgesListVisitor;\n\t}\n});\nfunction TriangleVertexListVisitor() {\n\tthis._triList = new ArrayList();\n}\nextend(TriangleVertexListVisitor.prototype, {\n\tvisit: function (triEdges) {\n\t\tthis._triList.add([triEdges[0].orig(), triEdges[1].orig(), triEdges[2].orig()]);\n\t},\n\tgetTriangleVertices: function () {\n\t\treturn this._triList;\n\t},\n\tinterfaces_: function () {\n\t\treturn [TriangleVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn TriangleVertexListVisitor;\n\t}\n});\nfunction TriangleCoordinatesVisitor() {\n\tthis._coordList = new CoordinateList();\n\tthis._triCoords = new ArrayList();\n}\nextend(TriangleCoordinatesVisitor.prototype, {\n\tcheckTriangleSize: function (pts) {\n\t\tvar loc = \"\";\n\t\tif (pts.length >= 2) loc = WKTWriter.toLineString(pts[0], pts[1]); else {\n\t\t\tif (pts.length >= 1) loc = WKTWriter.toPoint(pts[0]);\n\t\t}\n\t},\n\tvisit: function (triEdges) {\n\t\tthis._coordList.clear();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\tvar v = triEdges[i].orig();\n\t\t\tthis._coordList.add(v.getCoordinate());\n\t\t}\n\t\tif (this._coordList.size() > 0) {\n\t\t\tthis._coordList.closeRing();\n\t\t\tvar pts = this._coordList.toCoordinateArray();\n\t\t\tif (pts.length !== 4) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tthis._triCoords.add(pts);\n\t\t}\n\t},\n\tgetTriangles: function () {\n\t\treturn this._triCoords;\n\t},\n\tinterfaces_: function () {\n\t\treturn [TriangleVisitor];\n\t},\n\tgetClass: function () {\n\t\treturn TriangleCoordinatesVisitor;\n\t}\n});\nQuadEdgeSubdivision.TriangleCircumcentreVisitor = TriangleCircumcentreVisitor;\nQuadEdgeSubdivision.TriangleEdgesListVisitor = TriangleEdgesListVisitor;\nQuadEdgeSubdivision.TriangleVertexListVisitor = TriangleVertexListVisitor;\nQuadEdgeSubdivision.TriangleCoordinatesVisitor = TriangleCoordinatesVisitor;\nQuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR = 1000;\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nexport default function Segment() {\n\tthis._ls = null;\n\tthis._data = null;\n\tif (arguments.length === 2) {\n\t\tlet p0 = arguments[0], p1 = arguments[1];\n\t\tthis._ls = new LineSegment(p0, p1);\n\t} else if (arguments.length === 3) {\n\t\tlet p0 = arguments[0], p1 = arguments[1], data = arguments[2];\n\t\tthis._ls = new LineSegment(p0, p1);\n\t\tthis._data = data;\n\t} else if (arguments.length === 6) {\n\t\tlet x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5];\n\t\tSegment.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2));\n\t} else if (arguments.length === 7) {\n\t\tlet x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5], data = arguments[6];\n\t\tSegment.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2), data);\n\t}\n}\nextend(Segment.prototype, {\n\tgetLineSegment: function () {\n\t\treturn this._ls;\n\t},\n\tgetEndZ: function () {\n\t\tvar p = this._ls.getCoordinate(1);\n\t\treturn p.z;\n\t},\n\tgetStartZ: function () {\n\t\tvar p = this._ls.getCoordinate(0);\n\t\treturn p.z;\n\t},\n\tintersection: function (s) {\n\t\treturn this._ls.intersection(s.getLineSegment());\n\t},\n\tgetStart: function () {\n\t\treturn this._ls.getCoordinate(0);\n\t},\n\tgetEnd: function () {\n\t\treturn this._ls.getCoordinate(1);\n\t},\n\tgetEndY: function () {\n\t\tvar p = this._ls.getCoordinate(1);\n\t\treturn p.y;\n\t},\n\tgetStartX: function () {\n\t\tvar p = this._ls.getCoordinate(0);\n\t\treturn p.x;\n\t},\n\tequalsTopo: function (s) {\n\t\treturn this._ls.equalsTopo(s.getLineSegment());\n\t},\n\tgetStartY: function () {\n\t\tvar p = this._ls.getCoordinate(0);\n\t\treturn p.y;\n\t},\n\tsetData: function (data) {\n\t\tthis._data = data;\n\t},\n\tgetData: function () {\n\t\treturn this._data;\n\t},\n\tgetEndX: function () {\n\t\tvar p = this._ls.getCoordinate(1);\n\t\treturn p.x;\n\t},\n\ttoString: function () {\n\t\treturn this._ls.toString();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn Segment;\n\t}\n});\n","import GeometryFactory from '../geom/GeometryFactory';\nimport NonEncroachingSplitPointFinder from './NonEncroachingSplitPointFinder';\nimport ConstraintVertex from './ConstraintVertex';\nimport Coordinate from '../geom/Coordinate';\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator';\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport LastFoundQuadEdgeLocator from './quadedge/LastFoundQuadEdgeLocator';\nimport Segment from './Segment';\nimport ConvexHull from '../algorithm/ConvexHull';\nimport KdTree from '../index/kdtree/KdTree';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Envelope from '../geom/Envelope';\nexport default function ConformingDelaunayTriangulator() {\n\tthis._initialVertices = null;\n\tthis._segVertices = null;\n\tthis._segments = new ArrayList();\n\tthis._subdiv = null;\n\tthis._incDel = null;\n\tthis._convexHull = null;\n\tthis._splitFinder = new NonEncroachingSplitPointFinder();\n\tthis._kdt = null;\n\tthis._vertexFactory = null;\n\tthis._computeAreaEnv = null;\n\tthis._splitPt = null;\n\tthis._tolerance = null;\n\tlet initialVertices = arguments[0], tolerance = arguments[1];\n\tthis._initialVertices = new ArrayList(initialVertices);\n\tthis._tolerance = tolerance;\n\tthis._kdt = new KdTree(tolerance);\n}\nextend(ConformingDelaunayTriangulator.prototype, {\n\tgetInitialVertices: function () {\n\t\treturn this._initialVertices;\n\t},\n\tgetKDT: function () {\n\t\treturn this._kdt;\n\t},\n\tenforceConstraints: function () {\n\t\tthis.addConstraintVertices();\n\t\tvar count = 0;\n\t\tvar splits = 0;\n\t\tdo {\n\t\t\tsplits = this.enforceGabriel(this._segments);\n\t\t\tcount++;\n\t\t} while (splits > 0 && count < ConformingDelaunayTriangulator.MAX_SPLIT_ITER);\n\t},\n\tinsertSites: function (vertices) {\n\t\tfor (var i = vertices.iterator(); i.hasNext(); ) {\n\t\t\tvar v = i.next();\n\t\t\tthis.insertSite(v);\n\t\t}\n\t},\n\tgetVertexFactory: function () {\n\t\treturn this._vertexFactory;\n\t},\n\tgetPointArray: function () {\n\t\tvar pts = new Array(this._initialVertices.size() + this._segVertices.size()).fill(null);\n\t\tvar index = 0;\n\t\tfor (var i = this._initialVertices.iterator(); i.hasNext(); ) {\n\t\t\tvar v = i.next();\n\t\t\tpts[index++] = v.getCoordinate();\n\t\t}\n\t\tfor (var i2 = this._segVertices.iterator(); i2.hasNext(); ) {\n\t\t\tvar v = i2.next();\n\t\t\tpts[index++] = v.getCoordinate();\n\t\t}\n\t\treturn pts;\n\t},\n\tsetConstraints: function (segments, segVertices) {\n\t\tthis._segments = segments;\n\t\tthis._segVertices = segVertices;\n\t},\n\tcomputeConvexHull: function () {\n\t\tvar fact = new GeometryFactory();\n\t\tvar coords = this.getPointArray();\n\t\tvar hull = new ConvexHull(coords, fact);\n\t\tthis._convexHull = hull.getConvexHull();\n\t},\n\taddConstraintVertices: function () {\n\t\tthis.computeConvexHull();\n\t\tthis.insertSites(this._segVertices);\n\t},\n\tfindNonGabrielPoint: function (seg) {\n\t\tvar p = seg.getStart();\n\t\tvar q = seg.getEnd();\n\t\tvar midPt = new Coordinate((p.x + q.x) / 2.0, (p.y + q.y) / 2.0);\n\t\tvar segRadius = p.distance(midPt);\n\t\tvar env = new Envelope(midPt);\n\t\tenv.expandBy(segRadius);\n\t\tvar result = this._kdt.query(env);\n\t\tvar closestNonGabriel = null;\n\t\tvar minDist = Double.MAX_VALUE;\n\t\tfor (var i = result.iterator(); i.hasNext(); ) {\n\t\t\tvar nextNode = i.next();\n\t\t\tvar testPt = nextNode.getCoordinate();\n\t\t\tif (testPt.equals2D(p) || testPt.equals2D(q)) continue;\n\t\t\tvar testRadius = midPt.distance(testPt);\n\t\t\tif (testRadius < segRadius) {\n\t\t\t\tvar testDist = testRadius;\n\t\t\t\tif (closestNonGabriel === null || testDist < minDist) {\n\t\t\t\t\tclosestNonGabriel = testPt;\n\t\t\t\t\tminDist = testDist;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn closestNonGabriel;\n\t},\n\tgetConstraintSegments: function () {\n\t\treturn this._segments;\n\t},\n\tsetSplitPointFinder: function (splitFinder) {\n\t\tthis._splitFinder = splitFinder;\n\t},\n\tgetConvexHull: function () {\n\t\treturn this._convexHull;\n\t},\n\tgetTolerance: function () {\n\t\treturn this._tolerance;\n\t},\n\tenforceGabriel: function (segsToInsert) {\n\t\tvar newSegments = new ArrayList();\n\t\tvar splits = 0;\n\t\tvar segsToRemove = new ArrayList();\n\t\tfor (var i = segsToInsert.iterator(); i.hasNext(); ) {\n\t\t\tvar seg = i.next();\n\t\t\tvar encroachPt = this.findNonGabrielPoint(seg);\n\t\t\tif (encroachPt === null) continue;\n\t\t\tthis._splitPt = this._splitFinder.findSplitPoint(seg, encroachPt);\n\t\t\tvar splitVertex = this.createVertex(this._splitPt, seg);\n\t\t\tvar insertedVertex = this.insertSite(splitVertex);\n\t\t\tif (!insertedVertex.getCoordinate().equals2D(this._splitPt)) {}\n\t\t\tvar s1 = new Segment(seg.getStartX(), seg.getStartY(), seg.getStartZ(), splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getData());\n\t\t\tvar s2 = new Segment(splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getEndX(), seg.getEndY(), seg.getEndZ(), seg.getData());\n\t\t\tnewSegments.add(s1);\n\t\t\tnewSegments.add(s2);\n\t\t\tsegsToRemove.add(seg);\n\t\t\tsplits = splits + 1;\n\t\t}\n\t\tsegsToInsert.removeAll(segsToRemove);\n\t\tsegsToInsert.addAll(newSegments);\n\t\treturn splits;\n\t},\n\tcreateVertex: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet p = arguments[0];\n\t\t\tvar v = null;\n\t\t\tif (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, null); else v = new ConstraintVertex(p);\n\t\t\treturn v;\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet p = arguments[0], seg = arguments[1];\n\t\t\tvar v = null;\n\t\t\tif (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, seg); else v = new ConstraintVertex(p);\n\t\t\tv.setOnConstraint(true);\n\t\t\treturn v;\n\t\t}\n\t},\n\tgetSubdivision: function () {\n\t\treturn this._subdiv;\n\t},\n\tcomputeBoundingBox: function () {\n\t\tvar vertexEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._initialVertices);\n\t\tvar segEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._segVertices);\n\t\tvar allPointsEnv = new Envelope(vertexEnv);\n\t\tallPointsEnv.expandToInclude(segEnv);\n\t\tvar deltaX = allPointsEnv.getWidth() * 0.2;\n\t\tvar deltaY = allPointsEnv.getHeight() * 0.2;\n\t\tvar delta = Math.max(deltaX, deltaY);\n\t\tthis._computeAreaEnv = new Envelope(allPointsEnv);\n\t\tthis._computeAreaEnv.expandBy(delta);\n\t},\n\tsetVertexFactory: function (vertexFactory) {\n\t\tthis._vertexFactory = vertexFactory;\n\t},\n\tformInitialDelaunay: function () {\n\t\tthis.computeBoundingBox();\n\t\tthis._subdiv = new QuadEdgeSubdivision(this._computeAreaEnv, this._tolerance);\n\t\tthis._subdiv.setLocator(new LastFoundQuadEdgeLocator(this._subdiv));\n\t\tthis._incDel = new IncrementalDelaunayTriangulator(this._subdiv);\n\t\tthis.insertSites(this._initialVertices);\n\t},\n\tinsertSite: function () {\n\t\tif (arguments[0] instanceof ConstraintVertex) {\n\t\t\tlet v = arguments[0];\n\t\t\tvar kdnode = this._kdt.insert(v.getCoordinate(), v);\n\t\t\tif (!kdnode.isRepeated()) {\n\t\t\t\tthis._incDel.insertSite(v);\n\t\t\t} else {\n\t\t\t\tvar snappedV = kdnode.getData();\n\t\t\t\tsnappedV.merge(v);\n\t\t\t\treturn snappedV;\n\t\t\t}\n\t\t\treturn v;\n\t\t} else if (arguments[0] instanceof Coordinate) {\n\t\t\tlet p = arguments[0];\n\t\t\tthis.insertSite(this.createVertex(p));\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ConformingDelaunayTriangulator;\n\t}\n});\nConformingDelaunayTriangulator.computeVertexEnvelope = function (vertices) {\n\tvar env = new Envelope();\n\tfor (var i = vertices.iterator(); i.hasNext(); ) {\n\t\tvar v = i.next();\n\t\tenv.expandToInclude(v.getCoordinate());\n\t}\n\treturn env;\n};\nConformingDelaunayTriangulator.MAX_SPLIT_ITER = 99;\n","import CoordinateList from '../geom/CoordinateList';\nimport Geometry from '../geom/Geometry';\nimport Arrays from '../../../../java/util/Arrays';\nimport hasInterface from '../../../../hasInterface';\nimport Collection from '../../../../java/util/Collection';\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator';\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision';\nimport extend from '../../../../extend';\nimport Vertex from './quadedge/Vertex';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport Envelope from '../geom/Envelope';\nexport default function DelaunayTriangulationBuilder() {\n\tthis._siteCoords = null;\n\tthis._tolerance = 0.0;\n\tthis._subdiv = null;\n}\nextend(DelaunayTriangulationBuilder.prototype, {\n\tcreate: function () {\n\t\tif (this._subdiv !== null) return null;\n\t\tvar siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords);\n\t\tvar vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords);\n\t\tthis._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance);\n\t\tvar triangulator = new IncrementalDelaunayTriangulator(this._subdiv);\n\t\ttriangulator.insertSites(vertices);\n\t},\n\tsetTolerance: function (tolerance) {\n\t\tthis._tolerance = tolerance;\n\t},\n\tsetSites: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);\n\t\t} else if (hasInterface(arguments[0], Collection)) {\n\t\t\tlet coords = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords));\n\t\t}\n\t},\n\tgetEdges: function (geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getEdges(geomFact);\n\t},\n\tgetSubdivision: function () {\n\t\tthis.create();\n\t\treturn this._subdiv;\n\t},\n\tgetTriangles: function (geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getTriangles(geomFact);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn DelaunayTriangulationBuilder;\n\t}\n});\nDelaunayTriangulationBuilder.extractUniqueCoordinates = function (geom) {\n\tif (geom === null) return new CoordinateList();\n\tvar coords = geom.getCoordinates();\n\treturn DelaunayTriangulationBuilder.unique(coords);\n};\nDelaunayTriangulationBuilder.envelope = function (coords) {\n\tvar env = new Envelope();\n\tfor (var i = coords.iterator(); i.hasNext(); ) {\n\t\tvar coord = i.next();\n\t\tenv.expandToInclude(coord);\n\t}\n\treturn env;\n};\nDelaunayTriangulationBuilder.unique = function (coords) {\n\tvar coordsCopy = CoordinateArrays.copyDeep(coords);\n\tArrays.sort(coordsCopy);\n\tvar coordList = new CoordinateList(coordsCopy, false);\n\treturn coordList;\n};\nDelaunayTriangulationBuilder.toVertices = function (coords) {\n\tvar verts = new ArrayList();\n\tfor (var i = coords.iterator(); i.hasNext(); ) {\n\t\tvar coord = i.next();\n\t\tverts.add(new Vertex(coord));\n\t}\n\treturn verts;\n};\n","import ConformingDelaunayTriangulator from './ConformingDelaunayTriangulator';\nimport ConstraintVertex from './ConstraintVertex';\nimport extend from '../../../../extend';\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder';\nimport Segment from './Segment';\nimport ArrayList from '../../../../java/util/ArrayList';\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter';\nimport TreeMap from '../../../../java/util/TreeMap';\nexport default function ConformingDelaunayTriangulationBuilder() {\n\tthis._siteCoords = null;\n\tthis._constraintLines = null;\n\tthis._tolerance = 0.0;\n\tthis._subdiv = null;\n\tthis._constraintVertexMap = new TreeMap();\n}\nextend(ConformingDelaunayTriangulationBuilder.prototype, {\n\tcreateSiteVertices: function (coords) {\n\t\tvar verts = new ArrayList();\n\t\tfor (var i = coords.iterator(); i.hasNext(); ) {\n\t\t\tvar coord = i.next();\n\t\t\tif (this._constraintVertexMap.containsKey(coord)) continue;\n\t\t\tverts.add(new ConstraintVertex(coord));\n\t\t}\n\t\treturn verts;\n\t},\n\tcreate: function () {\n\t\tif (this._subdiv !== null) return null;\n\t\tvar siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords);\n\t\tvar segments = new ArrayList();\n\t\tif (this._constraintLines !== null) {\n\t\t\tsiteEnv.expandToInclude(this._constraintLines.getEnvelopeInternal());\n\t\t\tthis.createVertices(this._constraintLines);\n\t\t\tsegments = ConformingDelaunayTriangulationBuilder.createConstraintSegments(this._constraintLines);\n\t\t}\n\t\tvar sites = this.createSiteVertices(this._siteCoords);\n\t\tvar cdt = new ConformingDelaunayTriangulator(sites, this._tolerance);\n\t\tcdt.setConstraints(segments, new ArrayList(this._constraintVertexMap.values()));\n\t\tcdt.formInitialDelaunay();\n\t\tcdt.enforceConstraints();\n\t\tthis._subdiv = cdt.getSubdivision();\n\t},\n\tsetTolerance: function (tolerance) {\n\t\tthis._tolerance = tolerance;\n\t},\n\tsetConstraints: function (constraintLines) {\n\t\tthis._constraintLines = constraintLines;\n\t},\n\tsetSites: function (geom) {\n\t\tthis._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);\n\t},\n\tgetEdges: function (geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getEdges(geomFact);\n\t},\n\tgetSubdivision: function () {\n\t\tthis.create();\n\t\treturn this._subdiv;\n\t},\n\tgetTriangles: function (geomFact) {\n\t\tthis.create();\n\t\treturn this._subdiv.getTriangles(geomFact);\n\t},\n\tcreateVertices: function (geom) {\n\t\tvar coords = geom.getCoordinates();\n\t\tfor (var i = 0; i < coords.length; i++) {\n\t\t\tvar v = new ConstraintVertex(coords[i]);\n\t\t\tthis._constraintVertexMap.put(coords[i], v);\n\t\t}\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ConformingDelaunayTriangulationBuilder;\n\t}\n});\nConformingDelaunayTriangulationBuilder.createConstraintSegments = function () {\n\tif (arguments.length === 1) {\n\t\tlet geom = arguments[0];\n\t\tvar lines = LinearComponentExtracter.getLines(geom);\n\t\tvar constraintSegs = new ArrayList();\n\t\tfor (var i = lines.iterator(); i.hasNext(); ) {\n\t\t\tvar line = i.next();\n\t\t\tConformingDelaunayTriangulationBuilder.createConstraintSegments(line, constraintSegs);\n\t\t}\n\t\treturn constraintSegs;\n\t} else if (arguments.length === 2) {\n\t\tlet line = arguments[0], constraintSegs = arguments[1];\n\t\tvar coords = line.getCoordinates();\n\t\tfor (var i = 1; i < coords.length; i++) {\n\t\t\tconstraintSegs.add(new Segment(coords[i - 1], coords[i]));\n\t\t}\n\t}\n};\n","import Geometry from '../geom/Geometry';\nimport hasInterface from '../../../../hasInterface';\nimport GeometryFactory from '../geom/GeometryFactory';\nimport Collection from '../../../../java/util/Collection';\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator';\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision';\nimport extend from '../../../../extend';\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder';\nimport CoordinateArrays from '../geom/CoordinateArrays';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function VoronoiDiagramBuilder() {\n\tthis._siteCoords = null;\n\tthis._tolerance = 0.0;\n\tthis._subdiv = null;\n\tthis._clipEnv = null;\n\tthis._diagramEnv = null;\n}\nextend(VoronoiDiagramBuilder.prototype, {\n\tcreate: function () {\n\t\tif (this._subdiv !== null) return null;\n\t\tvar siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords);\n\t\tthis._diagramEnv = siteEnv;\n\t\tvar expandBy = Math.max(this._diagramEnv.getWidth(), this._diagramEnv.getHeight());\n\t\tthis._diagramEnv.expandBy(expandBy);\n\t\tif (this._clipEnv !== null) this._diagramEnv.expandToInclude(this._clipEnv);\n\t\tvar vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords);\n\t\tthis._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance);\n\t\tvar triangulator = new IncrementalDelaunayTriangulator(this._subdiv);\n\t\ttriangulator.insertSites(vertices);\n\t},\n\tgetDiagram: function (geomFact) {\n\t\tthis.create();\n\t\tvar polys = this._subdiv.getVoronoiDiagram(geomFact);\n\t\treturn VoronoiDiagramBuilder.clipGeometryCollection(polys, this._diagramEnv);\n\t},\n\tsetTolerance: function (tolerance) {\n\t\tthis._tolerance = tolerance;\n\t},\n\tsetSites: function () {\n\t\tif (arguments[0] instanceof Geometry) {\n\t\t\tlet geom = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);\n\t\t} else if (hasInterface(arguments[0], Collection)) {\n\t\t\tlet coords = arguments[0];\n\t\t\tthis._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords));\n\t\t}\n\t},\n\tsetClipEnvelope: function (clipEnv) {\n\t\tthis._clipEnv = clipEnv;\n\t},\n\tgetSubdivision: function () {\n\t\tthis.create();\n\t\treturn this._subdiv;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn VoronoiDiagramBuilder;\n\t}\n});\nVoronoiDiagramBuilder.clipGeometryCollection = function (geom, clipEnv) {\n\tvar clipPoly = geom.getFactory().toGeometry(clipEnv);\n\tvar clipped = new ArrayList();\n\tfor (var i = 0; i < geom.getNumGeometries(); i++) {\n\t\tvar g = geom.getGeometryN(i);\n\t\tvar result = null;\n\t\tif (clipEnv.contains(g.getEnvelopeInternal())) result = g; else if (clipEnv.intersects(g.getEnvelopeInternal())) {\n\t\t\tresult = clipPoly.intersection(g);\n\t\t\tresult.setUserData(g.getUserData());\n\t\t}\n\t\tif (result !== null && !result.isEmpty()) {\n\t\t\tclipped.add(result);\n\t\t}\n\t}\n\treturn geom.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(clipped));\n};\n","import Coordinate from '../geom/Coordinate';\nimport extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nimport Comparable from '../../../../java/lang/Comparable';\nexport default function LinearLocation() {\n\tthis._componentIndex = 0;\n\tthis._segmentIndex = 0;\n\tthis._segmentFraction = 0.0;\n\tif (arguments.length === 0) {} else if (arguments.length === 1) {\n\t\tlet loc = arguments[0];\n\t\tthis._componentIndex = loc._componentIndex;\n\t\tthis._segmentIndex = loc._segmentIndex;\n\t\tthis._segmentFraction = loc._segmentFraction;\n\t} else if (arguments.length === 2) {\n\t\tlet segmentIndex = arguments[0], segmentFraction = arguments[1];\n\t\tLinearLocation.call(this, 0, segmentIndex, segmentFraction);\n\t} else if (arguments.length === 3) {\n\t\tlet componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2];\n\t\tthis._componentIndex = componentIndex;\n\t\tthis._segmentIndex = segmentIndex;\n\t\tthis._segmentFraction = segmentFraction;\n\t\tthis.normalize();\n\t} else if (arguments.length === 4) {\n\t\tlet componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2], doNormalize = arguments[3];\n\t\tthis._componentIndex = componentIndex;\n\t\tthis._segmentIndex = segmentIndex;\n\t\tthis._segmentFraction = segmentFraction;\n\t\tif (doNormalize) this.normalize();\n\t}\n}\nextend(LinearLocation.prototype, {\n\tgetSegmentIndex: function () {\n\t\treturn this._segmentIndex;\n\t},\n\tgetComponentIndex: function () {\n\t\treturn this._componentIndex;\n\t},\n\tisEndpoint: function (linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar nseg = lineComp.getNumPoints() - 1;\n\t\treturn this._segmentIndex >= nseg || this._segmentIndex === nseg && this._segmentFraction >= 1.0;\n\t},\n\tisValid: function (linearGeom) {\n\t\tif (this._componentIndex < 0 || this._componentIndex >= linearGeom.getNumGeometries()) return false;\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tif (this._segmentIndex < 0 || this._segmentIndex > lineComp.getNumPoints()) return false;\n\t\tif (this._segmentIndex === lineComp.getNumPoints() && this._segmentFraction !== 0.0) return false;\n\t\tif (this._segmentFraction < 0.0 || this._segmentFraction > 1.0) return false;\n\t\treturn true;\n\t},\n\tnormalize: function () {\n\t\tif (this._segmentFraction < 0.0) {\n\t\t\tthis._segmentFraction = 0.0;\n\t\t}\n\t\tif (this._segmentFraction > 1.0) {\n\t\t\tthis._segmentFraction = 1.0;\n\t\t}\n\t\tif (this._componentIndex < 0) {\n\t\t\tthis._componentIndex = 0;\n\t\t\tthis._segmentIndex = 0;\n\t\t\tthis._segmentFraction = 0.0;\n\t\t}\n\t\tif (this._segmentIndex < 0) {\n\t\t\tthis._segmentIndex = 0;\n\t\t\tthis._segmentFraction = 0.0;\n\t\t}\n\t\tif (this._segmentFraction === 1.0) {\n\t\t\tthis._segmentFraction = 0.0;\n\t\t\tthis._segmentIndex += 1;\n\t\t}\n\t},\n\ttoLowest: function (linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar nseg = lineComp.getNumPoints() - 1;\n\t\tif (this._segmentIndex < nseg) return this;\n\t\treturn new LinearLocation(this._componentIndex, nseg, 1.0, false);\n\t},\n\tgetCoordinate: function (linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar p0 = lineComp.getCoordinateN(this._segmentIndex);\n\t\tif (this._segmentIndex >= lineComp.getNumPoints() - 1) return p0;\n\t\tvar p1 = lineComp.getCoordinateN(this._segmentIndex + 1);\n\t\treturn LinearLocation.pointAlongSegmentByFraction(p0, p1, this._segmentFraction);\n\t},\n\tgetSegmentFraction: function () {\n\t\treturn this._segmentFraction;\n\t},\n\tgetSegment: function (linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar p0 = lineComp.getCoordinateN(this._segmentIndex);\n\t\tif (this._segmentIndex >= lineComp.getNumPoints() - 1) {\n\t\t\tvar prev = lineComp.getCoordinateN(lineComp.getNumPoints() - 2);\n\t\t\treturn new LineSegment(prev, p0);\n\t\t}\n\t\tvar p1 = lineComp.getCoordinateN(this._segmentIndex + 1);\n\t\treturn new LineSegment(p0, p1);\n\t},\n\tclamp: function (linear) {\n\t\tif (this._componentIndex >= linear.getNumGeometries()) {\n\t\t\tthis.setToEnd(linear);\n\t\t\treturn null;\n\t\t}\n\t\tif (this._segmentIndex >= linear.getNumPoints()) {\n\t\t\tvar line = linear.getGeometryN(this._componentIndex);\n\t\t\tthis._segmentIndex = line.getNumPoints() - 1;\n\t\t\tthis._segmentFraction = 1.0;\n\t\t}\n\t},\n\tsetToEnd: function (linear) {\n\t\tthis._componentIndex = linear.getNumGeometries() - 1;\n\t\tvar lastLine = linear.getGeometryN(this._componentIndex);\n\t\tthis._segmentIndex = lastLine.getNumPoints() - 1;\n\t\tthis._segmentFraction = 1.0;\n\t},\n\tcompareTo: function (o) {\n\t\tvar other = o;\n\t\tif (this._componentIndex < other._componentIndex) return -1;\n\t\tif (this._componentIndex > other._componentIndex) return 1;\n\t\tif (this._segmentIndex < other._segmentIndex) return -1;\n\t\tif (this._segmentIndex > other._segmentIndex) return 1;\n\t\tif (this._segmentFraction < other._segmentFraction) return -1;\n\t\tif (this._segmentFraction > other._segmentFraction) return 1;\n\t\treturn 0;\n\t},\n\tcopy: function () {\n\t\treturn new LinearLocation(this._componentIndex, this._segmentIndex, this._segmentFraction);\n\t},\n\ttoString: function () {\n\t\treturn \"LinearLoc[\" + this._componentIndex + \", \" + this._segmentIndex + \", \" + this._segmentFraction + \"]\";\n\t},\n\tisOnSameSegment: function (loc) {\n\t\tif (this._componentIndex !== loc._componentIndex) return false;\n\t\tif (this._segmentIndex === loc._segmentIndex) return true;\n\t\tif (loc._segmentIndex - this._segmentIndex === 1 && loc._segmentFraction === 0.0) return true;\n\t\tif (this._segmentIndex - loc._segmentIndex === 1 && this._segmentFraction === 0.0) return true;\n\t\treturn false;\n\t},\n\tsnapToVertex: function (linearGeom, minDistance) {\n\t\tif (this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0) return null;\n\t\tvar segLen = this.getSegmentLength(linearGeom);\n\t\tvar lenToStart = this._segmentFraction * segLen;\n\t\tvar lenToEnd = segLen - lenToStart;\n\t\tif (lenToStart <= lenToEnd && lenToStart < minDistance) {\n\t\t\tthis._segmentFraction = 0.0;\n\t\t} else if (lenToEnd <= lenToStart && lenToEnd < minDistance) {\n\t\t\tthis._segmentFraction = 1.0;\n\t\t}\n\t},\n\tcompareLocationValues: function (componentIndex1, segmentIndex1, segmentFraction1) {\n\t\tif (this._componentIndex < componentIndex1) return -1;\n\t\tif (this._componentIndex > componentIndex1) return 1;\n\t\tif (this._segmentIndex < segmentIndex1) return -1;\n\t\tif (this._segmentIndex > segmentIndex1) return 1;\n\t\tif (this._segmentFraction < segmentFraction1) return -1;\n\t\tif (this._segmentFraction > segmentFraction1) return 1;\n\t\treturn 0;\n\t},\n\tgetSegmentLength: function (linearGeom) {\n\t\tvar lineComp = linearGeom.getGeometryN(this._componentIndex);\n\t\tvar segIndex = this._segmentIndex;\n\t\tif (this._segmentIndex >= lineComp.getNumPoints() - 1) segIndex = lineComp.getNumPoints() - 2;\n\t\tvar p0 = lineComp.getCoordinateN(segIndex);\n\t\tvar p1 = lineComp.getCoordinateN(segIndex + 1);\n\t\treturn p0.distance(p1);\n\t},\n\tisVertex: function () {\n\t\treturn this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0;\n\t},\n\tinterfaces_: function () {\n\t\treturn [Comparable];\n\t},\n\tgetClass: function () {\n\t\treturn LinearLocation;\n\t}\n});\nLinearLocation.getEndLocation = function (linear) {\n\tvar loc = new LinearLocation();\n\tloc.setToEnd(linear);\n\treturn loc;\n};\nLinearLocation.pointAlongSegmentByFraction = function (p0, p1, frac) {\n\tif (frac <= 0.0) return p0;\n\tif (frac >= 1.0) return p1;\n\tvar x = (p1.x - p0.x) * frac + p0.x;\n\tvar y = (p1.y - p0.y) * frac + p0.y;\n\tvar z = (p1.z - p0.z) * frac + p0.z;\n\treturn new Coordinate(x, y, z);\n};\nLinearLocation.compareLocationValues = function (componentIndex0, segmentIndex0, segmentFraction0, componentIndex1, segmentIndex1, segmentFraction1) {\n\tif (componentIndex0 < componentIndex1) return -1;\n\tif (componentIndex0 > componentIndex1) return 1;\n\tif (segmentIndex0 < segmentIndex1) return -1;\n\tif (segmentIndex0 > segmentIndex1) return 1;\n\tif (segmentFraction0 < segmentFraction1) return -1;\n\tif (segmentFraction0 > segmentFraction1) return 1;\n\treturn 0;\n};\n","import hasInterface from '../../../../hasInterface';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport Lineal from '../geom/Lineal';\nexport default function LinearIterator() {\n\tthis._linearGeom = null;\n\tthis._numLines = null;\n\tthis._currentLine = null;\n\tthis._componentIndex = 0;\n\tthis._vertexIndex = 0;\n\tif (arguments.length === 1) {\n\t\tlet linear = arguments[0];\n\t\tLinearIterator.call(this, linear, 0, 0);\n\t} else if (arguments.length === 2) {\n\t\tlet linear = arguments[0], start = arguments[1];\n\t\tLinearIterator.call(this, linear, start.getComponentIndex(), LinearIterator.segmentEndVertexIndex(start));\n\t} else if (arguments.length === 3) {\n\t\tlet linearGeom = arguments[0], componentIndex = arguments[1], vertexIndex = arguments[2];\n\t\tif (!hasInterface(linearGeom, Lineal)) throw new IllegalArgumentException(\"Lineal geometry is required\");\n\t\tthis._linearGeom = linearGeom;\n\t\tthis._numLines = linearGeom.getNumGeometries();\n\t\tthis._componentIndex = componentIndex;\n\t\tthis._vertexIndex = vertexIndex;\n\t\tthis.loadCurrentLine();\n\t}\n}\nextend(LinearIterator.prototype, {\n\tgetComponentIndex: function () {\n\t\treturn this._componentIndex;\n\t},\n\tgetLine: function () {\n\t\treturn this._currentLine;\n\t},\n\tgetVertexIndex: function () {\n\t\treturn this._vertexIndex;\n\t},\n\tgetSegmentEnd: function () {\n\t\tif (this._vertexIndex < this.getLine().getNumPoints() - 1) return this._currentLine.getCoordinateN(this._vertexIndex + 1);\n\t\treturn null;\n\t},\n\tnext: function () {\n\t\tif (!this.hasNext()) return null;\n\t\tthis._vertexIndex++;\n\t\tif (this._vertexIndex >= this._currentLine.getNumPoints()) {\n\t\t\tthis._componentIndex++;\n\t\t\tthis.loadCurrentLine();\n\t\t\tthis._vertexIndex = 0;\n\t\t}\n\t},\n\tloadCurrentLine: function () {\n\t\tif (this._componentIndex >= this._numLines) {\n\t\t\tthis._currentLine = null;\n\t\t\treturn null;\n\t\t}\n\t\tthis._currentLine = this._linearGeom.getGeometryN(this._componentIndex);\n\t},\n\tgetSegmentStart: function () {\n\t\treturn this._currentLine.getCoordinateN(this._vertexIndex);\n\t},\n\tisEndOfLine: function () {\n\t\tif (this._componentIndex >= this._numLines) return false;\n\t\tif (this._vertexIndex < this._currentLine.getNumPoints() - 1) return false;\n\t\treturn true;\n\t},\n\thasNext: function () {\n\t\tif (this._componentIndex >= this._numLines) return false;\n\t\tif (this._componentIndex === this._numLines - 1 && this._vertexIndex >= this._currentLine.getNumPoints()) return false;\n\t\treturn true;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LinearIterator;\n\t}\n});\nLinearIterator.segmentEndVertexIndex = function (loc) {\n\tif (loc.getSegmentFraction() > 0.0) return loc.getSegmentIndex() + 1;\n\treturn loc.getSegmentIndex();\n};\n","import LinearIterator from './LinearIterator';\nimport LinearLocation from './LinearLocation';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nimport Assert from '../util/Assert';\nexport default function LocationIndexOfPoint() {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n}\nextend(LocationIndexOfPoint.prototype, {\n\tindexOf: function (inputPt) {\n\t\treturn this.indexOfFromStart(inputPt, null);\n\t},\n\tindexOfFromStart: function (inputPt, minIndex) {\n\t\tvar minDistance = Double.MAX_VALUE;\n\t\tvar minComponentIndex = 0;\n\t\tvar minSegmentIndex = 0;\n\t\tvar minFrac = -1.0;\n\t\tvar seg = new LineSegment();\n\t\tfor (var it = new LinearIterator(this._linearGeom); it.hasNext(); it.next()) {\n\t\t\tif (!it.isEndOfLine()) {\n\t\t\t\tseg.p0 = it.getSegmentStart();\n\t\t\t\tseg.p1 = it.getSegmentEnd();\n\t\t\t\tvar segDistance = seg.distance(inputPt);\n\t\t\t\tvar segFrac = seg.segmentFraction(inputPt);\n\t\t\t\tvar candidateComponentIndex = it.getComponentIndex();\n\t\t\t\tvar candidateSegmentIndex = it.getVertexIndex();\n\t\t\t\tif (segDistance < minDistance) {\n\t\t\t\t\tif (minIndex === null || minIndex.compareLocationValues(candidateComponentIndex, candidateSegmentIndex, segFrac) < 0) {\n\t\t\t\t\t\tminComponentIndex = candidateComponentIndex;\n\t\t\t\t\t\tminSegmentIndex = candidateSegmentIndex;\n\t\t\t\t\t\tminFrac = segFrac;\n\t\t\t\t\t\tminDistance = segDistance;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (minDistance === Double.MAX_VALUE) {\n\t\t\treturn new LinearLocation(minIndex);\n\t\t}\n\t\tvar loc = new LinearLocation(minComponentIndex, minSegmentIndex, minFrac);\n\t\treturn loc;\n\t},\n\tindexOfAfter: function (inputPt, minIndex) {\n\t\tif (minIndex === null) return this.indexOf(inputPt);\n\t\tvar endLoc = LinearLocation.getEndLocation(this._linearGeom);\n\t\tif (endLoc.compareTo(minIndex) <= 0) return endLoc;\n\t\tvar closestAfter = this.indexOfFromStart(inputPt, minIndex);\n\t\tAssert.isTrue(closestAfter.compareTo(minIndex) >= 0, \"computed location is before specified minimum location\");\n\t\treturn closestAfter;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LocationIndexOfPoint;\n\t}\n});\nLocationIndexOfPoint.indexOf = function (linearGeom, inputPt) {\n\tvar locater = new LocationIndexOfPoint(linearGeom);\n\treturn locater.indexOf(inputPt);\n};\nLocationIndexOfPoint.indexOfAfter = function (linearGeom, inputPt, minIndex) {\n\tvar locater = new LocationIndexOfPoint(linearGeom);\n\treturn locater.indexOfAfter(inputPt, minIndex);\n};\n","import extend from '../../../../extend';\nimport LocationIndexOfPoint from './LocationIndexOfPoint';\nexport default function LocationIndexOfLine() {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n}\nextend(LocationIndexOfLine.prototype, {\n\tindicesOf: function (subLine) {\n\t\tvar startPt = subLine.getGeometryN(0).getCoordinateN(0);\n\t\tvar lastLine = subLine.getGeometryN(subLine.getNumGeometries() - 1);\n\t\tvar endPt = lastLine.getCoordinateN(lastLine.getNumPoints() - 1);\n\t\tvar locPt = new LocationIndexOfPoint(this._linearGeom);\n\t\tvar subLineLoc = new Array(2).fill(null);\n\t\tsubLineLoc[0] = locPt.indexOf(startPt);\n\t\tif (subLine.getLength() === 0.0) {\n\t\t\tsubLineLoc[1] = subLineLoc[0].copy();\n\t\t} else {\n\t\t\tsubLineLoc[1] = locPt.indexOfAfter(endPt, subLineLoc[0]);\n\t\t}\n\t\treturn subLineLoc;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LocationIndexOfLine;\n\t}\n});\nLocationIndexOfLine.indicesOf = function (linearGeom, subLine) {\n\tvar locater = new LocationIndexOfLine(linearGeom);\n\treturn locater.indicesOf(subLine);\n};\n","import CoordinateList from '../geom/CoordinateList';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport extend from '../../../../extend';\nimport ArrayList from '../../../../java/util/ArrayList';\nexport default function LinearGeometryBuilder() {\n\tthis._geomFact = null;\n\tthis._lines = new ArrayList();\n\tthis._coordList = null;\n\tthis._ignoreInvalidLines = false;\n\tthis._fixInvalidLines = false;\n\tthis._lastPt = null;\n\tlet geomFact = arguments[0];\n\tthis._geomFact = geomFact;\n}\nextend(LinearGeometryBuilder.prototype, {\n\tgetGeometry: function () {\n\t\tthis.endLine();\n\t\treturn this._geomFact.buildGeometry(this._lines);\n\t},\n\tgetLastCoordinate: function () {\n\t\treturn this._lastPt;\n\t},\n\tendLine: function () {\n\t\tif (this._coordList === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this._ignoreInvalidLines && this._coordList.size() < 2) {\n\t\t\tthis._coordList = null;\n\t\t\treturn null;\n\t\t}\n\t\tvar rawPts = this._coordList.toCoordinateArray();\n\t\tvar pts = rawPts;\n\t\tif (this._fixInvalidLines) pts = this.validCoordinateSequence(rawPts);\n\t\tthis._coordList = null;\n\t\tvar line = null;\n\t\ttry {\n\t\t\tline = this._geomFact.createLineString(pts);\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof IllegalArgumentException) {\n\t\t\t\tif (!this._ignoreInvalidLines) throw ex;\n\t\t\t} else throw ex;\n\t\t} finally {}\n\t\tif (line !== null) this._lines.add(line);\n\t},\n\tsetFixInvalidLines: function (fixInvalidLines) {\n\t\tthis._fixInvalidLines = fixInvalidLines;\n\t},\n\tadd: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet pt = arguments[0];\n\t\t\tthis.add(pt, true);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet pt = arguments[0], allowRepeatedPoints = arguments[1];\n\t\t\tif (this._coordList === null) this._coordList = new CoordinateList();\n\t\t\tthis._coordList.add(pt, allowRepeatedPoints);\n\t\t\tthis._lastPt = pt;\n\t\t}\n\t},\n\tsetIgnoreInvalidLines: function (ignoreInvalidLines) {\n\t\tthis._ignoreInvalidLines = ignoreInvalidLines;\n\t},\n\tvalidCoordinateSequence: function (pts) {\n\t\tif (pts.length >= 2) return pts;\n\t\tvar validPts = [pts[0], pts[0]];\n\t\treturn validPts;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LinearGeometryBuilder;\n\t}\n});\n","import LineString from '../geom/LineString';\nimport CoordinateList from '../geom/CoordinateList';\nimport LinearIterator from './LinearIterator';\nimport extend from '../../../../extend';\nimport Assert from '../util/Assert';\nimport LinearGeometryBuilder from './LinearGeometryBuilder';\nimport MultiLineString from '../geom/MultiLineString';\nexport default function ExtractLineByLocation() {\n\tthis._line = null;\n\tlet line = arguments[0];\n\tthis._line = line;\n}\nextend(ExtractLineByLocation.prototype, {\n\tcomputeLinear: function (start, end) {\n\t\tvar builder = new LinearGeometryBuilder(this._line.getFactory());\n\t\tbuilder.setFixInvalidLines(true);\n\t\tif (!start.isVertex()) builder.add(start.getCoordinate(this._line));\n\t\tfor (var it = new LinearIterator(this._line, start); it.hasNext(); it.next()) {\n\t\t\tif (end.compareLocationValues(it.getComponentIndex(), it.getVertexIndex(), 0.0) < 0) break;\n\t\t\tvar pt = it.getSegmentStart();\n\t\t\tbuilder.add(pt);\n\t\t\tif (it.isEndOfLine()) builder.endLine();\n\t\t}\n\t\tif (!end.isVertex()) builder.add(end.getCoordinate(this._line));\n\t\treturn builder.getGeometry();\n\t},\n\tcomputeLine: function (start, end) {\n\t\tvar coordinates = this._line.getCoordinates();\n\t\tvar newCoordinates = new CoordinateList();\n\t\tvar startSegmentIndex = start.getSegmentIndex();\n\t\tif (start.getSegmentFraction() > 0.0) startSegmentIndex += 1;\n\t\tvar lastSegmentIndex = end.getSegmentIndex();\n\t\tif (end.getSegmentFraction() === 1.0) lastSegmentIndex += 1;\n\t\tif (lastSegmentIndex >= coordinates.length) lastSegmentIndex = coordinates.length - 1;\n\t\tif (!start.isVertex()) newCoordinates.add(start.getCoordinate(this._line));\n\t\tfor (var i = startSegmentIndex; i <= lastSegmentIndex; i++) {\n\t\t\tnewCoordinates.add(coordinates[i]);\n\t\t}\n\t\tif (!end.isVertex()) newCoordinates.add(end.getCoordinate(this._line));\n\t\tif (newCoordinates.size() <= 0) newCoordinates.add(start.getCoordinate(this._line));\n\t\tvar newCoordinateArray = newCoordinates.toCoordinateArray();\n\t\tif (newCoordinateArray.length <= 1) {\n\t\t\tnewCoordinateArray = [newCoordinateArray[0], newCoordinateArray[0]];\n\t\t}\n\t\treturn this._line.getFactory().createLineString(newCoordinateArray);\n\t},\n\textract: function (start, end) {\n\t\tif (end.compareTo(start) < 0) {\n\t\t\treturn this.reverse(this.computeLinear(end, start));\n\t\t}\n\t\treturn this.computeLinear(start, end);\n\t},\n\treverse: function (linear) {\n\t\tif (linear instanceof LineString) return linear.reverse();\n\t\tif (linear instanceof MultiLineString) return linear.reverse();\n\t\tAssert.shouldNeverReachHere(\"non-linear geometry encountered\");\n\t\treturn null;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn ExtractLineByLocation;\n\t}\n});\nExtractLineByLocation.extract = function (line, start, end) {\n\tvar ls = new ExtractLineByLocation(line);\n\treturn ls.extract(start, end);\n};\n","import LineString from '../geom/LineString';\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException';\nimport LinearLocation from './LinearLocation';\nimport extend from '../../../../extend';\nimport LocationIndexOfPoint from './LocationIndexOfPoint';\nimport LocationIndexOfLine from './LocationIndexOfLine';\nimport ExtractLineByLocation from './ExtractLineByLocation';\nimport MultiLineString from '../geom/MultiLineString';\nexport default function LocationIndexedLine() {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n\tthis.checkGeometryType();\n}\nextend(LocationIndexedLine.prototype, {\n\tclampIndex: function (index) {\n\t\tvar loc = index.copy();\n\t\tloc.clamp(this._linearGeom);\n\t\treturn loc;\n\t},\n\tproject: function (pt) {\n\t\treturn LocationIndexOfPoint.indexOf(this._linearGeom, pt);\n\t},\n\tcheckGeometryType: function () {\n\t\tif (!(this._linearGeom instanceof LineString || this._linearGeom instanceof MultiLineString)) throw new IllegalArgumentException(\"Input geometry must be linear\");\n\t},\n\textractPoint: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet index = arguments[0];\n\t\t\treturn index.getCoordinate(this._linearGeom);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], offsetDistance = arguments[1];\n\t\t\tvar indexLow = index.toLowest(this._linearGeom);\n\t\t\treturn indexLow.getSegment(this._linearGeom).pointAlongOffset(indexLow.getSegmentFraction(), offsetDistance);\n\t\t}\n\t},\n\tisValidIndex: function (index) {\n\t\treturn index.isValid(this._linearGeom);\n\t},\n\tgetEndIndex: function () {\n\t\treturn LinearLocation.getEndLocation(this._linearGeom);\n\t},\n\tgetStartIndex: function () {\n\t\treturn new LinearLocation();\n\t},\n\tindexOfAfter: function (pt, minIndex) {\n\t\treturn LocationIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex);\n\t},\n\textractLine: function (startIndex, endIndex) {\n\t\treturn ExtractLineByLocation.extract(this._linearGeom, startIndex, endIndex);\n\t},\n\tindexOf: function (pt) {\n\t\treturn LocationIndexOfPoint.indexOf(this._linearGeom, pt);\n\t},\n\tindicesOf: function (subLine) {\n\t\treturn LocationIndexOfLine.indicesOf(this._linearGeom, subLine);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LocationIndexedLine;\n\t}\n});\n","import LinearIterator from './LinearIterator';\nimport Double from '../../../../java/lang/Double';\nimport extend from '../../../../extend';\nimport LineSegment from '../geom/LineSegment';\nimport Assert from '../util/Assert';\nexport default function LengthIndexOfPoint() {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n}\nextend(LengthIndexOfPoint.prototype, {\n\tindexOf: function (inputPt) {\n\t\treturn this.indexOfFromStart(inputPt, -1.0);\n\t},\n\tindexOfFromStart: function (inputPt, minIndex) {\n\t\tvar minDistance = Double.MAX_VALUE;\n\t\tvar ptMeasure = minIndex;\n\t\tvar segmentStartMeasure = 0.0;\n\t\tvar seg = new LineSegment();\n\t\tvar it = new LinearIterator(this._linearGeom);\n\t\twhile (it.hasNext()) {\n\t\t\tif (!it.isEndOfLine()) {\n\t\t\t\tseg.p0 = it.getSegmentStart();\n\t\t\t\tseg.p1 = it.getSegmentEnd();\n\t\t\t\tvar segDistance = seg.distance(inputPt);\n\t\t\t\tvar segMeasureToPt = this.segmentNearestMeasure(seg, inputPt, segmentStartMeasure);\n\t\t\t\tif (segDistance < minDistance && segMeasureToPt > minIndex) {\n\t\t\t\t\tptMeasure = segMeasureToPt;\n\t\t\t\t\tminDistance = segDistance;\n\t\t\t\t}\n\t\t\t\tsegmentStartMeasure += seg.getLength();\n\t\t\t}\n\t\t\tit.next();\n\t\t}\n\t\treturn ptMeasure;\n\t},\n\tindexOfAfter: function (inputPt, minIndex) {\n\t\tif (minIndex < 0.0) return this.indexOf(inputPt);\n\t\tvar endIndex = this._linearGeom.getLength();\n\t\tif (endIndex < minIndex) return endIndex;\n\t\tvar closestAfter = this.indexOfFromStart(inputPt, minIndex);\n\t\tAssert.isTrue(closestAfter >= minIndex, \"computed index is before specified minimum index\");\n\t\treturn closestAfter;\n\t},\n\tsegmentNearestMeasure: function (seg, inputPt, segmentStartMeasure) {\n\t\tvar projFactor = seg.projectionFactor(inputPt);\n\t\tif (projFactor <= 0.0) return segmentStartMeasure;\n\t\tif (projFactor <= 1.0) return segmentStartMeasure + projFactor * seg.getLength();\n\t\treturn segmentStartMeasure + seg.getLength();\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LengthIndexOfPoint;\n\t}\n});\nLengthIndexOfPoint.indexOf = function (linearGeom, inputPt) {\n\tvar locater = new LengthIndexOfPoint(linearGeom);\n\treturn locater.indexOf(inputPt);\n};\nLengthIndexOfPoint.indexOfAfter = function (linearGeom, inputPt, minIndex) {\n\tvar locater = new LengthIndexOfPoint(linearGeom);\n\treturn locater.indexOfAfter(inputPt, minIndex);\n};\n","import LinearIterator from './LinearIterator';\nimport LinearLocation from './LinearLocation';\nimport extend from '../../../../extend';\nexport default function LengthLocationMap() {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n}\nextend(LengthLocationMap.prototype, {\n\tgetLength: function (loc) {\n\t\tvar totalLength = 0.0;\n\t\tvar it = new LinearIterator(this._linearGeom);\n\t\twhile (it.hasNext()) {\n\t\t\tif (!it.isEndOfLine()) {\n\t\t\t\tvar p0 = it.getSegmentStart();\n\t\t\t\tvar p1 = it.getSegmentEnd();\n\t\t\t\tvar segLen = p1.distance(p0);\n\t\t\t\tif (loc.getComponentIndex() === it.getComponentIndex() && loc.getSegmentIndex() === it.getVertexIndex()) {\n\t\t\t\t\treturn totalLength + segLen * loc.getSegmentFraction();\n\t\t\t\t}\n\t\t\t\ttotalLength += segLen;\n\t\t\t}\n\t\t\tit.next();\n\t\t}\n\t\treturn totalLength;\n\t},\n\tresolveHigher: function (loc) {\n\t\tif (!loc.isEndpoint(this._linearGeom)) return loc;\n\t\tvar compIndex = loc.getComponentIndex();\n\t\tif (compIndex >= this._linearGeom.getNumGeometries() - 1) return loc;\n\t\tdo {\n\t\t\tcompIndex++;\n\t\t} while (compIndex < this._linearGeom.getNumGeometries() - 1 && this._linearGeom.getGeometryN(compIndex).getLength() === 0);\n\t\treturn new LinearLocation(compIndex, 0, 0.0);\n\t},\n\tgetLocation: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet length = arguments[0];\n\t\t\treturn this.getLocation(length, true);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet length = arguments[0], resolveLower = arguments[1];\n\t\t\tvar forwardLength = length;\n\t\t\tif (length < 0.0) {\n\t\t\t\tvar lineLen = this._linearGeom.getLength();\n\t\t\t\tforwardLength = lineLen + length;\n\t\t\t}\n\t\t\tvar loc = this.getLocationForward(forwardLength);\n\t\t\tif (resolveLower) {\n\t\t\t\treturn loc;\n\t\t\t}\n\t\t\treturn this.resolveHigher(loc);\n\t\t}\n\t},\n\tgetLocationForward: function (length) {\n\t\tif (length <= 0.0) return new LinearLocation();\n\t\tvar totalLength = 0.0;\n\t\tvar it = new LinearIterator(this._linearGeom);\n\t\twhile (it.hasNext()) {\n\t\t\tif (it.isEndOfLine()) {\n\t\t\t\tif (totalLength === length) {\n\t\t\t\t\tvar compIndex = it.getComponentIndex();\n\t\t\t\t\tvar segIndex = it.getVertexIndex();\n\t\t\t\t\treturn new LinearLocation(compIndex, segIndex, 0.0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar p0 = it.getSegmentStart();\n\t\t\t\tvar p1 = it.getSegmentEnd();\n\t\t\t\tvar segLen = p1.distance(p0);\n\t\t\t\tif (totalLength + segLen > length) {\n\t\t\t\t\tvar frac = (length - totalLength) / segLen;\n\t\t\t\t\tvar compIndex = it.getComponentIndex();\n\t\t\t\t\tvar segIndex = it.getVertexIndex();\n\t\t\t\t\treturn new LinearLocation(compIndex, segIndex, frac);\n\t\t\t\t}\n\t\t\t\ttotalLength += segLen;\n\t\t\t}\n\t\t\tit.next();\n\t\t}\n\t\treturn LinearLocation.getEndLocation(this._linearGeom);\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LengthLocationMap;\n\t}\n});\nLengthLocationMap.getLength = function (linearGeom, loc) {\n\tvar locater = new LengthLocationMap(linearGeom);\n\treturn locater.getLength(loc);\n};\nLengthLocationMap.getLocation = function () {\n\tif (arguments.length === 2) {\n\t\tlet linearGeom = arguments[0], length = arguments[1];\n\t\tvar locater = new LengthLocationMap(linearGeom);\n\t\treturn locater.getLocation(length);\n\t} else if (arguments.length === 3) {\n\t\tlet linearGeom = arguments[0], length = arguments[1], resolveLower = arguments[2];\n\t\tvar locater = new LengthLocationMap(linearGeom);\n\t\treturn locater.getLocation(length, resolveLower);\n\t}\n};\n","import LocationIndexedLine from './LocationIndexedLine';\nimport extend from '../../../../extend';\nimport LengthIndexOfPoint from './LengthIndexOfPoint';\nimport LocationIndexOfLine from './LocationIndexOfLine';\nimport LengthLocationMap from './LengthLocationMap';\nimport ExtractLineByLocation from './ExtractLineByLocation';\nexport default function LengthIndexedLine() {\n\tthis._linearGeom = null;\n\tlet linearGeom = arguments[0];\n\tthis._linearGeom = linearGeom;\n}\nextend(LengthIndexedLine.prototype, {\n\tclampIndex: function (index) {\n\t\tvar posIndex = this.positiveIndex(index);\n\t\tvar startIndex = this.getStartIndex();\n\t\tif (posIndex < startIndex) return startIndex;\n\t\tvar endIndex = this.getEndIndex();\n\t\tif (posIndex > endIndex) return endIndex;\n\t\treturn posIndex;\n\t},\n\tlocationOf: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet index = arguments[0];\n\t\t\treturn LengthLocationMap.getLocation(this._linearGeom, index);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], resolveLower = arguments[1];\n\t\t\treturn LengthLocationMap.getLocation(this._linearGeom, index, resolveLower);\n\t\t}\n\t},\n\tproject: function (pt) {\n\t\treturn LengthIndexOfPoint.indexOf(this._linearGeom, pt);\n\t},\n\tpositiveIndex: function (index) {\n\t\tif (index >= 0.0) return index;\n\t\treturn this._linearGeom.getLength() + index;\n\t},\n\textractPoint: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet index = arguments[0];\n\t\t\tvar loc = LengthLocationMap.getLocation(this._linearGeom, index);\n\t\t\treturn loc.getCoordinate(this._linearGeom);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet index = arguments[0], offsetDistance = arguments[1];\n\t\t\tvar loc = LengthLocationMap.getLocation(this._linearGeom, index);\n\t\t\tvar locLow = loc.toLowest(this._linearGeom);\n\t\t\treturn locLow.getSegment(this._linearGeom).pointAlongOffset(locLow.getSegmentFraction(), offsetDistance);\n\t\t}\n\t},\n\tisValidIndex: function (index) {\n\t\treturn index >= this.getStartIndex() && index <= this.getEndIndex();\n\t},\n\tgetEndIndex: function () {\n\t\treturn this._linearGeom.getLength();\n\t},\n\tgetStartIndex: function () {\n\t\treturn 0.0;\n\t},\n\tindexOfAfter: function (pt, minIndex) {\n\t\treturn LengthIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex);\n\t},\n\textractLine: function (startIndex, endIndex) {\n\t\tvar lil = new LocationIndexedLine(this._linearGeom);\n\t\tvar startIndex2 = this.clampIndex(startIndex);\n\t\tvar endIndex2 = this.clampIndex(endIndex);\n\t\tvar resolveStartLower = startIndex2 === endIndex2;\n\t\tvar startLoc = this.locationOf(startIndex2, resolveStartLower);\n\t\tvar endLoc = this.locationOf(endIndex2);\n\t\treturn ExtractLineByLocation.extract(this._linearGeom, startLoc, endLoc);\n\t},\n\tindexOf: function (pt) {\n\t\treturn LengthIndexOfPoint.indexOf(this._linearGeom, pt);\n\t},\n\tindicesOf: function (subLine) {\n\t\tvar locIndex = LocationIndexOfLine.indicesOf(this._linearGeom, subLine);\n\t\tvar index = [LengthLocationMap.getLength(this._linearGeom, locIndex[0]), LengthLocationMap.getLength(this._linearGeom, locIndex[1])];\n\t\treturn index;\n\t},\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn LengthIndexedLine;\n\t}\n});\n","import SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp';\nimport extend from '../../../../../extend';\nimport OverlayOp from '../overlay/OverlayOp';\nexport default function UnionOp() {}\nextend(UnionOp.prototype, {\n\tinterfaces_: function () {\n\t\treturn [];\n\t},\n\tgetClass: function () {\n\t\treturn UnionOp;\n\t}\n});\nUnionOp.union = function (g, other) {\n\tif (g.isEmpty() || other.isEmpty()) {\n\t\tif (g.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, g, other, g.getFactory());\n\t\tif (g.isEmpty()) return other.copy();\n\t\tif (other.isEmpty()) return g.copy();\n\t}\n\tg.checkNotGeometryCollection(g);\n\tg.checkNotGeometryCollection(other);\n\treturn SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.UNION);\n};\n","import WKTWriter from './io/WKTWriter';\nimport GeometryCollectionMapper from './geom/util/GeometryCollectionMapper';\nimport IsValidOp from './operation/valid/IsValidOp';\nimport InteriorPointArea from './algorithm/InteriorPointArea';\nimport UnaryUnionOp from './operation/union/UnaryUnionOp';\nimport UnionOp from './operation/union/UnionOp';\nimport SnapIfNeededOverlayOp from './operation/overlay/snap/SnapIfNeededOverlayOp';\nimport InteriorPointLine from './algorithm/InteriorPointLine';\nimport IsSimpleOp from './operation/IsSimpleOp';\nimport BufferOp from './operation/buffer/BufferOp';\nimport ConvexHull from './algorithm/ConvexHull';\nimport Centroid from './algorithm/Centroid';\nimport Comparable from '../../../java/lang/Comparable';\nimport RelateOp from './operation/relate/RelateOp';\nimport InteriorPointPoint from './algorithm/InteriorPointPoint';\nimport Cloneable from '../../../java/lang/Cloneable';\nimport Serializable from '../../../java/io/Serializable';\nimport DistanceOp from './operation/distance/DistanceOp';\nimport Envelope from './geom/Envelope';\nimport RectangleContains from './operation/predicate/RectangleContains';\nimport Assert from './util/Assert';\nimport RectangleIntersects from './operation/predicate/RectangleIntersects';\nimport OverlayOp from './operation/overlay/OverlayOp';\n\nimport Geometry from './geom/Geometry';\nimport GeometryCollection from './geom/GeometryCollection';\n\nimport extend from '../../../extend';\n\nextend(Geometry.prototype, {\n\tequalsTopo: function (g) {\n\t\tif (!this.getEnvelopeInternal().equals(g.getEnvelopeInternal())) return false;\n\t\treturn RelateOp.relate(this, g).isEquals(this.getDimension(), g.getDimension());\n\t},\n\tunion: function () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn UnaryUnionOp.union(this);\n\t\t} else if (arguments.length === 1) {\n\t\t\tlet other = arguments[0];\n\t\t\treturn UnionOp.union(this, other);\n\t\t}\n\t},\n\tisValid: function () {\n\t\treturn IsValidOp.isValid(this);\n\t},\n\tintersection: function (other) {\n\t\tif (this.isEmpty() || other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.INTERSECTION, this, other, this._factory);\n\t\tif (this.isGeometryCollection()) {\n\t\t\tvar g2 = other;\n\t\t\treturn GeometryCollectionMapper.map(this, {\n\t\t\t\tinterfaces_: function () {\n\t\t\t\t\treturn [MapOp];\n\t\t\t\t},\n\t\t\t\tmap: function (g) {\n\t\t\t\t\treturn g.intersection(g2);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis.checkNotGeometryCollection(this);\n\t\tthis.checkNotGeometryCollection(other);\n\t\treturn SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.INTERSECTION);\n\t},\n\tcovers: function (g) {\n\t\treturn RelateOp.covers(this, g);\n\t},\n\tcoveredBy: function (g) {\n\t\treturn RelateOp.covers(g, this);\n\t},\n\ttouches: function (g) {\n\t\treturn RelateOp.touches(this, g);\n\t},\n\tintersects: function (g) {\n\t\treturn RelateOp.intersects(this, g);\n\t},\n\twithin: function (g) {\n\t\treturn RelateOp.contains(g, this);\n\t},\n\toverlaps: function (g) {\n\t\treturn RelateOp.overlaps(this, g);\n\t},\n\tdisjoint: function (g) {\n\t\treturn RelateOp.disjoint(this, g);\n\t},\n\tcrosses: function (g) {\n\t\treturn RelateOp.crosses(this, g);\n\t},\n\tbuffer: function () {\n\t\tif (arguments.length === 1) {\n\t\t\tlet distance = arguments[0];\n\t\t\treturn BufferOp.bufferOp(this, distance);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet distance = arguments[0], quadrantSegments = arguments[1];\n\t\t\treturn BufferOp.bufferOp(this, distance, quadrantSegments);\n\t\t} else if (arguments.length === 3) {\n\t\t\tlet distance = arguments[0], quadrantSegments = arguments[1], endCapStyle = arguments[2];\n\t\t\treturn BufferOp.bufferOp(this, distance, quadrantSegments, endCapStyle);\n\t\t}\n\t},\n\tconvexHull: function () {\n\t\treturn new ConvexHull(this).getConvexHull();\n\t},\n\trelate: function (...args) {\n\t\tif (arguments.length === 1) {\n\t\t\tlet geometry = arguments[0];\n\t\t\treturn RelateOp.relate(this, geometry);\n\t\t} else if (arguments.length === 2) {\n\t\t\tlet geometry = arguments[0], intersectionPattern = arguments[1];\n\t\t\treturn RelateOp.relate(this, geometry).matches(intersectionPattern);\n\t\t}\n\t},\n\tgetCentroid: function () {\n\t\tif (this.isEmpty()) return this._factory.createPoint();\n\t\tvar centPt = Centroid.getCentroid(this);\n\t\treturn this.createPointFromInternalCoord(centPt, this);\n\t},\n\tgetInteriorPoint: function () {\n\t\tif (this.isEmpty()) return this._factory.createPoint();\n\t\tvar interiorPt = null;\n\t\tvar dim = this.getDimension();\n\t\tif (dim === 0) {\n\t\t\tvar intPt = new InteriorPointPoint(this);\n\t\t\tinteriorPt = intPt.getInteriorPoint();\n\t\t} else if (dim === 1) {\n\t\t\tvar intPt = new InteriorPointLine(this);\n\t\t\tinteriorPt = intPt.getInteriorPoint();\n\t\t} else {\n\t\t\tvar intPt = new InteriorPointArea(this);\n\t\t\tinteriorPt = intPt.getInteriorPoint();\n\t\t}\n\t\treturn this.createPointFromInternalCoord(interiorPt, this);\n\t},\n\tsymDifference: function (other) {\n\t\tif (this.isEmpty() || other.isEmpty()) {\n\t\t\tif (this.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.SYMDIFFERENCE, this, other, this._factory);\n\t\t\tif (this.isEmpty()) return other.copy();\n\t\t\tif (other.isEmpty()) return this.copy();\n\t\t}\n\t\tthis.checkNotGeometryCollection(this);\n\t\tthis.checkNotGeometryCollection(other);\n\t\treturn SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.SYMDIFFERENCE);\n\t},\n\tcreatePointFromInternalCoord: function (coord, exemplar) {\n\t\texemplar.getPrecisionModel().makePrecise(coord);\n\t\treturn exemplar.getFactory().createPoint(coord);\n\t},\n\ttoText: function () {\n\t\tvar writer = new WKTWriter();\n\t\treturn writer.write(this);\n\t},\n\ttoString: function() {\n\t\tthis.toText();\n\t},\n\tcontains: function (g) {\n\t\treturn RelateOp.contains(this, g);\n\t},\n\tdifference: function (other) {\n\t\tif (this.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.DIFFERENCE, this, other, this._factory);\n\t\tif (other.isEmpty()) return this.copy();\n\t\tthis.checkNotGeometryCollection(this);\n\t\tthis.checkNotGeometryCollection(other);\n\t\treturn SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.DIFFERENCE);\n\t},\n\tisSimple: function () {\n\t\tvar op = new IsSimpleOp(this);\n\t\treturn op.isSimple();\n\t},\n\tisWithinDistance: function (geom, distance) {\n\t\tvar envDist = this.getEnvelopeInternal().distance(geom.getEnvelopeInternal());\n\t\tif (envDist > distance) return false;\n\t\treturn DistanceOp.isWithinDistance(this, geom, distance);\n\t},\n\tdistance: function (g) {\n\t\treturn DistanceOp.distance(this, g);\n\t},\n\tisEquivalentClass: function (other) {\n\t\treturn this.getClass() === other.getClass();\n\t}\n})\n","import './Array'\nimport './Number'\nimport './Math'\n\nimport * as geom from './org/locationtech/jts/geom'\nimport * as algorithm from './org/locationtech/jts/algorithm'\nimport * as densify from './org/locationtech/jts/densify'\nimport * as dissolve from './org/locationtech/jts/dissolve'\nimport * as geomgraph from './org/locationtech/jts/geomgraph'\nimport * as index from './org/locationtech/jts/index'\nimport * as io from './org/locationtech/jts/io'\nimport * as noding from './org/locationtech/jts/noding'\nimport * as operation from './org/locationtech/jts/operation'\nimport * as precision from './org/locationtech/jts/precision'\nimport * as simplify from './org/locationtech/jts/simplify'\nimport * as triangulate from './org/locationtech/jts/triangulate'\nimport * as linearref from './org/locationtech/jts/linearref'\n\nimport './org/locationtech/jts/monkey'\n\nconst version = 'npm_package_version (git_hash)'\nexport {\n version,\n algorithm,\n densify,\n dissolve,\n geom,\n geomgraph,\n index,\n io,\n noding,\n operation,\n precision,\n simplify,\n triangulate,\n linearref\n}\n"],"names":["Array","prototype","Object","defineProperty","configurable","value","fill","undefined","TypeError","arrayLike","length","Math","max","min","relativeStart","arguments","parseInt","Number","relativeEnd","writable","isFinite","isInteger","val","floor","parseFloat","isNaN","trunc","x","ceil","log2","log","LOG2E","target","source","key","hasOwnProperty","NumberUtil","extend","interfaces_","getClass","equalsWithTolerance","x1","x2","tolerance","abs","IllegalArgumentException","Long","high","low","toBinaryString","i","result","mask","Double","n","isInfinite","MAX_VALUE","Float64Array","Int32Array","EXP_BIT_MASK","SIGNIF_BIT_MASK","f64buf","i32buf","buffer","doubleToLongBits","longBitsToDouble","bits","BIAS","pow","MAX_REL_BITS_INTEGER","y","f","skip","sign","exp","NEGATIVE_INFINITY","Infinity","fract","NaN","Comparable","Clonable","Comparator","Serializable","RuntimeException","message","name","stack","Error","call","create","constructor","c","p","AssertionFailedException","inherits","Assert","shouldNeverReachHere","isTrue","assertion","equals","expectedValue","actualValue","Coordinate","z","NULL_ORDINATE","setOrdinate","ordinateIndex","X","Y","Z","equals2D","other","getOrdinate","equals3D","equalInZ","compareTo","o","clone","coord","e","CloneNotSupportedException","copy","toString","distance3D","dx","dy","dz","sqrt","distance","hashCode","setCoordinate","Cloneable","DimensionalComparator","_dimensionsToTest","dimensionsToTest","compare","o1","o2","c1","c2","compX","compY","compZ","a","b","serialVersionUID","indexOf","Iterator","hasNext","next","remove","Collection","add","addAll","isEmpty","iterator","size","toArray","IndexOutOfBoundsException","List","get","set","NoSuchElementException","OperationNotSupported","ArrayList","array_","ensureCapacity","push","splice","clear","index","element","oldElement","Iterator_","array","len","found","removeAll","arrayList","arrayList_","position_","CoordinateList","apply","allowRepeated","getCoordinate","hasInterface","coll","isChanged","toCoordinateArray","coordArrayType","last","obj","direction","prev","start","end","inc","closeRing","Envelope","_minx","_maxx","_miny","_maxy","init","env","p1","p2","y1","y2","getArea","getWidth","getHeight","otherEnvelope","isNull","getMaxX","getMaxY","getMinX","getMinY","intersection","intersects","intMinX","intMinY","intMaxX","intMaxY","covers","envminx","envmaxx","envminy","envmaxy","expandToInclude","minExtent","w","h","translate","transX","transY","setToNull","maxExtent","expandBy","deltaX","deltaY","contains","centre","q","q1","q2","minq","maxq","minp","maxp","Exception","NotRepresentableException","StringBuffer","str","append","setCharAt","substr","Integer","intValue","Character","isWhitespace","toUpperCase","DD","_hi","_lo","dd","parse","hi","lo","le","extractSignificantDigits","insertDecimalPoint","magnitude","mag","scale","TEN","divide","gt","lt","ONE","multiply","decimalPointPos","buf","numDigits","MAX_PRINT_DIGITS","digit","rebiasBy10","digitChar","subtract","valueOf","selfAdd","continueExtractingDigits","remMag","sqr","doubleValue","negate","isZero","selfSubtract","getSpecialNumberString","selfDivide","yhi","ylo","hc","tc","hy","ty","C","U","u","SPLIT","dump","zhi","zlo","createNaN","ge","r","s","selfMultiply","reciprocal","fhi","flo","rint","plus5","setValue","isNegative","ax","axdd","diffSq","d2","H","S","T","t","hx","tx","selfSqr","ex","toStandardNotation","toSciNotation","specialStr","sigDigits","num","charAt","stringOfChar","numZeroes","zeroes","SCI_NOT_ZERO","digits","expStr","SCI_NOT_EXPONENT_CHAR","IllegalStateException","trailingDigits","substring","digitsWithDecimal","isPositive","signum","strlen","signCh","numBeforeDec","ch","isDigit","d","NumberFormatException","val2","numDecPlaces","xAbs","xLog10","xMag","xApprox","PI","TWO_PI","PI_2","E","EPS","CGAlgorithmsDD","orientationIndex","orientationIndexFilter","dx1","dy1","dx2","dy2","signOfDet2x2","det","denom1","denom2","denom","numx1","numx2","numx","fracP","numy1","numy2","numy","fracQ","pa","pb","pc","detsum","detleft","detright","errbound","DP_SAFE_EPSILON","Orientation","isCCW","ring","nPts","hiPt","hiIndex","iPrev","iNext","disc","CLOCKWISE","RIGHT","COUNTERCLOCKWISE","LEFT","COLLINEAR","STRAIGHT","System","arraycopy","src","srcPos","dest","destPos","getProperty","HCoordinate","_x","_y","_w","px","py","pw","qx","qy","qw","getY","getX","xInt","yInt","MathUtil","log10","ln","LOG_10","v1","v2","v3","v4","clamp","wrap","average","Distance","segmentToSegment","A","B","D","pointToSegment","noIntersection","r_num","s_num","len2","pointToLinePerpendicular","pointToSegmentString","line","minDistance","dist","CoordinateSequence","getCoordinateCopy","getDimension","expandEnvelope","M","CoordinateSequenceFactory","GeometryComponentFilter","filter","geom","Geometry","_envelope","_factory","_SRID","_userData","factory","getSRID","isGeometryCollection","getTypeCode","TYPECODE_GEOMETRYCOLLECTION","getFactory","getGeometryN","isRectangle","g","equalsTopo","equalsExact","geometryChanged","geometryChangedFilter","geometryChangedAction","equalsNorm","norm","getLength","getNumGeometries","compareToSameClass","comp","getUserData","getEnvelope","toGeometry","getEnvelopeInternal","checkNotGeometryCollection","equal","normalize","getPrecisionModel","computeEnvelopeInternal","setSRID","SRID","setUserData","userData","j","aElement","bElement","comparison","isGeometryCollectionOrDerived","TYPECODE_MULTIPOINT","TYPECODE_MULTILINESTRING","TYPECODE_MULTIPOLYGON","hasNonEmptyElements","geometries","hasNullElements","TYPECODE_POINT","TYPECODE_LINESTRING","TYPECODE_LINEARRING","TYPECODE_POLYGON","TYPENAME_POINT","TYPENAME_MULTIPOINT","TYPENAME_LINESTRING","TYPENAME_LINEARRING","TYPENAME_MULTILINESTRING","TYPENAME_POLYGON","TYPENAME_MULTIPOLYGON","TYPENAME_GEOMETRYCOLLECTION","CoordinateFilter","BoundaryNodeRule","isInBoundary","boundaryCount","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","CoordinateArrays","isRing","pts","ptNotInList","testPts","testPt","scroll","coordinates","firstCoordinate","newCoordinates","coord1","coord2","coordinateComparator","coordList","hasRepeatedPoints","removeRepeatedPoints","reverse","mid","tmp","removeNull","nonNull","newCoord","copyDeep","srcStart","destStart","isEqualReversed","pts1","pts2","envelope","atLeastNCoordinatesOrNothing","coordinate","increasingDirection","minCoordinate","minCoord","extract","npts","extractPts","iPts","ForwardComparator","BidirectionalComparator","forwardComp","isEqualRev","OLDcompare","dir1","dir2","i1","i2","comparePt","Map","put","values","entrySet","SortedMap","Set","HashSet","javascript","util","hashSet","hashSet_","BLACK","RED","colorOf","color","parentOf","parent","setColor","leftOf","left","rightOf","right","TreeMap","root_","size_","cmp","getValue","getKey","oldValue","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","l","containsKey","Lineal","SortedSet","TreeSet","treeSet","treeSet_","Arrays","sort","comparator","slice","concat","asList","Dimension","toDimensionSymbol","dimensionValue","FALSE","SYM_FALSE","TRUE","SYM_TRUE","DONTCARE","SYM_DONTCARE","P","SYM_P","L","SYM_L","SYM_A","toDimensionValue","dimensionSymbol","GeometryFilter","CoordinateSequenceFilter","seq","isDone","isGeometryChanged","GeometryCollection","_geometries","getCoordinates","getNumPoints","k","childCoordinates","area","isEquivalentClass","otherCollection","getBoundaryDimension","dimension","sum","numPoints","revGeoms","createGeometryCollection","theseElements","otherElements","gc","n1","n2","thisGeom","otherGeom","holeComp","getBoundary","getGeometryType","MultiLineString","lineStrings","isClosed","nLines","revLines","createMultiLineString","BoundaryOp","_geom","_geomFact","_bnRule","_endpointMap","bnRule","boundaryMultiLineString","mLine","getEmptyMultiPoint","bdyPts","computeBoundaryCoordinates","createPoint","createMultiPointFromCoords","LineString","boundaryLineString","closedEndpointOnBoundary","getStartPoint","createMultiPoint","getEndPoint","addEndpoint","getCoordinateN","it","entry","counter","valence","count","pt","Counter","bop","Length","ofLine","x0","y0","PrintStream","StringReader","DecimalFormat","ByteArrayOutputStream","IOException","LineNumberReader","StringUtil","chars","String","getStackTrace","os","ps","printStackTrace","depth","stackTrace","stringReader","lineNumberReader","readLine","NEWLINE","split","separator","separatorlen","tokenList","tmpString","pos","token","res","SIMPLE_ORDINATE_FORMAT","format","spaces","StringBuilder","CoordinateSequences","copyCoord","minDim","dim","isEqual","cs1","cs2","cs1Size","cs2Size","fact","newseq","swap","cs","builder","ensureValidRing","createClosedRing","_points","points","isSimple","otherLineString","getPointN","revLine","createLineString","getCoordinateSequence","getCoordinateSequenceFactory","isCoordinate","Puntal","Point","_coordinates","point","Area","ofRing","ofRingSigned","p0","Polygonal","Polygon","_shell","_holes","shell","holes","createLinearRing","shellCoordinates","getNumInteriorRing","prevX","prevY","xChanged","yChanged","otherPolygon","thisShell","otherPolygonShell","clockwise","uniqueCoordinates","poly","convexHull","getExteriorRing","otherShell","shellComp","nHole1","nHole2","thisHole","getInteriorRingN","otherHole","rings","shellCopy","holeCopies","MultiPoint","isValid","LinearRing","GeometryFactory","validateConstruction","rev","MINIMUM_VALID_SIZE","MultiPolygon","polygons","createMultiPolygon","allRings","polygon","allRingsArray","GeometryEditor","_isUserDataCopied","setCopyUserData","isUserDataCopied","edit","geometry","operation","editInternal","editGeometryCollection","editPolygon","getName","collection","collectionForType","newPolygon","createPolygon","hole","GeometryEditorOperation","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","CoordinateArraySequence","_dimension","coordSeq","cloneCoordinates","strBuilder","CoordinateArraySequenceFactory","readResolve","instance","instanceObject","is","createCollection","sharedDelete","has","mapHas","sharedGet","sharedSet","keys","sharedKeys","sharedValues","entries","mapEntries","forEach","sharedForEach","sharedClear","proto","objectOnly","_keys","_values","_itp","sharedSize","list","sharedIterator","itp","array2","done","v","callback","context","MapImpl","MapPolyfill","HashMap","map_","MapInterface","PrecisionModel","_modelType","_scale","FLOATING","Type","modelType","FIXED","setScale","pm","otherPrecisionModel","getMaximumSignificantDigits","otherSigDigits","getScale","isFloating","FLOATING_SINGLE","getType","description","makePrecise","floatSingleVal","round","maxSigDigits","mostPrecise","pm1","pm2","_name","nameToTypeMap","maximumPreciseValue","_precisionModel","_coordinateSequenceFactory","coordinateSequenceFactory","precisionModel","getDefaultCoordinateSequenceFactory","buildGeometry","geomList","geomClass","isHeterogeneous","hasGeometryCollection","partClass","toGeometryArray","geom0","isCollection","toPolygonArray","toLineStringArray","toPointArray","createGeometry","editor","ptSeq","toMultiPolygonArray","multiPolygons","multiPolygonArray","geometryArray","toMultiLineStringArray","multiLineStrings","multiLineStringArray","lineStringArray","toMultiPointArray","multiPoints","multiPointArray","toLinearRingArray","linearRings","linearRingArray","pointArray","polygonArray","createPointFromInternalCoord","exemplar","regExes","WKTParser","geometryFactory","read","wkt","type","replace","matches","typeStr","exec","search","emptyTypeStr","toLowerCase","write","extractGeometry","wktType","data","multipoint","join","linestring","linearring","multilinestring","multipolygon","geometrycollection","coords","trim","components","trimParens","lines","parenComma","doubleParenComma","wktArray","WKTWriter","parser","toLineString","LineIntersector","_result","_inputLines","map","_intPt","_intLineIndex","_isProper","_pa","_pb","getIndexAlongSegment","segmentIndex","intIndex","computeIntLineIndex","getTopologySummary","catBuilder","isEndPoint","isCollinear","computeIntersection","p3","p4","computeIntersect","getIntersectionNum","dist0","getEdgeDistance","dist1","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","inputLineIndex","getIntersection","NO_INTERSECTION","computeEdgeDistance","COLLINEAR_INTERSECTION","getEndpoint","ptIndex","isIntersection","getIntersectionAlongSegment","pdx","pdy","nonRobustComputeEdgeDistance","DONT_INTERSECT","DO_INTERSECT","POINT_INTERSECTION","RobustLineIntersector","isInSegmentEnvelopes","intPt","env0","env1","normalizeToMinimum","n3","n4","normPt","smallestInAbsValue","safeHCoordinateIntersection","nearestEndpoint","intersectionWithNormalization","x3","x4","xabs","checkDD","intPtDD","isIn","out","println","normalizeToEnvCentre","computeCollinearIntersection","p1q1p2","p1q2p2","q1p1q2","q1p2q2","n00","n01","n10","n11","minX0","minY0","maxX0","maxY0","minX1","minY1","maxX1","maxY1","intMidX","intMidY","Pq1","Pq2","Qp1","Qp2","collinear","nearestPt","minDist","LineSegment","ls","minX","seg","orient0","orient1","geomFactory","isVertical","li","project","projectionFactor","pf0","pf1","newp0","newp1","angle","atan2","distancePerpendicular","minY","midPoint","closestPoints","closestPt","close00","closestPoint","close01","close10","close11","factor","maxX","comp0","temp","lineIntersection","maxY","pointAlongOffset","segmentLengthFraction","offsetDistance","segx","segy","ux","uy","offsetx","offsety","setCoordinates","segmentFraction","inputPt","segFrac","isHorizontal","pointAlong","bits0","java","lang","hash0","bits1","hash1","Location","toLocationSymbol","locationValue","EXTERIOR","BOUNDARY","INTERIOR","NONE","IntersectionMatrix","_matrix","setAll","elements","isIntersects","isDisjoint","isCovers","hasPointInCommon","isCoveredBy","dimensionSymbols","row","col","column","isContains","setAtLeast","minimumDimensionSymbols","minimumDimensionValue","setAtLeastIfValid","isWithin","isTouches","dimensionOfGeometryA","dimensionOfGeometryB","isOverlaps","isEquals","ai","bi","transpose","requiredDimensionSymbols","im","isCrosses","actualDimensionValue","requiredDimensionSymbol","actualDimensionSymbols","m","Angle","toDegrees","radians","PI_TIMES_2","isAcute","dx0","dy0","dotprod","isObtuse","interiorAngle","anglePrev","angleNext","normalizePositive","angleBetween","tip1","tail","tip2","a1","a2","diff","ang1","ang2","delAngle","toRadians","angleDegrees","getTurn","crossproduct","sin","angleBetweenOriented","angDel","PI_OVER_2","PI_OVER_4","Triangle","signedArea","interpolateZ","longestSideLength","circumcentre","area3D","centroid","inCentre","m00","m01","m10","m11","v0","lenAB","lenBC","lenCA","maxLen","cx","cy","ay","bx","by","ccx","ccy","perpendicularBisector","l1","l2","angleBisector","len0","frac","splitPt","uz","vx","vy","vz","crossx","crossy","crossz","absSq","len1","circum","inCentreX","inCentreY","PointPairDistance","_pt","_distance","_isNull","setMinimum","ptDist","initialize","getDistance","setMaximum","DistanceToPoint","computeDistance","tempSegment","segment","DiscreteHausdorffDistance","_g0","_g1","_ptDist","_densifyFrac","g0","g1","setDensifyFraction","densifyFrac","compute","computeOrientedDistance","discreteGeom","distFilter","MaxPointDistanceFilter","getMaxPointDistance","fracFilter","MaxDensifiedByFractionDistanceFilter","orientedDistance","_maxPtDist","_minPtDist","_euclideanDist","_numSubSegs","fraction","delx","dely","ItemVisitor","visitItem","item","PointOnGeometryLocator","locate","IntervalRTreeNode","_min","POSITIVE_INFINITY","_max","getMin","queryMin","queryMax","getMax","NodeComparator","mid1","mid2","IntervalRTreeLeafNode","_item","query","visitor","Collections","reverseOrder","alen","singletonList","IntervalRTreeBranchNode","_node1","_node2","buildExtent","SortedPackedIntervalRTree","_leaves","_root","_level","buildTree","buildLevel","insert","buildRoot","printNode","node","LinearComponentExtracter","_lines","_isForcedToLineString","isForcedToLineString","setForceToLineString","getGeometry","getLines","forceToLineString","geoms","ArrayListVisitor","_items","getItems","RayCrossingCounter","_p","_crossingCount","_isPointOnSegment","countSegment","minx","maxx","orient","isPointInPolygon","getLocation","isOnSegment","locatePointInRing","IndexedPointInAreaLocator","_index","IntervalIndexedGeometry","rcc","SegmentVisitor","_counter","addLine","PointLocation","isOnLine","lineIntersector","locateInRing","isInRing","GeometryCollectionIterator","_parent","_atStart","_subcollectionIterator","isAtomic","UnsupportedOperationException","SimplePointInAreaLocator","locatePointInPolygon","shellLoc","holeLoc","containsPointInPolygon","locateInGeometry","geomi","g2","loc","SimilarityMeasure","measure","AreaSimilarityMeasure","areaInt","areaUnion","union","HausdorffSimilarityMeasure","DENSIFY_FRACTION","envSize","diagonalSize","width","hgt","SimilarityMeasureCombiner","combine","measure1","measure2","Centroid","_areaBasePt","_triangleCent3","_areasum2","_cg3","_lineCentSum","_totalLength","_ptCount","_ptCentSum","setAreaBasePoint","basePt","addPoint","addLineSegments","lineLen","segmentLen","midx","midy","addHole","isPositiveArea","addTriangle","getCentroid","cent","addShell","centroid3","area2","CGAlgorithms","distanceLineLine","distancePointLine","isPointInRing","computeLength","computeOrientation","distancePointLinePerpendicular","EmptyStackException","Stack","pop","peek","empty","UniqueCoordinateArrayFilter","filterCoordinates","ConvexHull","_geomFactory","_inputPts","extractCoordinates","preSort","RadialComparator","computeOctRing","inputPts","octPts","computeOctPts","lineOrPolygon","cleanRing","linearRing","original","cleanedRing","previousDistinctCoordinate","currentCoordinate","nextCoordinate","isBetween","cleanedRingCoordinates","c3","reduce","polyPts","reducedSet","reducedPts","padArray3","getConvexHull","sortedPts","cHS","grahamScan","cH","pad","_origin","origin","polarCompare","dxp","dyp","dxq","dyq","op","oq","InteriorPointArea","_interiorPoint","_maxWidth","addPolygon","bisector","horizontalBisector","intersections","widestIntersection","widestGeometry","getInteriorPoint","bisectY","SafeBisectorFinder","getBisectorY","avg","_poly","_centreY","_hiY","_loY","updateInterval","process","finder","InteriorPointLine","_centroid","_minDistance","addInterior","addEndpoints","InteriorPointPoint","MonotoneChainSelectAction","selectedSegment","select","mc","startIndex","getLineSegment","NodeBase","_subnode","hasChildren","isPrunable","hasItems","addAllItems","items","subSize","addAllItemsFromOverlapping","interval","resultItems","isSearchMatch","itemInterval","maxSubDepth","sqd","nodeSize","getSubnodeIndex","subnodeIndex","Interval","overlaps","DoubleBits","exponent","CVTFWD","powerOf2","NumW","Qty","Sign","Expo","Mant","Bin","Inf","ExW","Key","_interval","computeKey","getInterval","getLevel","computeLevel","computeInterval","level","getPoint","Node","_centre","find","searchInterval","childNode","createSubnode","getSubnode","getNode","subInt","createNode","createExpanded","addInterval","expandInt","largerNode","IntervalSize","isZeroWidth","maxAbs","scaledInterval","MIN_BINARY_EXPONENT","Root","insertContained","tree","isZeroArea","Bintree","_minExtent","collectStats","insertInterval","ensureExtent","foundItems","del","MonotoneChain","_pts","_start","_end","_env","_context","_id","computeSelect","searchEnv","start0","end0","mcs","computeOverlaps","mco","start1","end1","overlap","mid0","setId","id","getEndIndex","getStartIndex","getContext","getId","Quadrant","isNorthern","quad","NE","NW","isOpposite","quad1","quad2","commonHalfPlane","isInHalfPlane","halfPlane","SE","SW","quadrant","MonotoneChainBuilder","getChainStartIndices","startIndexList","findChainEnd","toIntArray","safeStart","chainQuad","getChains","mcList","RobustDeterminant","PointInRing","isInside","MCPointInRing","_ring","_tree","_crossings","buildIndex","testLineSegment","mcEnv","testMonotoneChain","rayEnv","mcSelecter","segs","MCSelecter","mcp","MinimumBoundingCircle","_input","_extremalPts","_radius","getRadius","getDiameter","getExtremalPoints","computeCirclePoints","hullPts","lowestPoint","Q","pointWitMinAngleWithX","R","pointWithMinAngleWithSegment","computeCentre","getFarthestPoints","getCircle","centrePoint","getCentre","minSin","minAngPt","minAng","ang","MinimumDiameter","_inputGeom","_isConvex","_convexHullPts","_minBaseSeg","_minWidthPt","_minPtIndex","_minWidth","inputGeom","isConvex","getWidthCoordinate","computeMinimumDiameter","getSupportingSegment","computeWidthConvex","convexGeom","computeConvexRingMinDiameter","currMaxIndex","findMaxPerpDistance","maxPerpDistance","nextPerpDistance","maxIndex","nextIndex","getMinimumRectangle","minPara","maxPara","minPerp","maxPerp","paraC","computeC","perpC","maxPerpLine","computeSegmentForLine","minPerpLine","maxParaLine","minParaLine","getMinimumDiameter","GeometryTransformer","_pruneEmptyGeometry","_preserveGeometryCollectionType","_preserveCollections","_preserveType","transformPoint","transformCoordinates","transformPolygon","isAllValidLinearRings","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transGeomList","transformGeom","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","transform","seqSize","Densifier","_distanceTolerance","getResultGeometry","DensifyTransformer","setDistanceTolerance","distanceTolerance","densifyPoints","precModel","densifiedSegCount","densifiedSegLen","segFract","densify","densifier","roughGeom","createValidArea","newPts","roughAreaGeom","HalfEdge","_orig","_sym","_next","orig","oNext","insertAfter","ecmp","ePrev","save","setNext","sym","degree","compareAngularDirection","quadrant2","prevNode","setSym","e0","e1","MarkHalfEdge","_isMarked","mark","setMark","isMarked","setMarkBoth","markBoth","EdgeGraph","_vertexMap","eAdj","eAdjDest","createEdge","addEdge","isValidEdge","eSame","getVertexEdges","findEdge","DissolveHalfEdge","_isStart","setStart","isStart","DissolveEdgeGraph","LineDissolver","_graph","_nodeEdgeStack","_ringStartEdge","updateRingStartEdge","getResult","computeResult","eNode","stackEdges","buildLines","buildRing","eStartRing","eNext","buildLine","eStart","edges","component","lineString","doneStart","dissolve","PointLocator","_boundaryRule","_isIn","_numBoundaries","boundaryRule","locateInPolygonRing","updateLocationInfo","computeLocation","locateOnPoint","locateOnLineString","locateInPolygon","ml","mpoly","ptCoord","Position","opposite","position","ON","mce","chainIndex","computeIntersections","si","computeIntersectsForChain","SweepLineEvent","_label","_xValue","_eventType","_insertEvent","_deleteEventIndex","_obj","insertEvent","DELETE","label","INSERT","isDelete","setDeleteEventIndex","deleteEventIndex","getObject","pe","getInsertEvent","isInsert","isSameLabel","ev","getDeleteEventIndex","EdgeSetIntersector","SegmentIntersector","_hasIntersection","_hasProper","_hasProperInterior","_properIntersectionPoint","_li","_includeProper","_recordIsolated","_isSelfIntersection","_numIntersections","numTests","_bdyNodes","_isDone","_isDoneWhenProperInt","includeProper","recordIsolated","isTrivialIntersection","segIndex0","segIndex1","isAdjacentSegments","maxSegIndex","getProperIntersectionPoint","setIsDoneIfProperInt","isDoneWhenProperInt","hasProperInteriorIntersection","isBoundaryPointInternal","bdyNodes","hasProperIntersection","isBoundaryPoint","setBoundaryNodes","bdyNodes0","bdyNodes1","addIntersections","p00","p01","p10","p11","setIsolated","SimpleMCSweepLineIntersector","events","nOverlaps","prepareEvents","processOverlaps","edges0","edges1","addEdges","testAllSegments","edge","edgeSet","getMonotoneChainEdge","getStartIndexes","ev0","mc0","ev1","mc1","TopologyLocation","location","on","gl","setAllLocations","locValue","setAllLocationsIfNull","isLine","merge","newLoc","getLocations","flip","setLocations","posIndex","isArea","isAnyNull","setLocation","locIndex","isEqualOnSide","allPositionsEqual","Label","elt","onLoc","lbl","geomIndex","leftLoc","rightLoc","getGeometryCount","side","toLine","toLineLabel","lineLabel","EdgeIntersection","getSegmentIndex","print","maxSegmentIndex","EdgeIntersectionList","_nodeMap","ei","addSplitEdges","edgeList","eiPrev","newEdge","createSplitEdge","ei0","ei1","lastSegStartPt","useIntPt1","ipt","Edge","eiNew","MonotoneChainIndexer","MonotoneChainEdge","mcb","chainIndex0","chainIndex1","computeIntersects","Depth","_depth","NULL_VALUE","getDepth","setDepth","depthValue","minDepth","newValue","getDelta","depthAtLocation","GraphComponent","_isInResult","_isCovered","_isCoveredSet","_isVisited","setVisited","isVisited","setInResult","isInResult","isCovered","isCoveredSet","setLabel","getLabel","setCovered","updateIM","computeIM","eiList","_mce","_isIsolated","_depthDelta","getCollapsedEdge","newe","isIsolated","setName","isEqualForward","isEqualReverse","iRev","isCollapsed","getMaximumSegmentIndex","getDepthDelta","printReverse","addIntersection","normalizedSegmentIndex","nextSegIndex","nextPt","isPointwiseEqual","setDepthDelta","depthDelta","getEdgeIntersectionList","_coord","_edges","isIncidentEdgeInResult","getEdges","de","getEdge","computeMergedLocation","label2","eltIndex","nLoc","argIndex","onLocation","mergeLabel","thisLoc","setNode","setLabelBoundary","NodeMap","nodeMap","nodeFact","addNode","getBoundaryNodes","EdgeEnd","_edge","_node","_p0","_p1","_dx","_dy","_quadrant","compareDirection","getDy","className","lastDotPos","lastIndexOf","getDirectedCoordinate","getDx","getQuadrant","computeLabel","boundaryNodeRule","TopologyException","msg","msgWithCoord","DirectedEdge","_isForward","_nextMin","_edgeRing","_minEdgeRing","isForward","computeDirectedLabel","getNextMin","getNext","depthVal","isInteriorAreaEdge","setNextMin","nextMin","setMinEdgeRing","minEdgeRing","isLineEdge","isExteriorIfArea0","isExteriorIfArea1","setEdgeRing","edgeRing","getMinEdgeRing","getSym","printEdge","setVisitedEdge","setEdgeDepths","directionFactor","oppositePos","delta","oppositeDepth","getEdgeRing","depthFactor","currLocation","nextLocation","NodeFactory","PlanarGraph","_nodes","_edgeEndList","printEdges","getNodeIterator","linkResultDirectedEdges","nodeit","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","ep0","ep1","getEdgeEnds","debugPrint","getEdgeIterator","findEdgeInSameDirection","eCoord","insertEdge","findEdgeEnd","ee","edgesToAdd","de1","de2","getNodes","nodes","GeometryGraph","_parentGeom","_lineEdgeMap","_boundaryNodeRule","_useBoundaryDeterminationRule","_argIndex","_boundaryNodes","_hasTooFewPoints","_invalidPoint","_areaPtLocator","_ptLocator","parentGeom","insertBoundaryPoint","determineBoundary","computeSelfNodes","computeRingSelfNodes","isDoneIfProperInt","esi","createEdgeSetIntersector","isRings","computeAllSegments","addSelfIntersectionNodes","computeSplitEdges","edgelist","computeEdgeIntersections","getBoundaryNodeRule","hasTooFewPoints","insertPoint","addPolygonRing","addLineString","getInvalidPoint","getBoundaryPoints","addSelfIntersectionNode","lr","cwLeft","cwRight","eLoc","eiIt","addCollection","KdNodeVisitor","visit","KdNode","_data","_left","_right","_count","isRepeated","getRight","setLeft","getData","getCount","getLeft","increment","setRight","KdTree","_numberOfNodes","_tolerance","matchNode","findBestMatchNode","insertExact","queryEnv","queryNode","currentNode","odd","discriminant","searchLeft","searchRight","BestMatchVisitor","queryEnvelope","leafNode","isOddLevel","isLessThan","isInTolerance","toCoordinates","kdnodes","includeRepeated","_matchNode","_matchDist","update","getNodeCount","visitItems","itemEnv","centrex","centrey","computeQuadLevel","quadSize","dMax","_centrex","_centrey","miny","maxy","sqEnv","insertNode","addEnv","expandEnv","isZeroX","isZeroY","SpatialIndex","Quadtree","insertEnv","queryAll","posEnv","delX","delY","Boundable","getBounds","ItemBoundable","_bounds","bounds","getItem","PriorityQueue","_size","poll","minItem","reorder","child","AbstractNode","_childBoundables","getChildBoundables","addChildBoundable","childBoundable","computeBounds","BoundablePair","_boundable1","_boundable2","_itemDistance","boundable1","boundable2","itemDistance","expandToQueue","priQ","isComp1","isComposite","isComp2","expand","isLeaves","nd","bndComposite","bndOther","children","bp","getBoundable","AbstractSTRtree","_built","_itemBoundables","_nodeCapacity","DEFAULT_NODE_CAPACITY","nodeCapacity","queryInternal","searchBounds","childBoundables","getIntersectsOp","getNodeCapacity","lastNode","build","removeItem","childToRemove","itemsTree","valuesTree","valuesTreeForNode","valuesTreeForChild","boundablesAtLevel","boundables","top","boundable","createHigherLevels","getRoot","childToPrune","boundablesOfALevel","parentBoundables","createParentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","getComparator","compareDoubles","IntersectsOp","ItemDistance","item1","item2","STRtree","createParentBoundablesFromVerticalSlices","verticalSlices","createParentBoundablesFromVerticalSlice","STRtreeNode","intersectsOp","sliceCount","sliceCapacity","slices","boundablesAddedToSlice","yComparator","minLeafCount","xComparator","nearestNeighbour","itemDist","initBndPair","maxDistance","distanceLowerBound","minPair","bndPair","currentDistance","bnd","kNearestNeighbors","bp1","bp2","centreX","centreY","aBounds","bBounds","geometryTypes","GeoJSONParser","json","JSON","Feature","feature","bbox","FeatureCollection","featureCollection","features","sub","geoJson","shellGeoJson","holeGeoJson","GeoJSONReader","GeoJSONWriter","WKTReader","p2c","OL3Parser","olReference","ol","inject","convertFromPoint","convertFromLineString","convertFromLinearRing","convertFromPolygon","convertFromMultiPoint","convertFromMultiLineString","convertFromMultiPolygon","convertFromCollection","getLinearRings","multiPoint","getPoints","multiLineString","getLineStrings","multiPolygon","getPolygons","getGeometries","convertToPoint","convertToLineString","convertToLinearRing","convertToPolygon","convertToMultiPoint","convertToMultiLineString","convertToMultiPolygon","convertToCollection","geometryCollection","SegmentPointComparator","relativeSign","octant","xSign","ySign","compareValue","compareSign0","compareSign1","SegmentNode","_segString","_segmentOctant","_isInterior","segString","segmentOctant","isInterior","SegmentNodeList","getSplitCoordinates","addEdgeCoordinates","addCollapsedNodes","collapsedVertexIndexes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","vertexIndex","findCollapseIndex","collapsedVertexIndex","numVerticesBetween","NodedSegmentString","getSegmentOctant","checkSplitEdgesCorrectness","splitEdges","edgePts","split0","pt0","splitn","splitnPts","ptn","NodeVertexIterator","_nodeList","_nodeIt","_currNode","_nextNode","_currSegIndex","nodeList","readNextNode","Octant","adx","ady","SegmentString","setData","NodableSegmentString","safeOctant","addIntersectionNode","getNodeList","getNodedSubstrings","segStrings","resultEdgelist","ss","MonotoneChainOverlapAction","_overlapSeg1","_overlapSeg2","mc2","start2","Noder","computeNodes","SinglePassNoder","_segInt","segInt","setSegmentIntersector","MCIndexNoder","_monoChains","_idCounter","_nodedSegStrings","_nOverlaps","getMonotoneChains","getIndex","segStr","segChains","inputSegStrings","intersectChains","overlapAction","SegmentOverlapAction","queryChain","overlapChains","testChain","_si","ss1","ss2","processIntersections","ScaledNoder","_noder","_scaleFactor","_offsetX","_offsetY","_isScaled","noder","scaleFactor","isIntegerPrecision","rescale","nodedSegmentStrings","roundPts","roundPtsNoDup","splitSS","intSegStrings","IsSimpleOp","_isClosedEndpointsInInterior","_nonSimpleLocation","isSimpleMultiPoint","mp","isSimplePolygonal","isSimpleLinearGeometry","hasClosedEndpointIntersection","graph","endPoints","eiInfo","getNonSimpleLocation","hasNonEndpointIntersection","EndpointInfo","computeSimple","isSimpleGeometryCollection","BufferParameters","_quadrantSegments","DEFAULT_QUADRANT_SEGMENTS","_endCapStyle","CAP_ROUND","_joinStyle","JOIN_ROUND","_mitreLimit","DEFAULT_MITRE_LIMIT","_isSingleSided","_simplifyFactor","DEFAULT_SIMPLIFY_FACTOR","quadrantSegments","setQuadrantSegments","endCapStyle","setEndCapStyle","joinStyle","mitreLimit","setJoinStyle","setMitreLimit","getEndCapStyle","isSingleSided","quadSegs","JOIN_BEVEL","JOIN_MITRE","getJoinStyle","setSimplifyFactor","simplifyFactor","getSimplifyFactor","getQuadrantSegments","getMitreLimit","setSingleSided","bufferDistanceError","alpha","cos","CAP_FLAT","CAP_SQUARE","RightmostEdgeFinder","_minIndex","_minCoord","_minDe","_orientedDe","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","pPrev","pNext","orientation","usePrev","findRightmostEdgeAtNode","star","getRightmostEdge","dirEdgeList","rightmostSide","LinkedList","addLast","removeFirst","shift","BufferSubgraph","_finder","_dirEdgeList","_rightMostCoord","clearVisitedEdges","getRightmostCoordinate","computeNodeDepth","startEdge","computeDepths","copySymDepths","computeDepth","outsideDepth","addReachable","findResultEdges","nodesVisited","nodeQueue","startNode","adjNode","edgeEnv","dirEdge","nodeStack","symNode","getDirectedEdges","EdgeRing","_startDe","_maxNodeDegree","_isHole","_geometryFactory","computePoints","computeRing","isFirstEdge","addPoints","getLinearRing","computeMaxNodeDegree","getOutgoingDegree","isHole","containsPoint","isShell","getMaxNodeDegree","getShell","deLabel","setShell","toPolygon","holeLR","MinimalEdgeRing","er","MaximalEdgeRing","buildMinimalRings","minEdgeRings","minEr","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","PolygonBuilder","_shellList","sortShellsAndHoles","edgeRings","shellList","freeHoleList","computePolygons","resultPolyList","placeFreeHoles","findEdgeRingContaining","buildMinimalEdgeRings","maxEdgeRings","findShell","placePolygonHoles","buildMaximalEdgeRings","dirEdges","testEr","testRing","testEnv","minShell","minEnv","tryShell","tryRing","tryEnv","isContained","shellCount","BufferInputLineSimplifier","_inputLine","_distanceTol","_isDeleted","_angleOrientation","inputLine","isDeletable","i0","distanceTol","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","midIndex","findNextNonDeletedIndex","lastIndex","isMiddleVertexDeleted","isShallowConcavity","isAngleToSimplify","NUM_PTS_TO_CHECK","simplify","collapseLine","simp","INIT","KEEP","OffsetSegmentString","_ptList","_minimimVertexDistance","COORDINATE_ARRAY_TYPE","addPt","bufPt","isRedundant","addPts","lastPt","startPt","last2Pt","setMinimumVertexDistance","minimimVertexDistance","OffsetSegmentGenerator","_maxCurveSegmentError","_filletAngleQuantum","_closingSegLengthFactor","_segList","_bufParams","_s0","_s1","_s2","_seg0","_seg1","_offset0","_offset1","_side","_hasNarrowConcaveAngle","bufParams","MAX_CLOSING_SEG_LEN_FACTOR","addNextSegment","addStartPoint","computeOffsetSegment","outsideTurn","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","offsetL","offsetR","addDirectedFillet","squareCapSideOffset","squareCapLOffset","squareCapROffset","addMitreJoin","offset0","offset1","isMitreWithinLimit","mitreRatio","addLimitedMitreJoin","OFFSET_SEGMENT_SEPARATION_FACTOR","addBevelJoin","addCornerFillet","createSquare","addSegments","addFirstSegment","radius","startAngle","endAngle","addLastSegment","initSideSegments","s1","s2","ang0","angDiff","angDiffHalf","midAng","mitreMidAng","mitreDist","bevelDelta","bevelHalfLen","bevelMidX","bevelMidY","bevelMidPt","mitreMidLine","bevelEndLeft","bevelEndRight","totalAngle","nSegs","initAngle","currAngleInc","currAngle","offset","sideSign","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","createCircle","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","numInt","hasNarrowConcaveAngle","OffsetCurveBuilder","getOffsetCurve","isRightSide","posDistance","segGen","getSegGen","computePointCurve","computeOffsetCurve","curvePts","computeSingleSidedBufferCurve","distTol","simplifyTolerance","simp2","simp1","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","lineCoord","getBufferParameters","bufDistance","getRingCurve","copyCoordinates","SubgraphDepthLocater","_subgraphs","_seg","subgraphs","findStabbedSegments","stabbingRayLeftPt","stabbedSegments","bsg","ds","DepthSegment","_leftDepth","_upwardSeg","orientIndex","compareX","seg0","seg1","compare0","OffsetCurveSetBuilder","_curveBuilder","_curveList","curveBuilder","curve","addCurve","offsetSide","shellCoord","isErodedCompletely","holeCoord","isTriangleErodedCompletely","triangleCoord","bufferDistance","tri","distToCentre","getCurves","cwLeftLoc","cwRightLoc","ringCoord","envMinDimension","EdgeEndStar","_edgeMap","_edgeList","_ptInAreaLocation","getNextCW","iNextCW","propagateSideLabels","startLoc","currLoc","isAreaLabelsConsistent","geomGraph","computeEdgeEndLabels","checkAreaLabelsConsistent","lastEdgeIndex","startLabel","findIndex","eSearch","computeLabelling","hasDimensionalCollapseEdge","getDegree","insertEdgeEnd","DirectedEdgeStar","_resultAreaEdgeList","_SCANNING_FOR_INCOMING","_LINKING_TO_OUTGOING","getResultAreaEdges","firstOut","incoming","state","nextOut","nextIn","de0","deLast","quad0","updateLabelling","nodeLabel","prevOut","firstIn","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","endIndex","currDepth","nextDe","mergeSymLabels","findCoveredLineEdges","eLabel","OverlayNodeFactory","OrientedCoordinateArray","_orientation","oca","compareOriented","orientation1","orientation2","limit1","limit2","compPt","done1","done2","EdgeList","_ocaMap","edgeColl","findEdgeIndex","findEqualEdge","matchEdge","IntersectionAdder","_hasInterior","numIntersections","numInteriorIntersections","numProperIntersections","getLineIntersector","hasInteriorIntersection","BufferBuilder","_workingPrecisionModel","_workingNoder","setWorkingPrecisionModel","insertUniqueEdge","existingEdge","existingLabel","labelToMerge","mergeDelta","existingDelta","newDelta","buildSubgraphs","subgraphList","polyBuilder","processedGraphs","subgraph","locater","createSubgraphs","createEmptyResultGeometry","emptyGeom","getNoder","curveSetBuilder","bufferSegStrList","computeNodedEdges","resultGeom","nodedSegStrings","oldLabel","setNoder","lLoc","rLoc","convertSegStrings","NodingValidator","_segStrings","checkEndPtVertexIntersections","checkInteriorIntersections","ss0","pts0","checkValid","checkCollapses","checkCollapse","HotPixel","_originalPt","_ptScaled","_p0Scaled","_p1Scaled","_corner","_safeEnv","initCorners","intersectsScaled","segMinx","segMaxx","segMiny","segMaxy","isOutsidePixelEnv","intersectsToleranceSquare","copyScaled","pScaled","getSafeEnvelope","safeTolerance","SAFE_ENV_EXPANSION_FACTOR","intersectsPixelClosure","intersectsLeft","intersectsBottom","addSnappedNode","segIndex","MCIndexPointSnapper","snap","hotPixel","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","isNodeAdded","_hotPixel","_parentEdge","_hotPixelVertexIndex","_isNodeAdded","InteriorIntersectionFinderAdder","_interiorIntersections","getInteriorIntersections","MCIndexSnapRounder","_pm","_pointSnapper","checkCorrectness","inputSegmentStrings","resultSegStrings","nv","snapRound","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","intFinderAdder","edge0","snapPts","snapPt","BufferOp","_argGeom","_resultGeometry","_saveException","bufferFixedPrecision","fixedPM","bufBuilder","bufferReducedPrecision","precDigits","MAX_PRECISION_DIGITS","precisionDigits","sizeBasedScaleFactor","precisionScaleFactor","computeGeometry","bufferOriginalPrecision","argPM","bufferOp","gBuf","geomBuf","bufOp","params","maxPrecisionDigits","envMax","expandByDistance","bufEnvMax","bufEnvPrecisionDigits","minUnitLog10","CAP_BUTT","PolygonExtracter","_comps","comps","GeometryLocation","_component","_segIndex","INSIDE_AREA","isInsideArea","getGeometryComponent","PointExtracter","ConnectedElementLocationFilter","_locations","locations","DistanceOp","_terminateDistance","_minDistanceLocation","terminateDistance","computeContainmentDistance","locPtPoly","polyGeomIndex","polyGeom","locationsIndex","polys","insideLocs","locs","ptLoc","computeMinDistanceLinesPoints","locGeom","computeMinDistance","computeFacetDistance","lines0","lines1","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPoints","nearestPts","coord0","segClosestPoint","line0","line1","points0","points1","pt1","distOp","isWithinDistance","envDist","EdgeString","_directedEdges","forwardDirectedEdges","reverseDirectedEdges","coordinateList","directedEdge","getEdgeDirection","getLine","setMarked","setContext","getComponentWithVisitedState","visitedState","visited","marked","_from","_to","_edgeDirection","_angle","from","to","directionPt","edgeDirection","isRemoved","getDirectionPt","getAngle","getFromNode","setEdge","getToNode","toEdges","LineMergeDirectedEdge","getOutEdges","_dirEdge","setDirectedEdges","addOutEdge","getDirEdge","fromNode","getOppositeNode","_outEdges","_sorted","getNextEdge","sortEdges","getNextCWEdge","modi","_deStar","deStar","getEdgesBetween","node0","node1","commonEdges","retainAll","LineMergeEdge","_line","_dirEdges","findNodesOfDegree","nodesFound","nodeIterator","dirEdgeIterator","edgeIterator","outEdges","findNode","LineMergeGraph","startCoordinate","endCoordinate","endNode","directedEdge0","directedEdge1","LineMerger","_mergedLineStrings","_edgeStrings","buildEdgeStringsForUnprocessedNodes","buildEdgeStringsStartingAt","buildEdgeStringsForNonDegree2Nodes","buildEdgeStringsForObviousStartNodes","getMergedLineStrings","buildEdgeStringStartingWith","buildEdgeStringsForIsolatedLoops","edgeString","current","BasicSegmentString","InteriorIntersectionFinder","_findAllIntersections","_isCheckEndSegmentsOnly","_interiorIntersection","_intSegments","_intersections","_intersectionCount","_keepIntersections","getInteriorIntersection","setCheckEndSegmentsOnly","isCheckEndSegmentsOnly","getIntersectionSegments","getIntersections","setFindAllIntersections","findAllIntersections","setKeepIntersections","keepIntersections","isEndSegPresent","isEndSegment","createAllIntersectionsFinder","createAnyIntersectionFinder","createIntersectionCounter","FastNodingValidator","_isValid","execute","getErrorMessage","intSegs","EdgeNodingValidator","_nv","toSegmentStrings","validator","GeometryCollectionMapper","_mapOp","mapOp","mapped","mapper","LineBuilder","_op","_lineEdgesList","_resultLineList","ptLocator","collectLines","opCode","getGraph","collectLineEdge","collectBoundaryTouchEdge","labelIsolatedLine","targetIndex","getArgGeometry","OverlayOp","isResultOfOp","isCoveredByA","labelIsolatedLines","edgesList","INTERSECTION","PointBuilder","_resultPointList","filterCoveredNodeToPoint","isCoveredByLA","extractNonCoveredResultNodes","LineStringSnapper","_snapTolerance","_srcPts","_allowSnappingToSourceVertices","_isClosed","srcLine","snapTolerance","srcPts","snapVertices","srcCoords","srcPt","snapVert","findSnapForVertex","snapTo","snapSegments","distinctPtCount","findSegmentIndexToSnap","snapIndex","setAllowSnappingToSourceVertices","allowSnappingToSourceVertices","GeometrySnapper","_srcGeom","srcGeom","snapGeom","extractTargetCoordinates","snapTrans","SnapTransformer","snapToSelf","cleanResult","snappedGeom","computeSnapTolerance","ringPts","minSegLen","computeMinimumSegmentLength","snapTol","ptSet","segLen","snapper0","snapper1","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","fixedSnapTol","minDimension","SNAP_PRECISION_FACTOR","_snapPts","_isSelfSnap","isSelfSnap","snapLine","snapper","CommonBits","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","numBits","signExpBits","numSignExp","numCommonMostSigMantissaBits","zeroLowerBits","numStr","padStr","bitStr","getBit","nBits","prop","num1","num2","CommonBitsRemover","_commonCoord","_ccFilter","CommonCoordinateFilter","addCommonBits","trans","Translater","removeCommonBits","invCoord","getCommonCoordinate","_commonBitsX","_commonBitsY","xp","yp","SnapOverlayOp","_cbr","selfSnap","remGeom","prepareResult","prepGeom","overlayOp","UNION","symDifference","SYMDIFFERENCE","difference","DIFFERENCE","SnapIfNeededOverlayOp","isSuccess","savedException","GeometryGraphOperation","_resultPrecisionModel","_arg","setComputationPrecision","_resultGeom","_resultPolyList","cancelDuplicateResultEdges","resultPointList","resultLineList","opcode","createEmptyResult","replaceCollapsedEdges","newEdges","updateNodeLabelling","overlayOpCode","computeOverlay","insertUniqueEdges","copyPoints","baseSplitEdges","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","lineBuilder","pointBuilder","labelIncompleteNode","graphNode","newNode","ni","nodeCount","geom1","gov","geomOv","MapOp","resultDimension","dim0","dim1","geomFact","loc0","loc1","PolygonizeDirectedEdge","setRing","getRing","PolygonizeEdge","_deList","_lowestEdge","_ringPts","_isProcessed","_isIncludedSet","_isIncluded","isIncluded","isIncludedSet","startDE","isOuterHole","hasShell","getPolygon","isProcessed","holeER","setIncluded","getOuterHole","adjRing","computeHole","isOuterShell","getLineString","updateIncluded","adjShell","setProcessed","findDirEdgesInRing","minShellEnv","tryShellRing","tryShellEnv","EnvelopeComparator","obj0","obj1","r0","r1","PolygonizeGraph","findEdgeRing","computeDepthParity","computeNextCWEdges","iNode","linePts","endPt","nStart","nEnd","deleteCutEdges","findLabeledEdgeRings","cutLines","getEdgeRings","maximalRings","convertMaximalToMinimalEdgeRings","edgeRingList","ringEdges","intNodes","findIntersectionNodes","computeNextCCWEdges","deleteDangles","nodesToRemove","dangleLines","deleteAllEdges","nodeOutEdges","toNode","getDegreeNonDeleted","edgeRingStarts","currLabel","prevDE","outDE","firstOutDE","prevInDE","inDE","Polygonizer","_lineStringAdder","LineStringAdder","_dangles","_cutEdges","_invalidRingLines","_holeList","_polyList","_isCheckingRingsValid","_extractOnlyPolygonal","extractOnlyPolygonal","polygonize","getInvalidRingLines","findValidRings","validEdgeRingList","invalidRingList","findShellsAndHoles","assignHolesToShells","includeAll","findDisjointShells","extractPolygons","getDangles","getCutEdges","setCheckRingsValid","isCheckingRingsValid","findOuterShells","outerHoleER","polyList","holeList","assignHoleToShell","isMoreToScan","EdgeEndBuilder","createEdgeEndForNext","eiCurr","eiNext","createEdgeEndForPrev","computeEdgeEnds","EdgeEndBundle","_edgeEnds","computeLabelOn","foundInterior","computeLabelSide","computeLabelSides","EdgeEndBundleStar","esb","eb","RelateNode","updateIMFromEdges","RelateNodeFactory","RelateComputer","_im","_isolatedEdges","arg","insertEdgeEnds","computeProperIntersectionIM","intersector","dimA","dimB","hasProper","hasProperInterior","labelIsolatedEdges","thisIndex","labelIsolatedEdge","computeDisjointIM","computeIntersectionNodes","copyNodesAndLabels","labelIsolatedNodes","eeBuilder","ee0","ee1","labelNodeEdges","labelIntersectionNodes","labelIsolatedNode","ga","gb","RectangleContains","_rectEnv","rectangle","isContainedInBoundary","isPointContainedInBoundary","isLineStringContainedInBoundary","isLineSegmentContainedInBoundary","rc","RectangleLineIntersector","_diagUp0","_diagUp1","_diagDown0","_diagDown1","rectEnv","segEnv","isSegUpwards","ShortCircuitedGeometryVisitor","applyTo","RectangleIntersects","_rectangle","EnvelopeIntersectsVisitor","ecpVisitor","GeometryContainsPointVisitor","riVisitor","RectangleIntersectsSegmentVisitor","rp","_intersects","elementEnv","_rectSeq","_containsPoint","rectPt","_rectIntersector","checkIntersectionWithLineStrings","testLine","checkIntersectionWithSegments","seq1","RelateOp","_relate","getIntersectionMatrix","touches","relate","relOp","crosses","GeometryCombiner","_skipEmpty","_inputGeoms","extractFactory","extractElements","elems","elemGeom","combiner","createList","obj2","PointGeometryUnion","_pointGeom","_otherGeom","pointGeom","exteriorCoords","ptComp","unioner","GeometryExtracter","_geometryType","geometryType","isOfType","Class","clz","toGeometryType","CascadedPolygonUnion","_inputPolys","reduceToGeometries","geomTree","unionTree","extractByEnvelope","disjointGeoms","intersectingGeoms","elem","unionOptimized","g0Env","g1Env","combo","unionActual","commonEnv","unionUsingEnvelopeIntersection","STRTREE_NODE_CAPACITY","itemTree","unionAll","binaryUnion","unionSafe","repeatedUnion","restrictToPolygons","common","disjointPolys","g0Int","g1Int","overallUnion","bufferUnion","gColl","UnaryUnionOp","_polygons","unionNoOpt","unionWithNull","unionPoints","ptGeom","unionLines","lineGeom","unionPolygons","unionLA","ConnectedInteriorTester","_geomGraph","_disconnectedRingcoord","visitInteriorRing","findDifferentPoint","intDe","visitLinkedDirectedEdges","visitShellInteriors","setInteriorEdgesInResult","startDe","buildEdgeRings","hasUnvisitedShellEdge","isInteriorsConnected","RelateNodeGraph","nodeIt","eeList","edgeIt","ConsistentAreaTester","_nodeGraph","isNodeEdgeAreaLabelsConsistent","hasDuplicateRings","eeb","isNodeConsistentArea","IndexedNestedRingTester","_rings","_totalEnv","_nestedPt","getNestedPoint","isNonNested","innerRing","innerRingPts","results","searchRing","searchRingPts","innerRingPt","IsValidOp","findPtNotNode","TopologyValidationError","_errorType","errorType","getErrorType","getMessage","errMsg","locStr","ERROR","REPEATED_POINT","HOLE_OUTSIDE_SHELL","NESTED_HOLES","DISCONNECTED_INTERIOR","SELF_INTERSECTION","RING_SELF_INTERSECTION","NESTED_SHELLS","DUPLICATE_RINGS","TOO_FEW_POINTS","INVALID_COORDINATE","RING_NOT_CLOSED","_parentGeometry","_isSelfTouchingRingFormingHoleValid","_validErr","parentGeometry","checkInvalidCoordinates","checkHolesNotNested","nestedTester","innerHole","checkConsistentArea","cat","isValidArea","checkShellInsideHole","shellPts","holePts","shellPt","insideHole","holePt","insideShell","checkNoSelfIntersectingRings","checkNoSelfIntersectingRing","checkConnectedInteriors","cit","nodeSet","isFirst","checkHolesInShell","pir","outside","checkTooFewPoints","getValidationError","checkClosedRing","checkClosedRings","checkShellsNotNested","setSelfTouchingRingFormingHoleValid","checkShellNotNested","polyShell","insidePolyShell","badNestedPt","testCoords","searchEdge","isValidOp","PrecisionReducerCoordinateOperation","_targetPM","_removeCollapsed","targetPM","removeCollapsed","reducedCoords","noRepeatedCoordList","noRepeatedCoords","minLength","collapsedCoords","GeometryPrecisionReducer","_changePrecisionModel","_isPointwise","fixPolygonalTopology","geomToBuffer","changePM","bufGeom","finalGeom","reducePointwise","geomEdit","newFactory","createFactory","finalRemoveCollapsed","reduceGeom","newPM","geomEditor","createEditor","setRemoveCollapsedComponents","inputFactory","setChangePrecisionModel","changePrecisionModel","reducePW","setPointwise","isPointwise","reducer","DouglasPeuckerLineSimplifier","_usePt","simplifySection","DouglasPeuckerSimplifier","_isEnsureValidTopology","setEnsureValid","isEnsureValidTopology","DPTransformer","tss","rawGeom","rawAreaGeom","removeDegenerateRings","simpResult","TaggedLineSegment","getParent","TaggedLineString","_parentLine","_segs","_resultSegs","_minimumSize","parentLine","minimumSize","addToResult","asLineString","getResultSize","resultSegsSize","getSegment","getParentCoordinates","getMinimumSize","asLinearRing","getSegments","getResultCoordinates","LineSegmentIndex","querySeg","LineSegmentVisitor","itemsFound","_querySeg","TaggedLineStringSimplifier","_inputIndex","_outputIndex","_linePts","inputIndex","outputIndex","flatten","newSeg","hasBadIntersection","sectionIndex","candidateSeg","hasBadOutputIntersection","hasBadInputIntersection","isValidToSimplify","worstCaseSize","furthestPtIndex","findFurthestPoint","querySegs","maxDist","midPt","isInLineSection","TaggedLinesSimplifier","taggedLines","tlss","TopologyPreservingSimplifier","_lineSimplifier","_linestringMap","LineStringMapBuilderFilter","LineStringTransformer","linestringMap","taggedLine","tps","minSize","SplitSegment","_segLen","_splitPt","_minimumLen","splitAt","minFrac","pointAlongReverse","actualLen","getConstrainedLength","setMinimumLength","minLen","getSplitPoint","ConstraintSplitPointFinder","findSplitPoint","encroachPt","NonEncroachingSplitPointFinder","lineSeg","midPtLen","splitSeg","projPt","projectedSplitPoint","nonEncroachDiam","maxSplitLen","TrianglePredicate","triArea","isInCircleDDNormalized","bdx","bdy","cdx","cdy","abdet","bcdet","cadet","alift","blift","clift","isInCircle","checkRobustInCircle","nonRobustInCircle","isInCircleNonRobust","isInCircleDD","isInCircleDDSlow","isInCircleCC","circumCentre","toPoint","isInCircleDDFast","aTerm","triAreaDDFast","bTerm","cTerm","pTerm","cc","ccRadius","pRadiusDiff","isInCircleNormalized","triAreaDDSlow","isInCircleRobust","t1","t2","Vertex","_z","circleCenter","cab","cbc","hcc","nre","err","dot","magn","getZ","interpolateZValue","xm","ym","zm","crossProduct","setZ","times","cross","classify","sa","BEHIND","BEYOND","ORIGIN","DESTINATION","BETWEEN","circumRadiusRatio","edgeLength","el","ptLen","pz","ConstraintVertex","_isOnConstraint","_constraint","getConstraint","setOnConstraint","isOnConstraint","setConstraint","constraint","QuadEdge","_rot","_vertex","equalsNonOriented","qe","equalsOriented","toLineSegment","dNext","lPrev","rPrev","rot","oPrev","setOrig","lNext","invRot","setDest","delete","rNext","isLive","getPrimary","dPrev","makeEdge","q0","q3","base","beta","t3","t4","connect","IncrementalDelaunayTriangulator","_subdiv","_isUsingTolerance","subdiv","getTolerance","insertSite","isVertexOfEdge","isOnEdge","insertSites","vertices","QuadEdgeLocator","LastFoundQuadEdgeLocator","_lastEdge","locateFromEdge","LocateFailureException","msgWithSpatial","TriangleVisitor","triEdges","QuadEdgeSubdivision","_visitedKey","_quadEdges","_startingEdge","_edgeCoincidenceTolerance","_frameVertex","_frameEnv","_locator","_triEdges","EDGE_COINCIDENCE_TOL_FACTOR","createFrame","initSubdiv","getTriangleVertices","includeFrame","TriangleVertexListVisitor","visitTriangles","isFrameVertex","getVoronoiCellPolygon","cellPts","startQE","cellPoly","setLocator","locator","ea","ec","isFrameBorderEdge","leftTri","getTriangleEdges","rightTri","vLeftTriOther","vRightTriOther","triVisitor","edgeStack","visitedEdges","fetchTriangleToVisit","isFrameEdge","getTriangleCoordinates","TriangleCoordinatesVisitor","getTriangles","getVertices","vd","curr","edgeCount","isFrame","quadEdges","getPrimaryEdges","getVertexUniqueEdges","visitedVertices","qd","TriangleEdgesListVisitor","priQE","eSym","eRot","eRotSym","iter","maxIter","getVoronoiCellPolygons","TriangleCircumcentreVisitor","cells","getVoronoiDiagram","vorCells","triPtsList","tris","triPt","locEdge","triEdge","ccVertex","_triList","_coordList","_triCoords","checkTriangleSize","Segment","_ls","z1","z2","getEndZ","getStartZ","getStart","getEnd","getEndY","getStartX","getStartY","getEndX","ConformingDelaunayTriangulator","_initialVertices","_segVertices","_segments","_incDel","_convexHull","_splitFinder","_kdt","_vertexFactory","_computeAreaEnv","initialVertices","getInitialVertices","getKDT","enforceConstraints","addConstraintVertices","splits","enforceGabriel","MAX_SPLIT_ITER","getVertexFactory","getPointArray","setConstraints","segments","segVertices","computeConvexHull","hull","findNonGabrielPoint","segRadius","closestNonGabriel","nextNode","testRadius","testDist","getConstraintSegments","setSplitPointFinder","splitFinder","segsToInsert","newSegments","segsToRemove","splitVertex","createVertex","insertedVertex","getSubdivision","computeBoundingBox","vertexEnv","computeVertexEnvelope","allPointsEnv","setVertexFactory","vertexFactory","formInitialDelaunay","kdnode","snappedV","DelaunayTriangulationBuilder","_siteCoords","siteEnv","toVertices","triangulator","setTolerance","setSites","extractUniqueCoordinates","unique","coordsCopy","verts","ConformingDelaunayTriangulationBuilder","_constraintLines","_constraintVertexMap","createSiteVertices","createVertices","createConstraintSegments","sites","cdt","constraintLines","constraintSegs","VoronoiDiagramBuilder","_clipEnv","_diagramEnv","getDiagram","clipGeometryCollection","setClipEnvelope","clipEnv","clipPoly","clipped","LinearLocation","_componentIndex","_segmentIndex","_segmentFraction","componentIndex","doNormalize","getComponentIndex","isEndpoint","linearGeom","lineComp","nseg","toLowest","pointAlongSegmentByFraction","getSegmentFraction","linear","setToEnd","lastLine","isOnSameSegment","snapToVertex","getSegmentLength","lenToStart","lenToEnd","compareLocationValues","componentIndex1","segmentIndex1","segmentFraction1","isVertex","getEndLocation","componentIndex0","segmentIndex0","segmentFraction0","LinearIterator","_linearGeom","_numLines","_currentLine","_vertexIndex","segmentEndVertexIndex","loadCurrentLine","getVertexIndex","getSegmentEnd","getSegmentStart","isEndOfLine","LocationIndexOfPoint","indexOfFromStart","minIndex","minComponentIndex","minSegmentIndex","segDistance","candidateComponentIndex","candidateSegmentIndex","indexOfAfter","endLoc","closestAfter","LocationIndexOfLine","indicesOf","subLine","locPt","subLineLoc","LinearGeometryBuilder","_ignoreInvalidLines","_fixInvalidLines","_lastPt","endLine","getLastCoordinate","rawPts","validCoordinateSequence","setFixInvalidLines","fixInvalidLines","allowRepeatedPoints","setIgnoreInvalidLines","ignoreInvalidLines","validPts","ExtractLineByLocation","computeLinear","computeLine","startSegmentIndex","lastSegmentIndex","newCoordinateArray","LocationIndexedLine","checkGeometryType","clampIndex","extractPoint","indexLow","isValidIndex","extractLine","LengthIndexOfPoint","ptMeasure","segmentStartMeasure","segMeasureToPt","segmentNearestMeasure","projFactor","LengthLocationMap","totalLength","resolveHigher","compIndex","resolveLower","forwardLength","getLocationForward","LengthIndexedLine","positiveIndex","locationOf","locLow","lil","startIndex2","endIndex2","resolveStartLower","UnionOp","coveredBy","within","disjoint","args","intersectionPattern","centPt","interiorPt","toText","writer","version"],"mappings":"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"}