{"version":3,"file":"index.mjs","mappings":"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","sources":["webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/colorNameToRgb.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/colorize.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/cssColors.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/hexToRgb.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/hslToRgb.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/hsvToRgb.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/hueToColorComponent.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/rgbToHex.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/rgbToHsl.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/colors/rgbToHsv.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/curves/bezier/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/curves/bezier/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/curves/bezier/tangentAt.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/curves/bezier/valueAt.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/curves/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/applyTransforms.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/fromCompactBinary.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/isA.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/reverse.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/toCompactBinary.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/toOutlines.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/toPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/toSides.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom2/validate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/applyTransforms.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/fromCompactBinary.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/invert.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/isA.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/toCompactBinary.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/toPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/toPolygons.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/geom3/validate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/appendArc.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/appendBezier.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/appendPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/applyTransforms.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/close.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/concat.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/fromCompactBinary.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/isA.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/reverse.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/toCompactBinary.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/toPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/path2/validate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly2/arePointsInside.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly2/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly2/flip.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly2/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly2/measureArea.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/fromPointsAndPlane.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/invert.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/isA.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/isConvex.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/measureArea.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/measureBoundingBox.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/measureBoundingSphere.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/measureSignedVolume.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/plane.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/toPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/geometries/poly3/validate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/OrthoNormalBasis.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/constants.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/closestPoint.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/copy.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/direction.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/distanceToPoint.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/fromValues.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/intersectPointOfLines.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/origin.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/reverse.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line2/xAtY.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/closestPoint.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/copy.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/direction.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/distanceToPoint.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/fromPlanes.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/fromPointAndDirection.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/intersectPointOfLineAndPlane.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/origin.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/reverse.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/line3/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/add.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/constants.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/copy.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromRotation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromScaling.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromTaitBryanRotation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromTranslation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromValues.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromVectorRotation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromXRotation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromYRotation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/fromZRotation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/identity.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/invert.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/isIdentity.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/isMirroring.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/isOnlyTransformScale.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/mirrorByPlane.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/multiply.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/rotate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/rotateX.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/rotateY.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/rotateZ.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/scale.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/subtract.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/mat4/translate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/flip.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/fromNormalAndPoint.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/fromPointsRandom.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/projectionOfPoint.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/signedDistanceToPoint.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/plane/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/utils/aboutEqualNormals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/utils/area.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/utils/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/utils/interpolateBetween2DPointsForY.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/utils/intersect.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/utils/solve2Linear.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/abs.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/add.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/angle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/angleDegrees.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/angleRadians.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/copy.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/cross.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/distance.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/divide.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/dot.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/fromAngleDegrees.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/fromAngleRadians.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/fromScalar.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/fromValues.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/length.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/lerp.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/max.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/min.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/multiply.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/negate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/normal.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/normalize.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/rotate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/scale.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/snap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/squaredDistance.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/squaredLength.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/subtract.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec2/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/abs.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/add.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/angle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/copy.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/cross.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/distance.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/divide.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/dot.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/fromScalar.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/fromValues.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/fromVec2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/length.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/lerp.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/max.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/min.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/multiply.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/negate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/normalize.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/orthogonal.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/rotateX.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/rotateY.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/rotateZ.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/scale.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/snap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/squaredDistance.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/squaredLength.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/subtract.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec3/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/copy.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/dot.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/fromScalar.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/fromValues.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/maths/vec4/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/calculateEpsilonFromBounds.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureAggregateArea.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureAggregateBoundingBox.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureAggregateEpsilon.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureAggregateVolume.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureArea.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureBoundingBox.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureBoundingSphere.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureCenter.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureCenterOfMass.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureDimensions.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureEpsilon.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/measurements/measureVolume.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/fromFakePolygons.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/intersect.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/intersectGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/intersectGeom3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/intersectGeom3Sub.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/mayOverlap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/scission.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/scissionGeom3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/subtract.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/subtractGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/subtractGeom3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/subtractGeom3Sub.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/to3DWalls.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/trees/Node.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/trees/PolygonTreeNode.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/trees/Tree.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/trees/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/trees/splitLineSegmentByPlane.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/trees/splitPolygonByPlane.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/union.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/unionGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/unionGeom3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/booleans/unionGeom3Sub.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/expand.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/expandGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/expandGeom3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/expandPath2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/expandShell.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/extrudePolygon.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/offset.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/offsetFromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/offsetGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/expansions/offsetPath2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/assignHoles.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/eliminateHoles.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/linkedList.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/linkedListSort.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/linkedPolygon.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/polygonHierarchy.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/earcut/triangle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeFromSlices.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeLinear.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeLinearGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeLinearPath2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeRectangular.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeRectangularGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeRectangularPath2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeRotate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/extrudeWalls.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/project.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/calculatePlane.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/create.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/equals.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/fromPoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/fromSides.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/isA.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/repairSlice.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/reverse.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/toEdges.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/toPolygons.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/toString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/extrusions/slice/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/hull.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/hullChain.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/hullGeom2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/hullGeom3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/hullPath2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/hullPoints2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/Face.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/HalfEdge.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/QuickHull.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/Vertex.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/VertexList.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/get-plane-normal.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/quickhull/point-line-distance.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/hulls/toUniquePoints.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/generalize.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/insertTjunctions.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/mergePolygons.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/reTesselateCoplanarPolygons.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/retessellate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/snap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/snapPolygons.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/modifiers/triangulatePolygons.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/align.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/center.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/mirror.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/rotate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/scale.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/operations/transforms/translate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/arc.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/circle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/commonChecks.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/cube.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/cuboid.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/cylinder.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/cylinderElliptic.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/ellipse.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/ellipsoid.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/geodesicSphere.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/line.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/polygon.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/polyhedron.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/rectangle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/roundedCuboid.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/roundedCylinder.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/roundedRectangle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/sphere.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/square.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/star.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/torus.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/primitives/triangle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/text/fonts/single-line/hershey/simplex.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/text/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/text/vectorChar.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/text/vectorParams.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/text/vectorText.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/areAllShapesTheSameType.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/degToRad.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/flatten.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/fnNumberSort.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/index.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/insertSorted.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/padArrayToLength.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/radToDeg.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/radiusToSegments.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@jscad/modeling/src/utils/trigonometry.js","webpack://@polygonjs/plugin-mapbox/./node_modules/mapbox-gl/dist/mapbox-gl.js","webpack://@polygonjs/plugin-mapbox/webpack/bootstrap","webpack://@polygonjs/plugin-mapbox/webpack/runtime/compat get default export","webpack://@polygonjs/plugin-mapbox/webpack/runtime/define property getters","webpack://@polygonjs/plugin-mapbox/webpack/runtime/hasOwnProperty shorthand","webpack://@polygonjs/plugin-mapbox/external module \"three\"","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/RenderersController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/PolyLibsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/nodes/NodesRegister.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/expressions/ExpressionRegister.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/expressions/_BaseRegister.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/assemblers/AssemblersRegistry.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/assemblers/_BaseRegister.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/plugins/Plugin.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/plugins/PluginsRegister.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/cameras/PolyCamerasRegister.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/BlobsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/BlobUtils.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/AssetUrlsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/PerformanceController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/ScenesRegister.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/LogoController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/Poly.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/graph/DirtyController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/graph/CoreGraphNode.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/NodeEvent.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/Type.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/UIData.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/flags/Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/flags/Bypass.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/flags/Display.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/flags/Optimize.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/FlagsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/states/Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/states/TimeDependent.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/states/Error.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/StatesController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/Walker.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/hierarchy/ParentController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/MapUtils.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/SetUtils.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/ArrayUtils.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/String.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/NodeSelection.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/InputCloneMode.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/Assert.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/container/utils/inputs/ClonedStatesController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/container/utils/InputsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/container/sop.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/container/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/NameController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/hierarchy/ChildrenController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/LifeCycleController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/NodeContext.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Animation.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Constant.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Attribute.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Entity.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Point.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/math/Easing.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/math/_Module.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Face.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_listCacheClear.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/eq.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_assocIndexOf.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_listCacheDelete.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_ListCache.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_listCacheGet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_listCacheHas.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_listCacheSet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_freeGlobal.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_root.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_Symbol.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getRawTag.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_objectToString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseGetTag.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isObject.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isFunction.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_coreJsData.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_isMasked.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_toSource.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseIsNative.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getNative.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getValue.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_Map.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_nativeCreate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_hashGet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_hashHas.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_Hash.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_hashClear.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_hashDelete.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_hashSet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getMapData.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_isKeyable.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_MapCache.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_mapCacheClear.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_mapCacheDelete.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_mapCacheGet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_mapCacheHas.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_mapCacheSet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_Stack.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_stackClear.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_stackDelete.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_stackGet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_stackHas.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_stackSet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_defineProperty.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseAssignValue.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_assignValue.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_copyObject.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isObjectLike.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseIsArguments.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isArguments.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isArray.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isBuffer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/stubFalse.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_isIndex.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isLength.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseUnary.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_nodeUtil.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isTypedArray.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseTimes.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_isPrototype.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_overArg.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_nativeKeys.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseKeys.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isArrayLike.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/keys.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseKeysIn.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_nativeKeysIn.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/keysIn.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_cloneBuffer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/stubArray.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getSymbols.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_arrayFilter.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_arrayPush.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getPrototype.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getSymbolsIn.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getAllKeys.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getAllKeysIn.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_DataView.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_Promise.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_Set.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_WeakMap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_getTag.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_initCloneArray.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_Uint8Array.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_cloneRegExp.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_cloneSymbol.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_initCloneByTag.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_cloneDataView.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_cloneTypedArray.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseCreate.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isMap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseIsMap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/isSet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseIsSet.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseClone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_copyArray.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_initCloneObject.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_copySymbolsIn.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseAssignIn.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_copySymbols.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_baseAssign.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/_arrayEach.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/ObjectUtils.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/clone.js","webpack://@polygonjs/plugin-mapbox/./node_modules/lodash-es/cloneDeep.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Geometry.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/ParamType.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/code/configs/BaseParamConfig.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/gl/code/utils/GLParamConfig.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/gl/code/assemblers/materials/OnBeforeCompile.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Material.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/utils/ThreeRayIntersectUtilities.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/utils/GeometryRayIntersectUtilities.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/utils/ExtensionUtilities.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/core/Constants.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/core/MeshBVHNode.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/utils/ArrayBoxUtilities.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/core/buildFunctions.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/math/SeparatingAxisBounds.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/math/MathUtilities.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/math/ExtendedTriangle.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/math/OrientedBox.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/utils/TriangleUtilities.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/utils/PrimitivePool.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/core/nodeBufferFunctions.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/core/castFunctions.js","webpack://@polygonjs/plugin-mapbox/./node_modules/three-mesh-bvh/src/core/MeshBVH.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/attribute/AttributeCallbackQueue.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/attribute/_BaseVector.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/attribute/Vector4.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/attribute/Vector3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/attribute/Vector2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Object.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/attribute/Simple.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/utils/Bvh/ThreeMeshBVHHelper.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/Group.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/util/IndexBuilder.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/csg/CsgConstant.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/csg/toObject3D/CsgGeom2ToObject3D.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/csg/toObject3D/CsgPath2ToObject3D.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/utils/ContainerMap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Audio.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Texture.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Csg.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/csg/CsgToObject3D.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Event.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Gl.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Js.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Manager.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Material.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Object.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/PostProcess.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Rop.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/containers/Geometry.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/ContainerController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/cook/PerformanceController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/CookController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/Serializer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/ParamEvent.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/Color.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/utils/OptionsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/utils/EmitController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/utils/Serializer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/utils/states/TimeDependent.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/utils/states/Error.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/utils/StatesController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/MethodDependency.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/jsep/dist/jsep.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/traversers/ParsedTree.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/traversers/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/AttributeRequirementsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/traversers/FunctionGenerator.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/LiteralConstructsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/traversers/ExpressionStringGenerator.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/DependenciesController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/expressions/ExpressionManager.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/utils/ExpressionController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/_Numeric.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Float.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/_Multiple.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Color.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Integer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/DecomposedPath.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/_BaseString.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/_BasePath.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/ParamPath.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/NodePath.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/ramp/RampValue.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Ramp.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Vector2.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Vector3.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Vector4.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/types/ParamConstructorByType.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Boolean.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Button.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/Folder.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/params/String.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsValueAccessor.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/NodeConnection.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/utils/ClonedStatesController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/InputsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/OutputsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/ConnectionsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/SavedConnectionPointsDataController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/connections/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/connections/Gl.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/connections/Js.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/connections/Event.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/connections/Actor.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/connections/ConnectionMap.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/ConnectionPointsSpareParamsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/ConnectionPointsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/io/IOController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsAccessor.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/cop/_Base.js","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/Constants.ts","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/Utils.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/Image.js","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/Client.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsConfig.js","webpack://@polygonjs/plugin-mapbox/./src/engine/nodes/cop/MapboxTile.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/Transform.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/_Base.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/utils/LayersController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/nodes/types/Rop.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/registers/nodes/types/Obj.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/utils/TransformController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/utils/ChildrenDisplayController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/utils/DisplayNodeController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/utils/HierarchyController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/helpers/CameraHelper.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/utils/cameras/UpdateFromControlsMode.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/camera/CoreCamera.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/CameraControls.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/CameraRenderer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/CameraCSSRenderer.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/CameraPostProcess.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/CameraRenderScene.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/camera/CoreCameraFrameMode.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/operations/sop/CameraFrameMode.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/_BaseCamera.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/obj/utils/cameras/RenderController.js","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/MapboxPerspectiveCamera.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/viewers/utils/ViewerCamerasController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/viewers/utils/ViewerControlsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/event/CoreEventEmitter.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/event/KeyboardEventType.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/event/CanvasKeyFocus.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/event/EventEmitter.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/viewers/utils/ViewerEventsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/viewers/utils/ViewerWebglController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/viewers/utils/ViewerAudioController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/viewers/_Base.js","webpack://@polygonjs/plugin-mapbox/./src/engine/viewers/utils/controllers/Event.ts","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/Transform.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/SceneEvent.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/poly/utils/PolyEventName.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/scene/utils/events/SceneEventsController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/scene/utils/TimeController.js","webpack://@polygonjs/plugin-mapbox/./src/engine/viewers/utils/layers/Threejs.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/camera/CoreCameraCSSRendererController.js","webpack://@polygonjs/plugin-mapbox/./src/engine/viewers/utils/layers/Buildings.ts","webpack://@polygonjs/plugin-mapbox/./src/engine/viewers/utils/controllers/Layers.ts","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/MapsRegister.ts","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/MapboxRaycaster.ts","webpack://@polygonjs/plugin-mapbox/./src/engine/viewers/Mapbox.ts","webpack://@polygonjs/plugin-mapbox/./src/engine/viewers/utils/controllers/Stylesheet.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/loader/Stylesheet.js","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/registerMapboxCamera.ts","webpack://@polygonjs/plugin-mapbox/./src/engine/nodes/obj/MapboxCamera.ts","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/CoordinatesCollection.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/modules/three/examples/jsm/utils/BufferGeometryUtils.js","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/FeatureConverter.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/builders/Merge.js","webpack://@polygonjs/plugin-mapbox/./src/core/mapbox/String.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/CameraController.js","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/engine/nodes/sop/_Base.js","webpack://@polygonjs/plugin-mapbox/./src/engine/nodes/sop/utils/MapboxListener.ts","webpack://@polygonjs/plugin-mapbox/./src/engine/nodes/sop/MapboxLayer.ts","webpack://@polygonjs/plugin-mapbox/./node_modules/@polygonjs/polygonjs/dist/src/core/geometry/operation/Hexagon.js","webpack://@polygonjs/plugin-mapbox/./src/engine/nodes/sop/utils/mapbox_plane/HexagonsController.ts","webpack://@polygonjs/plugin-mapbox/./src/engine/nodes/sop/MapboxPlane.ts","webpack://@polygonjs/plugin-mapbox/./src/engine/nodes/sop/MapboxTransform.ts","webpack://@polygonjs/plugin-mapbox/./src/index.ts","webpack://@polygonjs/plugin-mapbox/./src/PolyPluginMapbox.ts"],"sourcesContent":["const cssColors = require('./cssColors')\n\n/**\n * Converts a CSS color name to RGB color.\n *\n * @param {String} s - the CSS color name\n * @return {Array} the RGB color, or undefined if not found\n * @alias module:modeling/colors.colorNameToRgb\n * @example\n * let mysphere = colorize(colorNameToRgb('lightblue'), sphere())\n */\nconst colorNameToRgb = (s) => cssColors[s.toLowerCase()]\n\nmodule.exports = colorNameToRgb\n","const flatten = require('../utils/flatten')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst colorGeom2 = (color, object) => {\n  const newgeom2 = geom2.clone(object)\n  newgeom2.color = color\n  return newgeom2\n}\n\nconst colorGeom3 = (color, object) => {\n  const newgeom3 = geom3.clone(object)\n  newgeom3.color = color\n  return newgeom3\n}\n\nconst colorPath2 = (color, object) => {\n  const newpath2 = path2.clone(object)\n  newpath2.color = color\n  return newpath2\n}\n\nconst colorPoly3 = (color, object) => {\n  const newpoly = poly3.clone(object)\n  newpoly.color = color\n  return newpoly\n}\n\n/**\n * Assign the given color to the given objects.\n * @param {Array} color - RGBA color values, where each value is between 0 and 1.0\n * @param {Object|Array} objects - the objects of which to apply the given color\n * @return {Object|Array} new object, or list of new objects with an additional attribute 'color'\n * @alias module:modeling/colors.colorize\n *\n * @example\n * let redSphere = colorize([1,0,0], sphere()) // red\n * let greenCircle = colorize([0,1,0,0.8], circle()) // green transparent\n * let blueArc = colorize([0,0,1], arc()) // blue\n * let wildcylinder = colorize(colorNameToRgb('fuchsia'), cylinder()) // CSS color\n */\nconst colorize = (color, ...objects) => {\n  if (!Array.isArray(color)) throw new Error('color must be an array')\n  if (color.length < 3) throw new Error('color must contain R, G and B values')\n  if (color.length === 3) color = [color[0], color[1], color[2], 1.0] // add alpha\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  const results = objects.map((object) => {\n    if (geom2.isA(object)) return colorGeom2(color, object)\n    if (geom3.isA(object)) return colorGeom3(color, object)\n    if (path2.isA(object)) return colorPath2(color, object)\n    if (poly3.isA(object)) return colorPoly3(color, object)\n\n    object.color = color\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = colorize\n","/**\n * @alias module:modeling/colors.cssColors\n * @see CSS color table from http://www.w3.org/TR/css3-color/\n * @enum {Array}\n * @example\n * let newshape = colorize(cssColors.red, oldshape)\n */\nconst cssColors = {\n  // basic color keywords\n  black: [0 / 255, 0 / 255, 0 / 255],\n  silver: [192 / 255, 192 / 255, 192 / 255],\n  gray: [128 / 255, 128 / 255, 128 / 255],\n  white: [255 / 255, 255 / 255, 255 / 255],\n  maroon: [128 / 255, 0 / 255, 0 / 255],\n  red: [255 / 255, 0 / 255, 0 / 255],\n  purple: [128 / 255, 0 / 255, 128 / 255],\n  fuchsia: [255 / 255, 0 / 255, 255 / 255],\n  green: [0 / 255, 128 / 255, 0 / 255],\n  lime: [0 / 255, 255 / 255, 0 / 255],\n  olive: [128 / 255, 128 / 255, 0 / 255],\n  yellow: [255 / 255, 255 / 255, 0 / 255],\n  navy: [0 / 255, 0 / 255, 128 / 255],\n  blue: [0 / 255, 0 / 255, 255 / 255],\n  teal: [0 / 255, 128 / 255, 128 / 255],\n  aqua: [0 / 255, 255 / 255, 255 / 255],\n  // extended color keywords\n  aliceblue: [240 / 255, 248 / 255, 255 / 255],\n  antiquewhite: [250 / 255, 235 / 255, 215 / 255],\n  // 'aqua': [ 0 / 255, 255 / 255, 255 / 255 ],\n  aquamarine: [127 / 255, 255 / 255, 212 / 255],\n  azure: [240 / 255, 255 / 255, 255 / 255],\n  beige: [245 / 255, 245 / 255, 220 / 255],\n  bisque: [255 / 255, 228 / 255, 196 / 255],\n  // 'black': [ 0 / 255, 0 / 255, 0 / 255 ],\n  blanchedalmond: [255 / 255, 235 / 255, 205 / 255],\n  // 'blue': [ 0 / 255, 0 / 255, 255 / 255 ],\n  blueviolet: [138 / 255, 43 / 255, 226 / 255],\n  brown: [165 / 255, 42 / 255, 42 / 255],\n  burlywood: [222 / 255, 184 / 255, 135 / 255],\n  cadetblue: [95 / 255, 158 / 255, 160 / 255],\n  chartreuse: [127 / 255, 255 / 255, 0 / 255],\n  chocolate: [210 / 255, 105 / 255, 30 / 255],\n  coral: [255 / 255, 127 / 255, 80 / 255],\n  cornflowerblue: [100 / 255, 149 / 255, 237 / 255],\n  cornsilk: [255 / 255, 248 / 255, 220 / 255],\n  crimson: [220 / 255, 20 / 255, 60 / 255],\n  cyan: [0 / 255, 255 / 255, 255 / 255],\n  darkblue: [0 / 255, 0 / 255, 139 / 255],\n  darkcyan: [0 / 255, 139 / 255, 139 / 255],\n  darkgoldenrod: [184 / 255, 134 / 255, 11 / 255],\n  darkgray: [169 / 255, 169 / 255, 169 / 255],\n  darkgreen: [0 / 255, 100 / 255, 0 / 255],\n  darkgrey: [169 / 255, 169 / 255, 169 / 255],\n  darkkhaki: [189 / 255, 183 / 255, 107 / 255],\n  darkmagenta: [139 / 255, 0 / 255, 139 / 255],\n  darkolivegreen: [85 / 255, 107 / 255, 47 / 255],\n  darkorange: [255 / 255, 140 / 255, 0 / 255],\n  darkorchid: [153 / 255, 50 / 255, 204 / 255],\n  darkred: [139 / 255, 0 / 255, 0 / 255],\n  darksalmon: [233 / 255, 150 / 255, 122 / 255],\n  darkseagreen: [143 / 255, 188 / 255, 143 / 255],\n  darkslateblue: [72 / 255, 61 / 255, 139 / 255],\n  darkslategray: [47 / 255, 79 / 255, 79 / 255],\n  darkslategrey: [47 / 255, 79 / 255, 79 / 255],\n  darkturquoise: [0 / 255, 206 / 255, 209 / 255],\n  darkviolet: [148 / 255, 0 / 255, 211 / 255],\n  deeppink: [255 / 255, 20 / 255, 147 / 255],\n  deepskyblue: [0 / 255, 191 / 255, 255 / 255],\n  dimgray: [105 / 255, 105 / 255, 105 / 255],\n  dimgrey: [105 / 255, 105 / 255, 105 / 255],\n  dodgerblue: [30 / 255, 144 / 255, 255 / 255],\n  firebrick: [178 / 255, 34 / 255, 34 / 255],\n  floralwhite: [255 / 255, 250 / 255, 240 / 255],\n  forestgreen: [34 / 255, 139 / 255, 34 / 255],\n  // 'fuchsia': [ 255 / 255, 0 / 255, 255 / 255 ],\n  gainsboro: [220 / 255, 220 / 255, 220 / 255],\n  ghostwhite: [248 / 255, 248 / 255, 255 / 255],\n  gold: [255 / 255, 215 / 255, 0 / 255],\n  goldenrod: [218 / 255, 165 / 255, 32 / 255],\n  // 'gray': [ 128 / 255, 128 / 255, 128 / 255 ],\n  // 'green': [ 0 / 255, 128 / 255, 0 / 255 ],\n  greenyellow: [173 / 255, 255 / 255, 47 / 255],\n  grey: [128 / 255, 128 / 255, 128 / 255],\n  honeydew: [240 / 255, 255 / 255, 240 / 255],\n  hotpink: [255 / 255, 105 / 255, 180 / 255],\n  indianred: [205 / 255, 92 / 255, 92 / 255],\n  indigo: [75 / 255, 0 / 255, 130 / 255],\n  ivory: [255 / 255, 255 / 255, 240 / 255],\n  khaki: [240 / 255, 230 / 255, 140 / 255],\n  lavender: [230 / 255, 230 / 255, 250 / 255],\n  lavenderblush: [255 / 255, 240 / 255, 245 / 255],\n  lawngreen: [124 / 255, 252 / 255, 0 / 255],\n  lemonchiffon: [255 / 255, 250 / 255, 205 / 255],\n  lightblue: [173 / 255, 216 / 255, 230 / 255],\n  lightcoral: [240 / 255, 128 / 255, 128 / 255],\n  lightcyan: [224 / 255, 255 / 255, 255 / 255],\n  lightgoldenrodyellow: [250 / 255, 250 / 255, 210 / 255],\n  lightgray: [211 / 255, 211 / 255, 211 / 255],\n  lightgreen: [144 / 255, 238 / 255, 144 / 255],\n  lightgrey: [211 / 255, 211 / 255, 211 / 255],\n  lightpink: [255 / 255, 182 / 255, 193 / 255],\n  lightsalmon: [255 / 255, 160 / 255, 122 / 255],\n  lightseagreen: [32 / 255, 178 / 255, 170 / 255],\n  lightskyblue: [135 / 255, 206 / 255, 250 / 255],\n  lightslategray: [119 / 255, 136 / 255, 153 / 255],\n  lightslategrey: [119 / 255, 136 / 255, 153 / 255],\n  lightsteelblue: [176 / 255, 196 / 255, 222 / 255],\n  lightyellow: [255 / 255, 255 / 255, 224 / 255],\n  // 'lime': [ 0 / 255, 255 / 255, 0 / 255 ],\n  limegreen: [50 / 255, 205 / 255, 50 / 255],\n  linen: [250 / 255, 240 / 255, 230 / 255],\n  magenta: [255 / 255, 0 / 255, 255 / 255],\n  // 'maroon': [ 128 / 255, 0 / 255, 0 / 255 ],\n  mediumaquamarine: [102 / 255, 205 / 255, 170 / 255],\n  mediumblue: [0 / 255, 0 / 255, 205 / 255],\n  mediumorchid: [186 / 255, 85 / 255, 211 / 255],\n  mediumpurple: [147 / 255, 112 / 255, 219 / 255],\n  mediumseagreen: [60 / 255, 179 / 255, 113 / 255],\n  mediumslateblue: [123 / 255, 104 / 255, 238 / 255],\n  mediumspringgreen: [0 / 255, 250 / 255, 154 / 255],\n  mediumturquoise: [72 / 255, 209 / 255, 204 / 255],\n  mediumvioletred: [199 / 255, 21 / 255, 133 / 255],\n  midnightblue: [25 / 255, 25 / 255, 112 / 255],\n  mintcream: [245 / 255, 255 / 255, 250 / 255],\n  mistyrose: [255 / 255, 228 / 255, 225 / 255],\n  moccasin: [255 / 255, 228 / 255, 181 / 255],\n  navajowhite: [255 / 255, 222 / 255, 173 / 255],\n  // 'navy': [ 0 / 255, 0 / 255, 128 / 255 ],\n  oldlace: [253 / 255, 245 / 255, 230 / 255],\n  // 'olive': [ 128 / 255, 128 / 255, 0 / 255 ],\n  olivedrab: [107 / 255, 142 / 255, 35 / 255],\n  orange: [255 / 255, 165 / 255, 0 / 255],\n  orangered: [255 / 255, 69 / 255, 0 / 255],\n  orchid: [218 / 255, 112 / 255, 214 / 255],\n  palegoldenrod: [238 / 255, 232 / 255, 170 / 255],\n  palegreen: [152 / 255, 251 / 255, 152 / 255],\n  paleturquoise: [175 / 255, 238 / 255, 238 / 255],\n  palevioletred: [219 / 255, 112 / 255, 147 / 255],\n  papayawhip: [255 / 255, 239 / 255, 213 / 255],\n  peachpuff: [255 / 255, 218 / 255, 185 / 255],\n  peru: [205 / 255, 133 / 255, 63 / 255],\n  pink: [255 / 255, 192 / 255, 203 / 255],\n  plum: [221 / 255, 160 / 255, 221 / 255],\n  powderblue: [176 / 255, 224 / 255, 230 / 255],\n  // 'purple': [ 128 / 255, 0 / 255, 128 / 255 ],\n  // 'red': [ 255 / 255, 0 / 255, 0 / 255 ],\n  rosybrown: [188 / 255, 143 / 255, 143 / 255],\n  royalblue: [65 / 255, 105 / 255, 225 / 255],\n  saddlebrown: [139 / 255, 69 / 255, 19 / 255],\n  salmon: [250 / 255, 128 / 255, 114 / 255],\n  sandybrown: [244 / 255, 164 / 255, 96 / 255],\n  seagreen: [46 / 255, 139 / 255, 87 / 255],\n  seashell: [255 / 255, 245 / 255, 238 / 255],\n  sienna: [160 / 255, 82 / 255, 45 / 255],\n  // 'silver': [ 192 / 255, 192 / 255, 192 / 255 ],\n  skyblue: [135 / 255, 206 / 255, 235 / 255],\n  slateblue: [106 / 255, 90 / 255, 205 / 255],\n  slategray: [112 / 255, 128 / 255, 144 / 255],\n  slategrey: [112 / 255, 128 / 255, 144 / 255],\n  snow: [255 / 255, 250 / 255, 250 / 255],\n  springgreen: [0 / 255, 255 / 255, 127 / 255],\n  steelblue: [70 / 255, 130 / 255, 180 / 255],\n  tan: [210 / 255, 180 / 255, 140 / 255],\n  // 'teal': [ 0 / 255, 128 / 255, 128 / 255 ],\n  thistle: [216 / 255, 191 / 255, 216 / 255],\n  tomato: [255 / 255, 99 / 255, 71 / 255],\n  turquoise: [64 / 255, 224 / 255, 208 / 255],\n  violet: [238 / 255, 130 / 255, 238 / 255],\n  wheat: [245 / 255, 222 / 255, 179 / 255],\n  // 'white': [ 255 / 255, 255 / 255, 255 / 255 ],\n  whitesmoke: [245 / 255, 245 / 255, 245 / 255],\n  // 'yellow': [ 255 / 255, 255 / 255, 0 / 255 ],\n  yellowgreen: [154 / 255, 205 / 255, 50 / 255]\n}\n\nmodule.exports = cssColors\n","/**\n * Converts CSS color notations (string of hex values) to RGB values.\n *\n * @see https://www.w3.org/TR/css-color-3/\n * @param {String} notation - color notation\n * @return {Array} RGB color values\n * @alias module:modeling/colors.hexToRgb\n *\n * @example\n * let mysphere = colorize(hexToRgb('#000080'), sphere()) // navy blue\n */\nconst hexToRgb = (notation) => {\n  notation = notation.replace('#', '')\n  if (notation.length < 6) throw new Error('the given notation must contain 3 or more hex values')\n\n  const r = parseInt(notation.substring(0, 2), 16) / 255\n  const g = parseInt(notation.substring(2, 4), 16) / 255\n  const b = parseInt(notation.substring(4, 6), 16) / 255\n  if (notation.length >= 8) {\n    const a = parseInt(notation.substring(6, 8), 16) / 255\n    return [r, g, b, a]\n  }\n  return [r, g, b]\n}\n\nmodule.exports = hexToRgb\n","const flatten = require('../utils/flatten')\n\nconst hueToColorComponent = require('./hueToColorComponent')\n\n/**\n * Converts HSL color values to RGB color values.\n *\n * @see http://en.wikipedia.org/wiki/HSL_color_space\n * @param {...Number|Array} values - HSL or HSLA color values\n * @return {Array} RGB or RGBA color values\n * @alias module:modeling/colors.hslToRgb\n *\n * @example\n * let mysphere = colorize(hslToRgb([0.9166666666666666, 1, 0.5]), sphere())\n */\nconst hslToRgb = (...values) => {\n  values = flatten(values)\n  if (values.length < 3) throw new Error('values must contain H, S and L values')\n\n  const h = values[0]\n  const s = values[1]\n  const l = values[2]\n\n  let r = l // default is achromatic\n  let g = l\n  let b = l\n\n  if (s !== 0) {\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s\n    const p = 2 * l - q\n    r = hueToColorComponent(p, q, h + 1 / 3)\n    g = hueToColorComponent(p, q, h)\n    b = hueToColorComponent(p, q, h - 1 / 3)\n  }\n\n  if (values.length > 3) {\n    // add alpha value if provided\n    const a = values[3]\n    return [r, g, b, a]\n  }\n  return [r, g, b]\n}\n\nmodule.exports = hslToRgb\n","const flatten = require('../utils/flatten')\n\n/**\n * Converts HSV color values to RGB color values.\n *\n * @see http://en.wikipedia.org/wiki/HSV_color_space.\n * @param {...Number|Array} values - HSV or HSVA color values\n * @return {Array} RGB or RGBA color values\n * @alias module:modeling/colors.hsvToRgb\n *\n * @example\n * let mysphere = colorize(hsvToRgb([0.9166666666666666, 1, 1]), sphere())\n */\nconst hsvToRgb = (...values) => {\n  values = flatten(values)\n  if (values.length < 3) throw new Error('values must contain H, S and V values')\n\n  const h = values[0]\n  const s = values[1]\n  const v = values[2]\n\n  let r = 0\n  let g = 0\n  let b = 0\n\n  const i = Math.floor(h * 6)\n  const f = h * 6 - i\n  const p = v * (1 - s)\n  const q = v * (1 - f * s)\n  const t = v * (1 - (1 - f) * s)\n\n  switch (i % 6) {\n    case 0:\n      r = v\n      g = t\n      b = p\n      break\n    case 1:\n      r = q\n      g = v\n      b = p\n      break\n    case 2:\n      r = p\n      g = v\n      b = t\n      break\n    case 3:\n      r = p\n      g = q\n      b = v\n      break\n    case 4:\n      r = t\n      g = p\n      b = v\n      break\n    case 5:\n      r = v\n      g = p\n      b = q\n      break\n  }\n\n  if (values.length > 3) {\n    // add alpha value if provided\n    const a = values[3]\n    return [r, g, b, a]\n  }\n  return [r, g, b]\n}\n\nmodule.exports = hsvToRgb\n","/**\n * Convert hue values to a color component (ie one of r, g, b)\n * @param  {Number} p\n * @param  {Number} q\n * @param  {Number} t\n * @return {Number} color component\n * @alias module:modeling/colors.hueToColorComponent\n */\nconst hueToColorComponent = (p, q, t) => {\n  if (t < 0) t += 1\n  if (t > 1) t -= 1\n  if (t < 1 / 6) return p + (q - p) * 6 * t\n  if (t < 1 / 2) return q\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n  return p\n}\n\nmodule.exports = hueToColorComponent\n","/**\n * All shapes (primitives or the results of operations) can be assigned a color (RGBA).\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/colors\n * @example\n * const { colorize, hexToRgb } = require('@jscad/modeling').colors\n */\nmodule.exports = {\n  colorize: require('./colorize'),\n  colorNameToRgb: require('./colorNameToRgb'),\n  cssColors: require('./cssColors'),\n  hexToRgb: require('./hexToRgb'),\n  hslToRgb: require('./hslToRgb'),\n  hsvToRgb: require('./hsvToRgb'),\n  hueToColorComponent: require('./hueToColorComponent'),\n  rgbToHex: require('./rgbToHex'),\n  rgbToHsl: require('./rgbToHsl'),\n  rgbToHsv: require('./rgbToHsv')\n}\n","const flatten = require('../utils/flatten')\n\n/**\n * Convert the given RGB color values to CSS color notation (string)\n * @see https://www.w3.org/TR/css-color-3/\n * @param {...Number|Array} values - RGB or RGBA color values\n * @return {String} CSS color notation\n * @alias module:modeling/colors.rgbToHex\n */\nconst rgbToHex = (...values) => {\n  values = flatten(values)\n  if (values.length < 3) throw new Error('values must contain R, G and B values')\n\n  const r = values[0] * 255\n  const g = values[1] * 255\n  const b = values[2] * 255\n\n  let s = `#${Number(0x1000000 + r * 0x10000 + g * 0x100 + b).toString(16).substring(1, 7)}`\n\n  if (values.length > 3) {\n    // convert alpha to opacity\n    s = s + Number(values[3] * 255).toString(16)\n  }\n  return s\n}\n\nmodule.exports = rgbToHex\n","const flatten = require('../utils/flatten')\n\n/**\n * Converts an RGB color value to HSL.\n *\n * @see http://en.wikipedia.org/wiki/HSL_color_space.\n * @see http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\n * @param {...Number|Array} values - RGB or RGBA color values\n * @return {Array} HSL or HSLA color values\n * @alias module:modeling/colors.rgbToHsl\n */\nconst rgbToHsl = (...values) => {\n  values = flatten(values)\n  if (values.length < 3) throw new Error('values must contain R, G and B values')\n\n  const r = values[0]\n  const g = values[1]\n  const b = values[2]\n\n  const max = Math.max(r, g, b)\n  const min = Math.min(r, g, b)\n  let h\n  let s\n  const l = (max + min) / 2\n\n  if (max === min) {\n    h = s = 0 // achromatic\n  } else {\n    const d = max - min\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0)\n        break\n      case g:\n        h = (b - r) / d + 2\n        break\n      case b:\n        h = (r - g) / d + 4\n        break\n    }\n    h /= 6\n  }\n\n  if (values.length > 3) {\n    // add alpha value if provided\n    const a = values[3]\n    return [h, s, l, a]\n  }\n  return [h, s, l]\n}\n\nmodule.exports = rgbToHsl\n","const flatten = require('../utils/flatten')\n\n/**\n * Converts an RGB color value to HSV.\n *\n * @see http://en.wikipedia.org/wiki/HSV_color_space.\n * @param {...Number|Array} values - RGB or RGBA color values\n * @return {Array} HSV or HSVA color values\n * @alias module:modeling/colors.rgbToHsv\n */\nconst rgbToHsv = (...values) => {\n  values = flatten(values)\n  if (values.length < 3) throw new Error('values must contain R, G and B values')\n\n  const r = values[0]\n  const g = values[1]\n  const b = values[2]\n\n  const max = Math.max(r, g, b)\n  const min = Math.min(r, g, b)\n  let h\n  const v = max\n\n  const d = max - min\n  const s = max === 0 ? 0 : d / max\n\n  if (max === min) {\n    h = 0 // achromatic\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0)\n        break\n      case g:\n        h = (b - r) / d + 2\n        break\n      case b:\n        h = (r - g) / d + 4\n        break\n    }\n    h /= 6\n  }\n\n  if (values.length > 3) {\n    // add alpha if provided\n    const a = values[3]\n    return [h, s, v, a]\n  }\n  return [h, s, v]\n}\n\nmodule.exports = rgbToHsv\n","/**\n * Represents a bezier easing function.\n * @typedef {Object} bezier\n * @property {Array} points - The control points for the bezier curve. The first and last point will also be the start and end of the curve\n * @property {string} pointType - A reference to the type and dimensionality of the points that the curve was created from\n * @property {number} dimensions - The dimensionality of the bezier\n * @property {Array} permutations - A pre-calculation of the bezier algorithm's co-efficients\n * @property {Array} tangentPermutations - A pre-calculation of the bezier algorithm's tangent co-efficients\n *\n */\n\n/**\n * Creates an object representing a bezier easing curve.\n * Curves can have both an arbitrary number of control points, and an arbitrary number of dimensions.\n *\n * @example\n * const b = bezier.create([0,10]) // a linear progression from 0 to 10\n * const b = bezier.create([0, 0, 10, 10]) // a symmetrical cubic easing curve that starts slowly and ends slowly from 0 to 10\n * const b = bezier.create([0,0,0], [0,5,10], [10,0,-5], [10,10,10]]) // a cubic 3 dimensional easing curve that can generate position arrays for modelling\n * // Usage\n * let position = bezier.valueAt(t,b) // where 0 < t < 1\n * let tangent = bezier.tangentAt(t,b) // where 0 < t < 1\n *\n * @param {Array} points An array with at least 2 elements of either all numbers, or all arrays of numbers that are the same size.\n * @returns {bezier} a new bezier data object\n * @alias module:modeling/curves/bezier.create\n */\nconst create = (points) => {\n  if (!Array.isArray(points)) throw new Error('Bezier points must be a valid array/')\n  if (points.length < 2) throw new Error('Bezier points must contain at least 2 values.')\n  const pointType = getPointType(points)\n\n  return {\n    points: points,\n    pointType: pointType,\n    dimensions: pointType === 'float_single' ? 0 : points[0].length,\n    permutations: getPermutations(points.length - 1),\n    tangentPermutations: getPermutations(points.length - 2)\n  }\n}\n\nconst getPointType = function (points) {\n  let firstPointType = null\n  points.forEach((point) => {\n    let pType = ''\n    if (Number.isFinite(point)) {\n      pType = 'float_single'\n    } else if (Array.isArray(point)) {\n      point.forEach((val) => {\n        if (!Number.isFinite(val)) throw new Error('Bezier point values must all be numbers.')\n      })\n      pType = 'float_' + point.length\n    } else throw new Error('Bezier points must all be numbers or arrays of number.')\n    if (firstPointType == null) {\n      firstPointType = pType\n    } else {\n      if (firstPointType !== pType) {\n        throw new Error('Bezier points must be either all numbers or all arrays of numbers of the same size.')\n      }\n    }\n  })\n  return firstPointType\n}\n\nconst getPermutations = function (c) {\n  const permutations = []\n  for (let i = 0; i <= c; i++) {\n    permutations.push(factorial(c) / (factorial(i) * factorial(c - i)))\n  }\n  return permutations\n}\n\nconst factorial = function (b) {\n  let out = 1\n  for (let i = 2; i <= b; i++) {\n    out *= i\n  }\n  return out\n}\n\nmodule.exports = create\n","/**\n * Represents a bezier easing function.\n * @see {@link bezier} for data structure information.\n * @module modeling/curves/bezier\n */\nmodule.exports = {\n  create: require('./create'),\n  valueAt: require('./valueAt'),\n  tangentAt: require('./tangentAt')\n}\n","/**\n * Calculates the tangent at a specific position along a bezier easing curve.\n * For multidimensional curves, the tangent is the slope of each dimension at that point.\n * See the example called extrudeAlongPath.js\n *\n * @example\n * const b = bezier.create([[0,0,0], [0,5,10], [10,0,-5], [10,10,10]]) // a cubic 3 dimensional easing curve that can generate position arrays for modelling\n * let tangent = bezier.tangentAt(t, b)\n *\n * @param {number} t : the position of which to calculate the bezier's tangent value; 0 < t < 1\n * @param {Object} bezier : an array with at least 2 elements of either all numbers, or all arrays of numbers that are the same size.\n * @return {array | number} the tangent at the requested position.\n * @alias module:modeling/curves/bezier.tangentAt\n */\nconst tangentAt = (t, bezier) => {\n  if (t < 0 || t > 1) {\n    throw new Error('Bezier tangentAt() input must be between 0 and 1')\n  }\n  if (bezier.pointType === 'float_single') {\n    return bezierTangent(bezier, bezier.points, t)\n  } else {\n    const result = []\n    for (let i = 0; i < bezier.dimensions; i++) {\n      const singleDimensionPoints = []\n      for (let j = 0; j < bezier.points.length; j++) {\n        singleDimensionPoints.push(bezier.points[j][i])\n      }\n      result.push(bezierTangent(bezier, singleDimensionPoints, t))\n    }\n    return result\n  }\n}\n\nconst bezierTangent = function (bezier, p, t) {\n  // from https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-der.html\n  const n = p.length - 1\n  let result = 0\n  for (let i = 0; i < n; i++) {\n    const q = n * (p[i + 1] - p[i])\n    result += bezier.tangentPermutations[i] * Math.pow(1 - t, n - 1 - i) * Math.pow(t, i) * q\n  }\n  return result\n}\n\nmodule.exports = tangentAt\n","/**\n * Calculates the value at a specific position along a bezier easing curve.\n * For multidimensional curves, the tangent is the slope of each dimension at that point.\n * See the example called extrudeAlongPath.js to see this in use.\n * Math and explanation comes from {@link https://www.freecodecamp.org/news/nerding-out-with-bezier-curves-6e3c0bc48e2f/}\n *\n * @example\n * const b = bezier.create([0,0,0], [0,5,10], [10,0,-5], [10,10,10]]) // a cubic 3 dimensional easing curve that can generate position arrays for modelling\n * let position = bezier.valueAt(t,b) // where 0 < t < 1\n *\n * @param {number} t : the position of which to calculate the value; 0 < t < 1\n * @param {Object} bezier : a bezier curve created with bezier.create().\n * @returns {array | number} the value at the requested position.\n * @alias module:modeling/curves/bezier.valueAt\n */\nconst valueAt = (t, bezier) => {\n  if (t < 0 || t > 1) {\n    throw new Error('Bezier valueAt() input must be between 0 and 1')\n  }\n  if (bezier.pointType === 'float_single') {\n    return bezierFunction(bezier, bezier.points, t)\n  } else {\n    const result = []\n    for (let i = 0; i < bezier.dimensions; i++) {\n      const singleDimensionPoints = []\n      for (let j = 0; j < bezier.points.length; j++) {\n        singleDimensionPoints.push(bezier.points[j][i])\n      }\n      result.push(bezierFunction(bezier, singleDimensionPoints, t))\n    }\n    return result\n  }\n}\n\nconst bezierFunction = function (bezier, p, t) {\n  const n = p.length - 1\n  let result = 0\n  for (let i = 0; i <= n; i++) {\n    result += bezier.permutations[i] * Math.pow(1 - t, n - i) * Math.pow(t, i) * p[i]\n  }\n  return result\n}\n\nmodule.exports = valueAt\n","/**\n * Curves are n-dimensional mathematical constructs that define a path from point 0 to point 1.\n * @module modeling/curves\n * @example\n * const { bezier } = require('@jscad/modeling').curves\n\n */\nmodule.exports = {\n  bezier: require('./bezier')\n}\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\n/*\n * Apply the transforms of the given geometry.\n * NOTE: This function must be called BEFORE exposing any data. See toSides().\n * @param {geom2} geometry - the geometry to transform\n * @returns {geom2} the given geometry\n *\n * @example\n * geometry = applyTransforms(geometry)\n */\nconst applyTransforms = (geometry) => {\n  if (mat4.isIdentity(geometry.transforms)) return geometry\n\n  // apply transforms to each side\n  geometry.sides = geometry.sides.map((side) => {\n    const p0 = vec2.transform(vec2.create(), side[0], geometry.transforms)\n    const p1 = vec2.transform(vec2.create(), side[1], geometry.transforms)\n    return [p0, p1]\n  })\n  geometry.transforms = mat4.create()\n  return geometry\n}\n\nmodule.exports = applyTransforms\n","/**\n * Performs a shallow clone of the given geometry.\n * @param {geom2} geometry - the geometry to clone\n * @returns {geom2} new geometry\n * @alias module:modeling/geometries/geom2.clone\n */\nconst clone = (geometry) => Object.assign({}, geometry)\n\nmodule.exports = clone\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Represents a 2D geometry consisting of a list of sides.\n * @typedef {Object} geom2\n * @property {Array} sides - list of sides, each side containing two points\n * @property {mat4} transforms - transforms to apply to the sides, see transform()\n */\n\n/**\n * Create a new 2D geometry composed of unordered sides (two connected points).\n * @param {Array} [sides] - list of sides where each side is an array of two points\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.create\n */\nconst create = (sides) => {\n  if (sides === undefined) {\n    sides = [] // empty contents\n  }\n  return {\n    sides: sides,\n    transforms: mat4.create()\n  }\n}\n\nmodule.exports = create\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\nconst create = require('./create')\n\n/**\n * Create a new 2D geometry from the given compact binary data.\n * @param {Array} data - compact binary data\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.fromCompactBinary\n */\nconst fromCompactBinary = (data) => {\n  if (data[0] !== 0) throw new Error('invalid compact binary data')\n\n  const created = create()\n\n  created.transforms = mat4.clone(data.slice(1, 17))\n\n  for (let i = 21; i < data.length; i += 4) {\n    const point0 = vec2.fromValues(data[i + 0], data[i + 1])\n    const point1 = vec2.fromValues(data[i + 2], data[i + 3])\n    created.sides.push([point0, point1])\n  }\n  // transfer known properties, i.e. color\n  if (data[17] >= 0) {\n    created.color = [data[17], data[18], data[19], data[20]]\n  }\n  // TODO: how about custom properties or fields ?\n  return created\n}\n\nmodule.exports = fromCompactBinary\n","const vec2 = require('../../maths/vec2')\n\nconst create = require('./create')\n\n/**\n * Create a new 2D geometry from the given points.\n * The direction (rotation) of the points is not relevant,\n * as the points can define a convex or a concave polygon.\n * The geometry must not self intersect, i.e. the sides cannot cross.\n * @param {Array} points - list of points in 2D space\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.fromPoints\n */\nconst fromPoints = (points) => {\n  if (!Array.isArray(points)) {\n    throw new Error('the given points must be an array')\n  }\n  let length = points.length\n  if (length < 3) {\n    throw new Error('the given points must define a closed geometry with three or more points')\n  }\n  // adjust length if the given points are closed by the same point\n  if (vec2.equals(points[0], points[length - 1])) --length\n\n  const sides = []\n  let prevpoint = points[length - 1]\n  for (let i = 0; i < length; i++) {\n    const point = points[i]\n    sides.push([vec2.clone(prevpoint), vec2.clone(point)])\n    prevpoint = point\n  }\n  return create(sides)\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a 2D geometry consisting of a list of sides.\n * @see {@link geom2} for data structure information.\n * @module modeling/geometries/geom2\n *\n * @example\n * colorize([0.5,0,1,1], square()) // purple square\n *\n * @example\n * {\n *   \"sides\": [[[-1,1],[-1,-1]],[[-1,-1],[1,-1]],[[1,-1],[1,1]],[[1,1],[-1,1]]],\n *   \"transforms\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n *   \"color\": [0.5,0,1,1]\n * }\n */\nmodule.exports = {\n  clone: require('./clone'),\n  create: require('./create'),\n  fromPoints: require('./fromPoints'),\n  fromCompactBinary: require('./fromCompactBinary'),\n  isA: require('./isA'),\n  reverse: require('./reverse'),\n  toOutlines: require('./toOutlines'),\n  toPoints: require('./toPoints'),\n  toSides: require('./toSides'),\n  toString: require('./toString'),\n  toCompactBinary: require('./toCompactBinary'),\n  transform: require('./transform'),\n  validate: require('./validate')\n}\n","/**\n * Determine if the given object is a 2D geometry.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true, if the object matches a geom2 based object\n * @alias module:modeling/geometries/geom2.isA\n */\nconst isA = (object) => {\n  if (object && typeof object === 'object') {\n    if ('sides' in object && 'transforms' in object) {\n      if (Array.isArray(object.sides) && 'length' in object.transforms) {\n        return true\n      }\n    }\n  }\n  return false\n}\n\nmodule.exports = isA\n","const create = require('./create')\nconst toSides = require('./toSides')\n\n/**\n * Reverses the given geometry so that the sides are flipped in the opposite order.\n * This swaps the left (interior) and right (exterior) edges.\n * @param {geom2} geometry - the geometry to reverse\n * @returns {geom2} the new reversed geometry\n * @alias module:modeling/geometries/geom2.reverse\n *\n * @example\n * let newgeometry = reverse(geometry)\n */\nconst reverse = (geometry) => {\n  const oldsides = toSides(geometry)\n\n  const newsides = oldsides.map((side) => [side[1], side[0]])\n  newsides.reverse() // is this required?\n  return create(newsides)\n}\n\nmodule.exports = reverse\n","/**\n * Produces a compact binary representation from the given geometry.\n * @param {geom2} geometry - the geometry\n * @returns {TypedArray} compact binary representation\n * @alias module:modeling/geometries/geom2.toCompactBinary\n */\nconst toCompactBinary = (geometry) => {\n  const sides = geometry.sides\n  const transforms = geometry.transforms\n  let color = [-1, -1, -1, -1]\n  if (geometry.color) color = geometry.color\n\n  // FIXME why Float32Array?\n  const compacted = new Float32Array(1 + 16 + 4 + (sides.length * 4)) // type + transforms + color + sides data\n\n  compacted[0] = 0 // type code: 0 => geom2, 1 => geom3 , 2 => path2\n\n  compacted[1] = transforms[0]\n  compacted[2] = transforms[1]\n  compacted[3] = transforms[2]\n  compacted[4] = transforms[3]\n  compacted[5] = transforms[4]\n  compacted[6] = transforms[5]\n  compacted[7] = transforms[6]\n  compacted[8] = transforms[7]\n  compacted[9] = transforms[8]\n  compacted[10] = transforms[9]\n  compacted[11] = transforms[10]\n  compacted[12] = transforms[11]\n  compacted[13] = transforms[12]\n  compacted[14] = transforms[13]\n  compacted[15] = transforms[14]\n  compacted[16] = transforms[15]\n\n  compacted[17] = color[0]\n  compacted[18] = color[1]\n  compacted[19] = color[2]\n  compacted[20] = color[3]\n\n  for (let i = 0; i < sides.length; i++) {\n    const ci = i * 4 + 21\n    const point0 = sides[i][0]\n    const point1 = sides[i][1]\n    compacted[ci + 0] = point0[0]\n    compacted[ci + 1] = point0[1]\n    compacted[ci + 2] = point1[0]\n    compacted[ci + 3] = point1[1]\n  }\n  // TODO: how about custom properties or fields ?\n  return compacted\n}\n\nmodule.exports = toCompactBinary\n","const vec2 = require('../../maths/vec2')\n\nconst toSides = require('./toSides')\n\n/*\n * Create a list of edges which SHARE vertices.\n * This allows the edges to be traversed in order.\n */\nconst toSharedVertices = (sides) => {\n  const unique = new Map() // {key: vertex}\n  const getUniqueVertex = (vertex) => {\n    const key = vertex.toString()\n    if (unique.has(key)) {\n      return unique.get(key)\n    } else {\n      unique.set(key, vertex)\n      return vertex\n    }\n  }\n\n  return sides.map((side) => side.map(getUniqueVertex))\n}\n\n/*\n * Convert a list of sides into a map from vertex to edges.\n */\nconst toVertexMap = (sides) => {\n  const vertexMap = new Map()\n  // first map to edges with shared vertices\n  const edges = toSharedVertices(sides)\n  // construct adjacent edges map\n  edges.forEach((edge) => {\n    if (vertexMap.has(edge[0])) {\n      vertexMap.get(edge[0]).push(edge)\n    } else {\n      vertexMap.set(edge[0], [edge])\n    }\n  })\n  return vertexMap\n}\n\n/**\n * Create the outline(s) of the given geometry.\n * @param {geom2} geometry - geometry to create outlines from\n * @returns {Array} an array of outlines, where each outline is an array of ordered points\n * @alias module:modeling/geometries/geom2.toOutlines\n *\n * @example\n * let geometry = subtract(rectangle({size: [5, 5]}), rectangle({size: [3, 3]}))\n * let outlines = toOutlines(geometry) // returns two outlines\n */\nconst toOutlines = (geometry) => {\n  const vertexMap = toVertexMap(toSides(geometry)) // {vertex: [edges]}\n  const outlines = []\n  while (true) {\n    let startSide\n    for (const [vertex, edges] of vertexMap) {\n      startSide = edges.shift()\n      if (!startSide) {\n        vertexMap.delete(vertex)\n        continue\n      }\n      break\n    }\n    if (startSide === undefined) break // all starting sides have been visited\n\n    const connectedVertexPoints = []\n    const startVertex = startSide[0]\n    while (true) {\n      connectedVertexPoints.push(startSide[0])\n      const nextVertex = startSide[1]\n      if (nextVertex === startVertex) break // the outline has been closed\n      const nextPossibleSides = vertexMap.get(nextVertex)\n      if (!nextPossibleSides) {\n        throw new Error(`geometry is not closed at vertex ${nextVertex}`)\n      }\n      const nextSide = popNextSide(startSide, nextPossibleSides)\n      if (nextPossibleSides.length === 0) {\n        vertexMap.delete(nextVertex)\n      }\n      startSide = nextSide\n    } // inner loop\n\n    // due to the logic of fromPoints()\n    // move the first point to the last\n    if (connectedVertexPoints.length > 0) {\n      connectedVertexPoints.push(connectedVertexPoints.shift())\n    }\n    outlines.push(connectedVertexPoints)\n  } // outer loop\n  vertexMap.clear()\n  return outlines\n}\n\n// find the first counter-clockwise edge from startSide and pop from nextSides\nconst popNextSide = (startSide, nextSides) => {\n  if (nextSides.length === 1) {\n    return nextSides.pop()\n  }\n  const v0 = vec2.create()\n  const startAngle = vec2.angleDegrees(vec2.subtract(v0, startSide[1], startSide[0]))\n  let bestAngle\n  let bestIndex\n  nextSides.forEach((nextSide, index) => {\n    const nextAngle = vec2.angleDegrees(vec2.subtract(v0, nextSide[1], nextSide[0]))\n    let angle = nextAngle - startAngle\n    if (angle < -180) angle += 360\n    if (angle >= 180) angle -= 360\n    if (bestIndex === undefined || angle > bestAngle) {\n      bestIndex = index\n      bestAngle = angle\n    }\n  })\n  const nextSide = nextSides[bestIndex]\n  nextSides.splice(bestIndex, 1) // remove side from list\n  return nextSide\n}\n\nmodule.exports = toOutlines\n","const toSides = require('./toSides')\n\n/**\n * Produces an array of points from the given geometry.\n * The returned array should not be modified as the points are shared with the geometry.\n * NOTE: The points returned do NOT define an order. Use toOutlines() for ordered points.\n * @param {geom2} geometry - the geometry\n * @returns {Array} an array of points\n * @alias module:modeling/geometries/geom2.toPoints\n *\n * @example\n * let sharedpoints = toPoints(geometry)\n */\nconst toPoints = (geometry) => {\n  const sides = toSides(geometry)\n  const points = sides.map((side) => side[0])\n  // due to the logic of fromPoints()\n  // move the first point to the last\n  if (points.length > 0) {\n    points.push(points.shift())\n  }\n  return points\n}\n\nmodule.exports = toPoints\n","const applyTransforms = require('./applyTransforms')\n\n/**\n * Produces an array of sides from the given geometry.\n * The returned array should not be modified as the data is shared with the geometry.\n * NOTE: The sides returned do NOT define an order. Use toOutlines() for ordered points.\n * @param {geom2} geometry - the geometry\n * @returns {Array} an array of sides\n * @alias module:modeling/geometries/geom2.toSides\n *\n * @example\n * let sharedsides = toSides(geometry)\n */\nconst toSides = (geometry) => applyTransforms(geometry).sides\n\nmodule.exports = toSides\n","const vec2 = require('../../maths/vec2')\n\nconst toSides = require('./toSides')\n\n/**\n * Create a string representing the contents of the given geometry.\n * @param {geom2} geometry - the geometry\n * @returns {String} a representative string\n * @alias module:modeling/geometries/geom2.toString\n *\n * @example\n * console.out(toString(geometry))\n */\nconst toString = (geometry) => {\n  const sides = toSides(geometry)\n  let result = 'geom2 (' + sides.length + ' sides):\\n[\\n'\n  sides.forEach((side) => {\n    result += '  [' + vec2.toString(side[0]) + ', ' + vec2.toString(side[1]) + ']\\n'\n  })\n  result += ']\\n'\n  return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Transform the given geometry using the given matrix.\n * This is a lazy transform of the sides, as this function only adjusts the transforms.\n * The transforms are applied when accessing the sides via toSides().\n * @param {mat4} matrix - the matrix to transform with\n * @param {geom2} geometry - the geometry to transform\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.transform\n *\n * @example\n * let newgeometry = transform(fromZRotation(degToRad(90)), geometry)\n */\nconst transform = (matrix, geometry) => {\n  const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms)\n  return Object.assign({}, geometry, { transforms })\n}\n\nmodule.exports = transform\n","const vec2 = require('../../maths/vec2')\nconst isA = require('./isA')\nconst toOutlines = require('./toOutlines')\n\n/**\n * Determine if the given object is a valid geom2.\n * Checks for closedness, self-edges, and valid data points.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/geom2.validate\n */\nconst validate = (object) => {\n  if (!isA(object)) {\n    throw new Error('invalid geom2 structure')\n  }\n\n  // check for closedness\n  toOutlines(object)\n\n  // check for self-edges\n  object.sides.forEach((side) => {\n    if (vec2.equals(side[0], side[1])) {\n      throw new Error(`geom2 self-edge ${side[0]}`)\n    }\n  })\n\n  // check transforms\n  if (!object.transforms.every(Number.isFinite)) {\n    throw new Error(`geom2 invalid transforms ${object.transforms}`)\n  }\n}\n\nmodule.exports = validate\n","const mat4 = require('../../maths/mat4')\n\nconst poly3 = require('../poly3')\n\n/*\n * Apply the transforms of the given geometry.\n * NOTE: This function must be called BEFORE exposing any data. See toPolygons.\n * @param {geom3} geometry - the geometry to transform\n * @returns {geom3} the given geometry\n * @example\n * geometry = applyTransforms(geometry)\n */\nconst applyTransforms = (geometry) => {\n  if (mat4.isIdentity(geometry.transforms)) return geometry\n\n  // apply transforms to each polygon\n  // const isMirror = mat4.isMirroring(geometry.transforms)\n  // TBD if (isMirror) newvertices.reverse()\n  geometry.polygons = geometry.polygons.map((polygon) => poly3.transform(geometry.transforms, polygon))\n  geometry.transforms = mat4.create()\n  return geometry\n}\n\nmodule.exports = applyTransforms\n","/**\n * Performs a shallow clone of the given geometry.\n * @param {geom3} geometry - the geometry to clone\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.clone\n */\nconst clone = (geometry) => Object.assign({}, geometry)\n\nmodule.exports = clone\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Represents a 3D geometry consisting of a list of polygons.\n * @typedef {Object} geom3\n * @property {Array} polygons - list of polygons, each polygon containing three or more points\n * @property {mat4} transforms - transforms to apply to the polygons, see transform()\n */\n\n/**\n * Create a new 3D geometry composed of the given polygons.\n * @param {Array} [polygons] - list of polygons, or undefined\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.create\n */\nconst create = (polygons) => {\n  if (polygons === undefined) {\n    polygons = [] // empty contents\n  }\n  return {\n    polygons,\n    transforms: mat4.create()\n  }\n}\n\nmodule.exports = create\n","const vec3 = require('../../maths/vec3')\nconst mat4 = require('../../maths/mat4')\n\nconst poly3 = require('../poly3')\n\nconst create = require('./create')\n\n/**\n * Construct a new 3D geometry from the given compact binary data.\n * @param {TypedArray} data - compact binary data\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.fromCompactBinary\n */\nconst fromCompactBinary = (data) => {\n  if (data[0] !== 1) throw new Error('invalid compact binary data')\n\n  const created = create()\n\n  created.transforms = mat4.clone(data.slice(1, 17))\n\n  const numberOfVertices = data[21]\n  let ci = 22\n  let vi = data.length - (numberOfVertices * 3)\n  while (vi < data.length) {\n    const verticesPerPolygon = data[ci]\n    ci++\n\n    const vertices = []\n    for (let i = 0; i < verticesPerPolygon; i++) {\n      vertices.push(vec3.fromValues(data[vi], data[vi + 1], data[vi + 2]))\n      vi += 3\n    }\n    created.polygons.push(poly3.create(vertices))\n  }\n\n  // transfer known properties, i.e. color\n  if (data[17] >= 0) {\n    created.color = [data[17], data[18], data[19], data[20]]\n  }\n  // TODO: how about custom properties or fields ?\n  return created\n}\n\nmodule.exports = fromCompactBinary\n","const poly3 = require('../poly3')\n\nconst create = require('./create')\n\n/**\n * Construct a new 3D geometry from a list of points.\n * The list of points should contain sub-arrays, each defining a single polygon of points.\n * In addition, the points should follow the right-hand rule for rotation in order to\n * define an external facing polygon.\n * @param {Array} listofpoints - list of lists, where each list is a set of points to construct a polygon\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.fromPoints\n */\nconst fromPoints = (listofpoints) => {\n  if (!Array.isArray(listofpoints)) {\n    throw new Error('the given points must be an array')\n  }\n\n  const polygons = listofpoints.map((points, index) => {\n    // TODO catch the error, and rethrow with index\n    const polygon = poly3.create(points)\n    return polygon\n  })\n  const result = create(polygons)\n  return result\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a 3D geometry consisting of a list of polygons.\n * @see {@link geom3} for data structure information.\n * @module modeling/geometries/geom3\n *\n * @example\n * colorize([0,0.5,1,0.6], cube()) // transparent ice cube\n *\n * @example\n * {\n *   \"polygons\": [\n *     {\"vertices\": [[-1,-1,-1], [-1,-1,1], [-1,1,1], [-1,1,-1]]},\n *     {\"vertices\": [[1,-1,-1], [1,1,-1], [1,1,1], [1,-1,1]]},\n *     {\"vertices\": [[-1,-1,-1], [1,-1,-1], [1,-1,1], [-1,-1,1]]},\n *     {\"vertices\": [[-1,1,-1], [-1,1,1], [1,1,1], [1,1,-1]]},\n *     {\"vertices\": [[-1,-1,-1], [-1,1,-1], [1,1,-1], [1,-1,-1]]},\n *     {\"vertices\": [[-1,-1,1], [1,-1,1], [1,1,1], [-1,1,1]]}\n *   ],\n *   \"transforms\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n *   \"color\": [0,0.5,1,0.6]\n * }\n */\nmodule.exports = {\n  clone: require('./clone'),\n  create: require('./create'),\n  fromPoints: require('./fromPoints'),\n  fromCompactBinary: require('./fromCompactBinary'),\n  invert: require('./invert'),\n  isA: require('./isA'),\n  toPoints: require('./toPoints'),\n  toPolygons: require('./toPolygons'),\n  toString: require('./toString'),\n  toCompactBinary: require('./toCompactBinary'),\n  transform: require('./transform'),\n  validate: require('./validate')\n}\n","const poly3 = require('../poly3')\n\nconst create = require('./create')\nconst toPolygons = require('./toPolygons')\n\n/**\n * Invert the given geometry, transposing solid and empty space.\n * @param {geom3} geometry - the geometry to invert\n * @return {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.invert\n */\nconst invert = (geometry) => {\n  const polygons = toPolygons(geometry)\n  const newpolygons = polygons.map((polygon) => poly3.invert(polygon))\n  return create(newpolygons)\n}\n\nmodule.exports = invert\n","/**\n * Determine if the given object is a 3D geometry.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true if the object matches a geom3\n * @alias module:modeling/geometries/geom3.isA\n */\nconst isA = (object) => {\n  if (object && typeof object === 'object') {\n    if ('polygons' in object && 'transforms' in object) {\n      if (Array.isArray(object.polygons) && 'length' in object.transforms) {\n        return true\n      }\n    }\n  }\n  return false\n}\n\nmodule.exports = isA\n","const poly3 = require('../poly3')\n\n/**\n * Return the given geometry in compact binary representation.\n * @param {geom3} geometry - the geometry\n * @return {TypedArray} compact binary representation\n * @alias module:modeling/geometries/geom3.toCompactBinary\n */\nconst toCompactBinary = (geometry) => {\n  const polygons = geometry.polygons\n  const transforms = geometry.transforms\n\n  const numberOfPolygons = polygons.length\n  const numberOfVertices = polygons.reduce((count, polygon) => count + polygon.vertices.length, 0)\n  let color = [-1, -1, -1, -1]\n  if (geometry.color) color = geometry.color\n\n  // FIXME why Float32Array?\n  const compacted = new Float32Array(1 + 16 + 4 + 1 + numberOfPolygons + (numberOfVertices * 3))\n  // type + transforms + color + numberOfPolygons + numberOfVerticesPerPolygon[] + vertices data[]\n\n  compacted[0] = 1 // type code: 0 => geom2, 1 => geom3 , 2 => path2\n\n  compacted[1] = transforms[0]\n  compacted[2] = transforms[1]\n  compacted[3] = transforms[2]\n  compacted[4] = transforms[3]\n  compacted[5] = transforms[4]\n  compacted[6] = transforms[5]\n  compacted[7] = transforms[6]\n  compacted[8] = transforms[7]\n  compacted[9] = transforms[8]\n  compacted[10] = transforms[9]\n  compacted[11] = transforms[10]\n  compacted[12] = transforms[11]\n  compacted[13] = transforms[12]\n  compacted[14] = transforms[13]\n  compacted[15] = transforms[14]\n  compacted[16] = transforms[15]\n\n  compacted[17] = color[0]\n  compacted[18] = color[1]\n  compacted[19] = color[2]\n  compacted[20] = color[3]\n\n  compacted[21] = numberOfVertices\n\n  let ci = 22\n  let vi = ci + numberOfPolygons\n  polygons.forEach((polygon) => {\n    const points = poly3.toPoints(polygon)\n    // record the number of vertices per polygon\n    compacted[ci] = points.length\n    ci++\n    // convert the vertices\n    for (let i = 0; i < points.length; i++) {\n      const point = points[i]\n      compacted[vi + 0] = point[0]\n      compacted[vi + 1] = point[1]\n      compacted[vi + 2] = point[2]\n      vi += 3\n    }\n  })\n  // TODO: how about custom properties or fields ?\n  return compacted\n}\n\nmodule.exports = toCompactBinary\n","const poly3 = require('../poly3')\n\nconst toPolygons = require('./toPolygons')\n\n/**\n * Return the given geometry as a list of points, after applying transforms.\n * The returned array should not be modified as the points are shared with the geometry.\n * @param {geom3} geometry - the geometry\n * @return {Array} list of points, where each sub-array represents a polygon\n * @alias module:modeling/geometries/geom3.toPoints\n */\nconst toPoints = (geometry) => {\n  const polygons = toPolygons(geometry)\n  const listofpoints = polygons.map((polygon) => poly3.toPoints(polygon))\n  return listofpoints\n}\n\nmodule.exports = toPoints\n","const applyTransforms = require('./applyTransforms')\n\n/**\n * Produces an array of polygons from the given geometry, after applying transforms.\n * The returned array should not be modified as the polygons are shared with the geometry.\n * @param {geom3} geometry - the geometry\n * @returns {Array} an array of polygons\n * @alias module:modeling/geometries/geom3.toPolygons\n *\n * @example\n * let sharedpolygons = toPolygons(geometry)\n */\nconst toPolygons = (geometry) => applyTransforms(geometry).polygons\n\nmodule.exports = toPolygons\n","const poly3 = require('../poly3')\n\nconst toPolygons = require('./toPolygons')\n\n/**\n * Create a string representing the contents of the given geometry.\n * @param {geom3} geometry - the geometry\n * @returns {String} a representative string\n * @alias module:modeling/geometries/geom3.toString\n *\n * @example\n * console.out(toString(geometry))\n */\nconst toString = (geometry) => {\n  const polygons = toPolygons(geometry)\n  let result = 'geom3 (' + polygons.length + ' polygons):\\n'\n  polygons.forEach((polygon) => {\n    result += '  ' + poly3.toString(polygon) + '\\n'\n  })\n  return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Transform the given geometry using the given matrix.\n * This is a lazy transform of the polygons, as this function only adjusts the transforms.\n * See applyTransforms() for the actual application of the transforms to the polygons.\n * @param {mat4} matrix - the matrix to transform with\n * @param {geom3} geometry - the geometry to transform\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.transform\n *\n * @example\n * let newgeometry = transform(fromXRotation(degToRad(90)), geometry)\n */\nconst transform = (matrix, geometry) => {\n  const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms)\n  return Object.assign({}, geometry, { transforms })\n}\n\nmodule.exports = transform\n","const poly3 = require('../poly3')\nconst isA = require('./isA')\n\n/**\n * Determine if the given object is a valid 3D geometry.\n * Checks for valid data structure, convex polygon faces, and manifold edges.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/geom3.validate\n */\nconst validate = (object) => {\n  if (!isA(object)) {\n    throw new Error('invalid geom3 structure')\n  }\n\n  // check polygons\n  object.polygons.forEach(poly3.validate)\n  validateManifold(object)\n\n  // check transforms\n  if (!object.transforms.every(Number.isFinite)) {\n    throw new Error(`geom3 invalid transforms ${object.transforms}`)\n  }\n\n  // TODO: check for self-intersecting\n}\n\n/*\n * Check manifold edge condition: Every edge is in exactly 2 faces\n */\nconst validateManifold = (object) => {\n  // count of each edge\n  const edgeCount = new Map()\n  object.polygons.forEach(({ vertices }) => {\n    vertices.forEach((v, i) => {\n      const v1 = `${v}`\n      const v2 = `${vertices[(i + 1) % vertices.length]}`\n      // sort for undirected edge\n      const edge = `${v1}/${v2}`\n      const count = edgeCount.has(edge) ? edgeCount.get(edge) : 0\n      edgeCount.set(edge, count + 1)\n    })\n  })\n\n  // check that edges are always matched\n  const nonManifold = []\n  edgeCount.forEach((count, edge) => {\n    const complementEdge = edge.split('/').reverse().join('/')\n    const complementCount = edgeCount.get(complementEdge)\n    if (count !== complementCount) {\n      nonManifold.push(edge.replace('/', ' -> '))\n    }\n  })\n  if (nonManifold.length > 0) {\n    throw new Error(`non-manifold edges ${nonManifold.length}\\n${nonManifold.join('\\n')}`)\n  }\n}\n\nmodule.exports = validate\n","/**\n * Geometries are objects that represent the contents of primitives or the results of operations.\n * Note: Geometries are considered immutable, so never change the contents directly.\n *\n * @see {@link geom2} - 2D geometry consisting of sides\n * @see {@link geom3} - 3D geometry consisting of polygons\n * @see {@link path2} - 2D geometry consisting of ordered points\n * @see {@link poly2} - 2D polygon consisting of ordered vertices\n * @see {@link poly3} - 3D polygon consisting of ordered vertices\n *\n * @module modeling/geometries\n * @example\n * const { geom2, geom3, path2, poly2, poly3 } = require('@jscad/modeling').geometries\n */\nmodule.exports = {\n  geom2: require('./geom2'),\n  geom3: require('./geom3'),\n  path2: require('./path2'),\n  poly2: require('./poly2'),\n  poly3: require('./poly3')\n}\n","const vec2 = require('../../maths/vec2')\n\nconst fromPoints = require('./fromPoints')\nconst toPoints = require('./toPoints')\n\n/**\n * Append a series of points to the given geometry that represent an arc.\n * This implementation follows the SVG specifications.\n * @see http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands\n * @param {Object} options - options for construction\n * @param {vec2} options.endpoint - end point of arc (REQUIRED)\n * @param {vec2} [options.radius=[0,0]] - radius of arc (X and Y)\n * @param {Number} [options.xaxisrotation=0] - rotation (RADIANS) of the X axis of the arc with respect to the X axis of the coordinate system\n * @param {Boolean} [options.clockwise=false] - draw an arc clockwise with respect to the center point\n * @param {Boolean} [options.large=false] - draw an arc longer than PI radians\n * @param {Number} [options.segments=16] - number of segments per full rotation\n * @param {path2} geometry - the path of which to append the arc\n * @returns {path2} a new path with the appended points\n * @alias module:modeling/geometries/path2.appendArc\n *\n * @example\n * let p1 = path2.fromPoints({}, [[27.5,-22.96875]]);\n * p1 = path2.appendPoints([[27.5,-3.28125]], p1);\n * p1 = path2.appendArc({endpoint: [12.5, -22.96875], radius: [15, -19.6875]}, p1);\n */\nconst appendArc = (options, geometry) => {\n  const defaults = {\n    radius: [0, 0], // X and Y radius\n    xaxisrotation: 0,\n    clockwise: false,\n    large: false,\n    segments: 16\n  }\n  let { endpoint, radius, xaxisrotation, clockwise, large, segments } = Object.assign({}, defaults, options)\n\n  // validate the given options\n  if (!Array.isArray(endpoint)) throw new Error('endpoint must be an array of X and Y values')\n  if (endpoint.length < 2) throw new Error('endpoint must contain X and Y values')\n  endpoint = vec2.clone(endpoint)\n\n  if (!Array.isArray(radius)) throw new Error('radius must be an array of X and Y values')\n  if (radius.length < 2) throw new Error('radius must contain X and Y values')\n\n  if (segments < 4) throw new Error('segments must be four or more')\n\n  const decimals = 100000\n\n  // validate the given geometry\n  if (geometry.isClosed) {\n    throw new Error('the given path cannot be closed')\n  }\n\n  const points = toPoints(geometry)\n  if (points.length < 1) {\n    throw new Error('the given path must contain one or more points (as the starting point for the arc)')\n  }\n\n  let xradius = radius[0]\n  let yradius = radius[1]\n  const startpoint = points[points.length - 1]\n\n  // round to precision in order to have determinate calculations\n  xradius = Math.round(xradius * decimals) / decimals\n  yradius = Math.round(yradius * decimals) / decimals\n  endpoint = vec2.fromValues(Math.round(endpoint[0] * decimals) / decimals, Math.round(endpoint[1] * decimals) / decimals)\n\n  const sweepFlag = !clockwise\n  let newpoints = []\n  if ((xradius === 0) || (yradius === 0)) {\n    // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes:\n    // If rx = 0 or ry = 0, then treat this as a straight line from (x1, y1) to (x2, y2) and stop\n    newpoints.push(endpoint)\n  } else {\n    xradius = Math.abs(xradius)\n    yradius = Math.abs(yradius)\n\n    // see http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes :\n    const phi = xaxisrotation\n    const cosphi = Math.cos(phi)\n    const sinphi = Math.sin(phi)\n    const minushalfdistance = vec2.subtract(vec2.create(), startpoint, endpoint)\n    vec2.scale(minushalfdistance, minushalfdistance, 0.5)\n    // F.6.5.1:\n    // round to precision in order to have determinate calculations\n    const x = Math.round((cosphi * minushalfdistance[0] + sinphi * minushalfdistance[1]) * decimals) / decimals\n    const y = Math.round((-sinphi * minushalfdistance[0] + cosphi * minushalfdistance[1]) * decimals) / decimals\n    const startTranslated = vec2.fromValues(x, y)\n    // F.6.6.2:\n    const biglambda = (startTranslated[0] * startTranslated[0]) / (xradius * xradius) + (startTranslated[1] * startTranslated[1]) / (yradius * yradius)\n    if (biglambda > 1.0) {\n      // F.6.6.3:\n      const sqrtbiglambda = Math.sqrt(biglambda)\n      xradius *= sqrtbiglambda\n      yradius *= sqrtbiglambda\n      // round to precision in order to have determinate calculations\n      xradius = Math.round(xradius * decimals) / decimals\n      yradius = Math.round(yradius * decimals) / decimals\n    }\n    // F.6.5.2:\n    let multiplier1 = Math.sqrt((xradius * xradius * yradius * yradius - xradius * xradius * startTranslated[1] * startTranslated[1] - yradius * yradius * startTranslated[0] * startTranslated[0]) / (xradius * xradius * startTranslated[1] * startTranslated[1] + yradius * yradius * startTranslated[0] * startTranslated[0]))\n    if (sweepFlag === large) multiplier1 = -multiplier1\n    const centerTranslated = vec2.fromValues(xradius * startTranslated[1] / yradius, -yradius * startTranslated[0] / xradius)\n    vec2.scale(centerTranslated, centerTranslated, multiplier1)\n    // F.6.5.3:\n    let center = vec2.fromValues(cosphi * centerTranslated[0] - sinphi * centerTranslated[1], sinphi * centerTranslated[0] + cosphi * centerTranslated[1])\n    center = vec2.add(center, center, vec2.scale(vec2.create(), vec2.add(vec2.create(), startpoint, endpoint), 0.5))\n\n    // F.6.5.5:\n    const vector1 = vec2.fromValues((startTranslated[0] - centerTranslated[0]) / xradius, (startTranslated[1] - centerTranslated[1]) / yradius)\n    const vector2 = vec2.fromValues((-startTranslated[0] - centerTranslated[0]) / xradius, (-startTranslated[1] - centerTranslated[1]) / yradius)\n    const theta1 = vec2.angleRadians(vector1)\n    const theta2 = vec2.angleRadians(vector2)\n    let deltatheta = theta2 - theta1\n    deltatheta = deltatheta % (2 * Math.PI)\n    if ((!sweepFlag) && (deltatheta > 0)) {\n      deltatheta -= 2 * Math.PI\n    } else if ((sweepFlag) && (deltatheta < 0)) {\n      deltatheta += 2 * Math.PI\n    }\n\n    // Ok, we have the center point and angle range (from theta1, deltatheta radians) so we can create the ellipse\n    let numsteps = Math.ceil(Math.abs(deltatheta) / (2 * Math.PI) * segments) + 1\n    if (numsteps < 1) numsteps = 1\n    for (let step = 1; step < numsteps; step++) {\n      const theta = theta1 + step / numsteps * deltatheta\n      const costheta = Math.cos(theta)\n      const sintheta = Math.sin(theta)\n      // F.6.3.1:\n      const point = vec2.fromValues(cosphi * xradius * costheta - sinphi * yradius * sintheta, sinphi * xradius * costheta + cosphi * yradius * sintheta)\n      vec2.add(point, point, center)\n      newpoints.push(point)\n    }\n    // ensure end point is precisely what user gave as parameter\n    if (numsteps) newpoints.push(options.endpoint)\n  }\n  newpoints = points.concat(newpoints)\n  const result = fromPoints({}, newpoints)\n  return result\n}\n\nmodule.exports = appendArc\n","const vec2 = require('../../maths/vec2')\nconst vec3 = require('../../maths/vec2')\n\nconst appendPoints = require('./appendPoints')\nconst toPoints = require('./toPoints')\n\n/**\n * Append a series of points to the given geometry that represent a Bezier curve.\n * The Bézier curve starts at the last point in the given geometry, and ends at the last control point.\n * The other control points are intermediate control points to transition the curve from start to end points.\n * The first control point may be null to ensure a smooth transition occurs. In this case,\n * the second to last point of the given geometry is mirrored into the control points of the Bezier curve.\n * In other words, the trailing gradient of the geometry matches the new gradient of the curve.\n * @param {Object} options - options for construction\n * @param {Array} options.controlPoints - list of control points (2D) for the bezier curve\n * @param {Number} [options.segment=16] - number of segments per 360 rotation\n * @param {path2} geometry - the path of which to appended points\n * @returns {path2} a new path with the appended points\n * @alias module:modeling/geometries/path2.appendBezier\n *\n * @example\n * let p5 = path2.create({}, [[10,-20]])\n * p5 = path2.appendBezier({controlPoints: [[10,-10],[25,-10],[25,-20]]}, p5);\n * p5 = path2.appendBezier({controlPoints: [null, [25,-30],[40,-30],[40,-20]]}, p5)\n */\nconst appendBezier = (options, geometry) => {\n  const defaults = {\n    segments: 16\n  }\n  let { controlPoints, segments } = Object.assign({}, defaults, options)\n\n  // validate the given options\n  if (!Array.isArray(controlPoints)) throw new Error('controlPoints must be an array of one or more points')\n  if (controlPoints.length < 1) throw new Error('controlPoints must be an array of one or more points')\n\n  if (segments < 4) throw new Error('segments must be four or more')\n\n  // validate the given geometry\n  if (geometry.isClosed) {\n    throw new Error('the given geometry cannot be closed')\n  }\n\n  const points = toPoints(geometry)\n  if (points.length < 1) {\n    throw new Error('the given path must contain one or more points (as the starting point for the bezier curve)')\n  }\n\n  // make a copy of the control points\n  controlPoints = controlPoints.slice()\n\n  // special handling of null control point (only first is allowed)\n  const firstControlPoint = controlPoints[0]\n  if (firstControlPoint === null) {\n    if (controlPoints.length < 2) {\n      throw new Error('a null control point must be passed with one more control points')\n    }\n    // special handling of a previous bezier curve\n    let lastBezierControlPoint = points[points.length - 2]\n    if ('lastBezierControlPoint' in geometry) {\n      lastBezierControlPoint = geometry.lastBezierControlPoint\n    }\n    if (!Array.isArray(lastBezierControlPoint)) {\n      throw new Error('the given path must contain TWO or more points if given a null control point')\n    }\n    // replace the first control point with the mirror of the last bezier control point\n    const controlpoint = vec2.scale(vec2.create(), points[points.length - 1], 2)\n    vec2.subtract(controlpoint, controlpoint, lastBezierControlPoint)\n\n    controlPoints[0] = controlpoint\n  }\n\n  // add a control point for the previous end point\n  controlPoints.unshift(points[points.length - 1])\n\n  const bezierOrder = controlPoints.length - 1\n  const factorials = []\n  let fact = 1\n  for (let i = 0; i <= bezierOrder; ++i) {\n    if (i > 0) fact *= i\n    factorials.push(fact)\n  }\n\n  const binomials = []\n  for (let i = 0; i <= bezierOrder; ++i) {\n    const binomial = factorials[bezierOrder] / (factorials[i] * factorials[bezierOrder - i])\n    binomials.push(binomial)\n  }\n\n  const v0 = vec2.create()\n  const v1 = vec2.create()\n  const v3 = vec3.create()\n  const getPointForT = (t) => {\n    let tk = 1 // = pow(t,k)\n    let oneMinusTNMinusK = Math.pow(1 - t, bezierOrder) // = pow( 1-t, bezierOrder - k)\n    const invOneMinusT = (t !== 1) ? (1 / (1 - t)) : 1\n    const point = vec2.create() // 0, 0, 0\n    for (let k = 0; k <= bezierOrder; ++k) {\n      if (k === bezierOrder) oneMinusTNMinusK = 1\n      const bernsteinCoefficient = binomials[k] * tk * oneMinusTNMinusK\n      const derivativePoint = vec2.scale(v0, controlPoints[k], bernsteinCoefficient)\n      vec2.add(point, point, derivativePoint)\n      tk *= t\n      oneMinusTNMinusK *= invOneMinusT\n    }\n    return point\n  }\n\n  const newpoints = []\n  const newpointsT = []\n  const numsteps = bezierOrder + 1\n  for (let i = 0; i < numsteps; ++i) {\n    const t = i / (numsteps - 1)\n    const point = getPointForT(t)\n    newpoints.push(point)\n    newpointsT.push(t)\n  }\n\n  // subdivide each segment until the angle at each vertex becomes small enough:\n  let subdivideBase = 1\n  const maxangle = Math.PI * 2 / segments\n  const maxsinangle = Math.sin(maxangle)\n  while (subdivideBase < newpoints.length - 1) {\n    const dir1 = vec2.subtract(v0, newpoints[subdivideBase], newpoints[subdivideBase - 1])\n    vec2.normalize(dir1, dir1)\n    const dir2 = vec2.subtract(v1, newpoints[subdivideBase + 1], newpoints[subdivideBase])\n    vec2.normalize(dir2, dir2)\n    const sinangle = vec2.cross(v3, dir1, dir2) // the sine of the angle\n    if (Math.abs(sinangle[2]) > maxsinangle) {\n      // angle is too big, we need to subdivide\n      const t0 = newpointsT[subdivideBase - 1]\n      const t1 = newpointsT[subdivideBase + 1]\n      const newt0 = t0 + (t1 - t0) * 1 / 3\n      const newt1 = t0 + (t1 - t0) * 2 / 3\n      const point0 = getPointForT(newt0)\n      const point1 = getPointForT(newt1)\n      // remove the point at subdivideBase and replace with 2 new points:\n      newpoints.splice(subdivideBase, 1, point0, point1)\n      newpointsT.splice(subdivideBase, 1, newt0, newt1)\n      // re - evaluate the angles, starting at the previous junction since it has changed:\n      subdivideBase--\n      if (subdivideBase < 1) subdivideBase = 1\n    } else {\n      ++subdivideBase\n    }\n  }\n\n  // append to the new points to the given path\n  // but skip the first new point because it is identical to the last point in the given path\n  newpoints.shift()\n  const result = appendPoints(newpoints, geometry)\n  result.lastBezierControlPoint = controlPoints[controlPoints.length - 2]\n  return result\n}\n\nmodule.exports = appendBezier\n","const fromPoints = require('./fromPoints')\nconst toPoints = require('./toPoints')\n\n/**\n * Append the given list of points to the end of the given geometry.\n * @param {Array} points - the points (2D) to append to the given path\n * @param {path2} geometry - the given path\n * @returns {path2} a new path with the appended points\n * @alias module:modeling/geometries/path2.appendPoints\n * @example\n * let newpath = appendPoints([[3, 4], [4, 5]], oldpath)\n */\nconst appendPoints = (points, geometry) => {\n  if (geometry.isClosed) {\n    throw new Error('cannot append points to a closed path')\n  }\n\n  let newpoints = toPoints(geometry)\n  newpoints = newpoints.concat(points)\n\n  return fromPoints({}, newpoints)\n}\n\nmodule.exports = appendPoints\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\n/*\n * Apply the transforms of the given geometry.\n * NOTE: This function must be called BEFORE exposing any data. See toPoints.\n * @param {path} geometry - the geometry to transform\n * @returns {path} the given geometry\n * @example\n * geometry = applyTransforms(geometry)\n */\nconst applyTransforms = (geometry) => {\n  if (mat4.isIdentity(geometry.transforms)) return geometry\n\n  geometry.points = geometry.points.map((point) => vec2.transform(vec2.create(), point, geometry.transforms))\n  geometry.transforms = mat4.create()\n  return geometry\n}\n\nmodule.exports = applyTransforms\n","/**\n * Performs a shallow clone of the give geometry.\n * @param {path2} geometry - the geometry to clone\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.clone\n */\nconst clone = (geometry) => Object.assign({}, geometry)\n\nmodule.exports = clone\n","const { EPS } = require('../../maths/constants')\n\nconst vec2 = require('../../maths/vec2')\n\nconst clone = require('./clone')\n\n/**\n * Close the given geometry.\n * @param {path2} geometry - the path to close\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.close\n */\nconst close = (geometry) => {\n  if (geometry.isClosed) return geometry\n\n  const cloned = clone(geometry)\n  cloned.isClosed = true\n\n  if (cloned.points.length > 1) {\n    // make sure the paths are formed properly\n    const points = cloned.points\n    const p0 = points[0]\n    let pn = points[points.length - 1]\n    while (vec2.distance(p0, pn) < (EPS * EPS)) {\n      points.pop()\n      if (points.length === 1) break\n      pn = points[points.length - 1]\n    }\n  }\n  return cloned\n}\n\nmodule.exports = close\n","const fromPoints = require('./fromPoints')\nconst toPoints = require('./toPoints')\nconst { equals } = require('../../maths/vec2')\n/**\n * Concatenate the given paths.\n * If both contain the same point at the junction, merge it into one.\n * A concatenation of zero paths is an empty, open path.\n * A concatenation of one closed path to a series of open paths produces a closed path.\n * A concatenation of a path to a closed path is an error.\n * @param {...path2} paths - the paths to concatenate\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.concat\n *\n * @example\n * let newpath = concat(fromPoints({}, [[1, 2]]), fromPoints({}, [[3, 4]]))\n */\nconst concat = (...paths) => {\n  // Only the last path can be closed, producing a closed path.\n  let isClosed = false\n  for (const path of paths) {\n    if (isClosed) {\n      throw new Error('Cannot concatenate to a closed path')\n    }\n    isClosed = path.isClosed\n  }\n  let newpoints = []\n  paths.forEach((path) => {\n    const tmp = toPoints(path)\n    if (newpoints.length > 0 && tmp.length > 0 && equals(tmp[0], newpoints[newpoints.length - 1])) tmp.shift()\n    newpoints = newpoints.concat(tmp)\n  })\n  return fromPoints({ closed: isClosed }, newpoints)\n}\n\nmodule.exports = concat\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Represents a 2D geometry consisting of a list of ordered points.\n * @typedef {Object} path2\n * @property {Array} points - list of ordered points\n * @property {Boolean} isClosed - true if the path is closed where start and end points are the same\n * @property {mat4} transforms - transforms to apply to the points, see transform()\n */\n\n/**\n * Create an empty, open path.\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.create\n *\n * @example\n * let newpath = create()\n */\nconst create = (points) => {\n  if (points === undefined) {\n    points = []\n  }\n  return {\n    points: points,\n    isClosed: false,\n    transforms: mat4.create()\n  }\n}\n\nmodule.exports = create\n","const vec2 = require('../../maths/vec2')\n\nconst toPoints = require('./toPoints')\n\n/**\n  * Determine if the given paths are equal.\n  * For closed paths, this includes equality under point order rotation.\n  * @param {path2} a - the first path to compare\n  * @param {path2} b - the second path to compare\n  * @returns {Boolean}\n  * @alias module:modeling/geometries/path2.equals\n  */\nconst equals = (a, b) => {\n  if (a.isClosed !== b.isClosed) {\n    return false\n  }\n  if (a.points.length !== b.points.length) {\n    return false\n  }\n\n  const apoints = toPoints(a)\n  const bpoints = toPoints(b)\n\n  // closed paths might be equal under graph rotation\n  // so try comparison by rotating across all points\n  const length = apoints.length\n  let offset = 0\n  do {\n    let unequal = false\n    for (let i = 0; i < length; i++) {\n      if (!vec2.equals(apoints[i], bpoints[(i + offset) % length])) {\n        unequal = true\n        break\n      }\n    }\n    if (unequal === false) {\n      return true\n    }\n    // unequal open paths should only be compared once, never rotated\n    if (!a.isClosed) {\n      return false\n    }\n  } while (++offset < length)\n  return false\n}\n\nmodule.exports = equals\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\nconst create = require('./create')\n\n/**\n * Create a new path from the given compact binary data.\n * @param {TypedArray} data - compact binary data\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.fromCompactBinary\n */\nconst fromCompactBinary = (data) => {\n  if (data[0] !== 2) throw new Error('invalid compact binary data')\n\n  const created = create()\n\n  created.transforms = mat4.clone(data.slice(1, 17))\n\n  created.isClosed = !!data[17]\n\n  for (let i = 22; i < data.length; i += 2) {\n    const point = vec2.fromValues(data[i], data[i + 1])\n    created.points.push(point)\n  }\n  // transfer known properties, i.e. color\n  if (data[18] >= 0) {\n    created.color = [data[18], data[19], data[20], data[21]]\n  }\n  // TODO: how about custom properties or fields ?\n  return created\n}\n\nmodule.exports = fromCompactBinary\n","const { EPS } = require('../../maths/constants')\n\nconst vec2 = require('../../maths/vec2')\n\nconst close = require('./close')\nconst create = require('./create')\n\n/**\n * Create a new path from the given points.\n * The points must be provided an array of points,\n * where each point is an array of two numbers.\n * @param {Object} options - options for construction\n * @param {Boolean} [options.closed=false] - if the path should be open or closed\n * @param {Array} points - array of points (2D) from which to create the path\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.fromPoints\n *\n * @example:\n * my newpath = fromPoints({closed: true}, [[10, 10], [-10, 10]])\n */\nconst fromPoints = (options, points) => {\n  const defaults = { closed: false }\n  let { closed } = Object.assign({}, defaults, options)\n\n  let created = create()\n  created.points = points.map((point) => vec2.clone(point))\n\n  // check if first and last points are equal\n  if (created.points.length > 1) {\n    const p0 = created.points[0]\n    const pn = created.points[created.points.length - 1]\n    if (vec2.distance(p0, pn) < (EPS * EPS)) {\n      // and close automatically\n      closed = true\n    }\n  }\n  if (closed === true) created = close(created)\n\n  return created\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a 2D geometry consisting of a list of ordered points.\n * @see {@link path2} for data structure information.\n * @module modeling/geometries/path2\n *\n * @example\n * colorize([0,0,0,1], path2.fromPoints({ closed: true }, [[0,0], [4,0], [4,3]]))\n *\n * @example\n * {\n *   \"points\": [[0,0], [4,0], [4,3]],\n *   \"isClosed\": true,\n *   \"transforms\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n *   \"color\": [0,0,0,1]\n * }\n */\nmodule.exports = {\n  appendArc: require('./appendArc'),\n  appendBezier: require('./appendBezier'),\n  appendPoints: require('./appendPoints'),\n  clone: require('./clone'),\n  close: require('./close'),\n  concat: require('./concat'),\n  create: require('./create'),\n  equals: require('./equals'),\n  fromPoints: require('./fromPoints'),\n  fromCompactBinary: require('./fromCompactBinary'),\n  isA: require('./isA'),\n  reverse: require('./reverse'),\n  toPoints: require('./toPoints'),\n  toString: require('./toString'),\n  toCompactBinary: require('./toCompactBinary'),\n  transform: require('./transform'),\n  validate: require('./validate')\n}\n","/**\n * Determine if the given object is a path2 geometry.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true if the object matches a path2\n * @alias module:modeling/geometries/path2.isA\n */\nconst isA = (object) => {\n  if (object && typeof object === 'object') {\n    // see create for the required attributes and types\n    if ('points' in object && 'transforms' in object && 'isClosed' in object) {\n      // NOTE: transforms should be a TypedArray, which has a read-only length\n      if (Array.isArray(object.points) && 'length' in object.transforms) {\n        return true\n      }\n    }\n  }\n  return false\n}\n\nmodule.exports = isA\n","const clone = require('./clone')\n\n/**\n * Reverses the path so that the points are in the opposite order.\n * This swaps the left (interior) and right (exterior) edges.\n * @param {path2} geometry - the path to reverse\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.reverse\n *\n * @example\n * let newpath = reverse(mypath)\n */\nconst reverse = (geometry) => {\n  // NOTE: this only updates the order of the points\n  const cloned = clone(geometry)\n  cloned.points = geometry.points.slice().reverse()\n  return cloned\n}\n\nmodule.exports = reverse\n","/**\n * Produce a compact binary representation from the given path.\n * @param {path2} geometry - the path geometry\n * @returns {TypedArray} compact binary representation\n * @alias module:modeling/geometries/path2.toCompactBinary\n */\nconst toCompactBinary = (geometry) => {\n  const points = geometry.points\n  const transforms = geometry.transforms\n  let color = [-1, -1, -1, -1]\n  if (geometry.color) color = geometry.color\n\n  // FIXME why Float32Array?\n  const compacted = new Float32Array(1 + 16 + 1 + 4 + (points.length * 2)) // type + transforms + isClosed + color + points data\n\n  compacted[0] = 2 // type code: 0 => geom2, 1 => geom3 , 2 => path2\n\n  compacted[1] = transforms[0]\n  compacted[2] = transforms[1]\n  compacted[3] = transforms[2]\n  compacted[4] = transforms[3]\n  compacted[5] = transforms[4]\n  compacted[6] = transforms[5]\n  compacted[7] = transforms[6]\n  compacted[8] = transforms[7]\n  compacted[9] = transforms[8]\n  compacted[10] = transforms[9]\n  compacted[11] = transforms[10]\n  compacted[12] = transforms[11]\n  compacted[13] = transforms[12]\n  compacted[14] = transforms[13]\n  compacted[15] = transforms[14]\n  compacted[16] = transforms[15]\n\n  compacted[17] = geometry.isClosed ? 1 : 0\n\n  compacted[18] = color[0]\n  compacted[19] = color[1]\n  compacted[20] = color[2]\n  compacted[21] = color[3]\n\n  for (let j = 0; j < points.length; j++) {\n    const ci = j * 2 + 22\n    const point = points[j]\n    compacted[ci] = point[0]\n    compacted[ci + 1] = point[1]\n  }\n  // TODO: how about custom properties or fields ?\n  return compacted\n}\n\nmodule.exports = toCompactBinary\n","const applyTransforms = require('./applyTransforms')\n\n/**\n * Produces an array of points from the given geometry.\n * The returned array should not be modified as the data is shared with the geometry.\n * @param {path2} geometry - the geometry\n * @returns {Array} an array of points\n * @alias module:modeling/geometries/path2.toPoints\n *\n * @example\n * let sharedpoints = toPoints(geometry)\n */\nconst toPoints = (geometry) => applyTransforms(geometry).points\n\nmodule.exports = toPoints\n","const vec2 = require('../../maths/vec2')\n\nconst toPoints = require('./toPoints')\n\n/**\n * Create a string representing the contents of the given path.\n * @param {path2} geometry - the path\n * @returns {String} a representative string\n * @alias module:modeling/geometries/path2.toString\n *\n * @example\n * console.out(toString(path))\n */\nconst toString = (geometry) => {\n  const points = toPoints(geometry)\n  let result = 'path (' + points.length + ' points, ' + geometry.isClosed + '):\\n[\\n'\n  points.forEach((point) => {\n    result += '  ' + vec2.toString(point) + ',\\n'\n  })\n  result += ']\\n'\n  return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Transform the given geometry using the given matrix.\n * This is a lazy transform of the points, as this function only adjusts the transforms.\n * The transforms are applied when accessing the points via toPoints().\n * @param {mat4} matrix - the matrix to transform with\n * @param {path2} geometry - the geometry to transform\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.transform\n *\n * @example\n * let newpath = transform(fromZRotation(Math.PI / 4), path)\n */\nconst transform = (matrix, geometry) => {\n  const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms)\n  return Object.assign({}, geometry, { transforms })\n}\n\nmodule.exports = transform\n","const vec2 = require('../../maths/vec2')\nconst isA = require('./isA')\n\n/**\n * Determine if the given object is a valid path2.\n * Checks for valid data points, and duplicate points.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/path2.validate\n */\nconst validate = (object) => {\n  if (!isA(object)) {\n    throw new Error('invalid path2 structure')\n  }\n\n  // check for duplicate points\n  if (object.points.length > 1) {\n    for (let i = 0; i < object.points.length; i++) {\n      if (vec2.equals(object.points[i], object.points[(i + 1) % object.points.length])) {\n        throw new Error(`path2 duplicate points ${object.points[i]}`)\n      }\n    }\n  }\n\n  // check for infinity, nan\n  object.points.forEach((point) => {\n    if (!point.every(Number.isFinite)) {\n      throw new Error(`path2 invalid point ${point}`)\n    }\n  })\n\n  // check transforms\n  if (!object.transforms.every(Number.isFinite)) {\n    throw new Error(`path2 invalid transforms ${object.transforms}`)\n  }\n}\n\nmodule.exports = validate\n","const measureArea = require('./measureArea')\nconst flip = require('./flip')\n\n/**\n * Determine if the given points are inside the given polygon.\n *\n * @param {Array} points - a list of points, where each point is an array with X and Y values\n * @param {poly2} polygon - a 2D polygon\n * @return {Integer} 1 if all points are inside, 0 if some or none are inside\n * @alias module:modeling/geometries/poly2.arePointsInside\n */\nconst arePointsInside = (points, polygon) => {\n  if (points.length === 0) return 0 // nothing to check\n\n  const vertices = polygon.vertices\n  if (vertices.length < 3) return 0 // nothing can be inside an empty polygon\n\n  if (measureArea(polygon) < 0) {\n    polygon = flip(polygon) // CCW is required\n  }\n\n  const sum = points.reduce((acc, point) => acc + isPointInside(point, vertices), 0)\n  return sum === points.length ? 1 : 0\n}\n\n/*\n * Determine if the given point is inside the polygon.\n *\n * @see http://erich.realtimerendering.com/ptinpoly/ (Crossings Test)\n * @param {Array} point - an array with X and Y values\n * @param {Array} polygon - a list of points, where each point is an array with X and Y values\n * @return {Integer} 1 if the point is inside, 0 if outside\n */\nconst isPointInside = (point, polygon) => {\n  const numverts = polygon.length\n\n  const tx = point[0]\n  const ty = point[1]\n\n  let vtx0 = polygon[numverts - 1]\n  let vtx1 = polygon[0]\n\n  let yflag0 = (vtx0[1] > ty)\n\n  let insideFlag = 0\n\n  let i = 0\n  for (let j = (numverts + 1); --j;) {\n    /*\n     * check if Y endpoints straddle (are on opposite sides) of point's Y\n     * if so, +X ray could intersect this edge.\n     */\n    const yflag1 = (vtx1[1] > ty)\n    if (yflag0 !== yflag1) {\n      /*\n       * check if X endpoints are on same side of the point's X\n       * if so, it's easy to test if edge hits or misses.\n       */\n      const xflag0 = (vtx0[0] > tx)\n      const xflag1 = (vtx1[0] > tx)\n      if (xflag0 && xflag1) {\n        /* if edge's X values are both right of the point, then the point must be inside */\n        insideFlag = !insideFlag\n      } else {\n        /*\n         * if X endpoints straddle the point, then\n         * the compute intersection of polygon edge with +X ray\n         * if intersection >= point's X then the +X ray hits it.\n         */\n        if ((vtx1[0] - (vtx1[1] - ty) * (vtx0[0] - vtx1[0]) / (vtx0[1] - vtx1[1])) >= tx) {\n          insideFlag = !insideFlag\n        }\n      }\n    }\n    /* move to next pair of vertices, retaining info as possible */\n    yflag0 = yflag1\n    vtx0 = vtx1\n    vtx1 = polygon[++i]\n  }\n  return insideFlag\n}\n\n/*\n * > 0 : p2 is left of the line p0 -> p1\n * = 0 : p2 is on the line p0 -> p1\n * < 0 : p2 is right of the line p0 -> p1\n */\nconst isLeft = (p0, p1, p2) => (p1[0] - p0[0]) * (p2[1] - p0[1]) - (p2[0] - p0[0]) * (p1[1] - p0[1])\n\nmodule.exports = arePointsInside\n","/**\n * Represents a convex 2D polygon consisting of a list of ordered vertices.\n * @typedef {Object} poly2\n * @property {Array} vertices - list of ordered vertices (2D)\n */\n\n/**\n * Creates a new polygon with initial values.\n *\n * @param {Array} [vertices] - list of vertices (2D)\n * @returns {poly2} a new polygon\n * @alias module:modeling/geometries/poly2.create\n *\n * @example\n * let polygon = create()\n */\nconst create = (vertices) => {\n  if (vertices === undefined || vertices.length < 3) {\n    vertices = [] // empty contents\n  }\n  return { vertices: vertices }\n}\n\nmodule.exports = create\n","const create = require('./create')\n\n/**\n * Flip the give polygon, rotating the opposite direction.\n *\n * @param {poly2} polygon - the polygon to flip\n * @returns {poly2} a new polygon\n * @alias module:modeling/geometries/poly2.flip\n */\nconst flip = (polygon) => {\n  const vertices = polygon.vertices.slice().reverse()\n  return create(vertices)\n}\n\nmodule.exports = flip\n","/**\n * Represents a 2D polygon consisting of a list of ordered vertices.\n * @see {@link poly2} for data structure information.\n * @module modeling/geometries/poly2\n *\n * @example\n * poly2.create([[0,0], [4,0], [4,3]])\n *\n * @example\n * {\"vertices\": [[0,0], [4,0], [4,3]]}\n */\nmodule.exports = {\n  arePointsInside: require('./arePointsInside'),\n  create: require('./create'),\n  flip: require('./flip'),\n  measureArea: require('./measureArea')\n}\n","/**\n * Measure the area under the given polygon.\n *\n * @param {poly2} polygon - the polygon to measure\n * @return {Number} the area of the polygon\n * @alias module:modeling/geometries/poly2.measureArea\n */\nconst area = require('../../maths/utils/area')\n\nconst measureArea = (polygon) => area(polygon.vertices)\n\nmodule.exports = measureArea\n","const create = require('./create')\n\nconst vec3 = require('../../maths/vec3')\n\n/**\n * Create a deep clone of the given polygon\n *\n * @param {poly3} [out] - receiving polygon\n * @param {poly3} polygon - polygon to clone\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.clone\n */\nconst clone = (...params) => {\n  let out\n  let poly3\n  if (params.length === 1) {\n    out = create()\n    poly3 = params[0]\n  } else {\n    out = params[0]\n    poly3 = params[1]\n  }\n  // deep clone of vertices\n  out.vertices = poly3.vertices.map((vec) => vec3.clone(vec))\n  return out\n}\n\nmodule.exports = clone\n","\n/**\n * Represents a convex 3D polygon. The vertices used to initialize a polygon must\n * be coplanar and form a convex shape. The vertices do not have to be `vec3`\n * instances but they must behave similarly.\n * @typedef {Object} poly3\n * @property {Array} vertices - list of ordered vertices (3D)\n */\n\n/**\n * Creates a new 3D polygon with initial values.\n *\n * @param {Array} [vertices] - a list of vertices (3D)\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.create\n */\nconst create = (vertices) => {\n  if (vertices === undefined || vertices.length < 3) {\n    vertices = [] // empty contents\n  }\n  return { vertices }\n}\n\nmodule.exports = create\n","const vec3 = require('../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Create a polygon from the given points.\n *\n * @param {Array} points - list of points (3D)\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.fromPoints\n *\n * @example\n * const points = [\n *   [0,  0, 0],\n *   [0, 10, 0],\n *   [0, 10, 10]\n * ]\n * const polygon = fromPoints(points)\n */\nconst fromPoints = (points) => {\n  const vertices = points.map((point) => vec3.clone(point))\n  return create(vertices)\n}\n\nmodule.exports = fromPoints\n","const create = require('./create')\n\n/**\n * Create a polygon from the given vertices and plane.\n * NOTE: No checks are performed on the parameters.\n * @param {Array} vertices - list of vertices (3D)\n * @param {plane} plane - plane of the polygon\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.fromPointsAndPlane\n */\nconst fromPointsAndPlane = (vertices, plane) => {\n  const poly = create(vertices)\n  poly.plane = plane // retain the plane for later use\n  return poly\n}\n\nmodule.exports = fromPointsAndPlane\n","/**\n * Represents a convex 3D polygon consisting of a list of ordered vertices.\n * @see {@link poly3} for data structure information.\n * @module modeling/geometries/poly3\n *\n * @example\n * poly3.create([[0,0,0], [4,0,0], [4,3,12]])\n *\n * @example\n * {\"vertices\": [[0,0,0], [4,0,0], [4,3,12]]}\n */\nmodule.exports = {\n  clone: require('./clone'),\n  create: require('./create'),\n  fromPoints: require('./fromPoints'),\n  fromPointsAndPlane: require('./fromPointsAndPlane'),\n  invert: require('./invert'),\n  isA: require('./isA'),\n  isConvex: require('./isConvex'),\n  measureArea: require('./measureArea'),\n  measureBoundingBox: require('./measureBoundingBox'),\n  measureBoundingSphere: require('./measureBoundingSphere'),\n  measureSignedVolume: require('./measureSignedVolume'),\n  plane: require('./plane'),\n  toPoints: require('./toPoints'),\n  toString: require('./toString'),\n  transform: require('./transform'),\n  validate: require('./validate')\n}\n","const plane = require('../../maths/plane')\nconst create = require('./create')\n\n/**\n * Invert the give polygon to face the opposite direction.\n *\n * @param {poly3} polygon - the polygon to invert\n * @returns {poly3} a new poly3\n * @alias module:modeling/geometries/poly3.invert\n */\nconst invert = (polygon) => {\n  const vertices = polygon.vertices.slice().reverse()\n  const inverted = create(vertices)\n  if (polygon.plane) {\n    // Flip existing plane to save recompute\n    inverted.plane = plane.flip(plane.create(), polygon.plane)\n  }\n  return inverted\n}\n\nmodule.exports = invert\n","/**\n * Determine if the given object is a polygon.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true if the object matches a poly3\n * @alias module:modeling/geometries/poly3.isA\n */\nconst isA = (object) => {\n  if (object && typeof object === 'object') {\n    if ('vertices' in object) {\n      if (Array.isArray(object.vertices)) {\n        return true\n      }\n    }\n  }\n  return false\n}\n\nmodule.exports = isA\n","const plane = require('../../maths/plane')\nconst vec3 = require('../../maths/vec3')\n\n/**\n * Check whether the given polygon is convex.\n * @param {poly3} polygon - the polygon to interrogate\n * @returns {Boolean} true if convex\n * @alias module:modeling/geometries/poly3.isConvex\n */\nconst isConvex = (polygon) => areVerticesConvex(polygon.vertices)\n\nconst areVerticesConvex = (vertices) => {\n  const numvertices = vertices.length\n  if (numvertices > 2) {\n    // note: plane ~= normal point\n    const normal = plane.fromPoints(plane.create(), ...vertices)\n    let prevprevpos = vertices[numvertices - 2]\n    let prevpos = vertices[numvertices - 1]\n    for (let i = 0; i < numvertices; i++) {\n      const pos = vertices[i]\n      if (!isConvexPoint(prevprevpos, prevpos, pos, normal)) {\n        return false\n      }\n      prevprevpos = prevpos\n      prevpos = pos\n    }\n  }\n  return true\n}\n\n// calculate whether three points form a convex corner\n//  prevpoint, point, nextpoint: the 3 coordinates (Vector3D instances)\n//  normal: the normal vector of the plane\nconst isConvexPoint = (prevpoint, point, nextpoint, normal) => {\n  const crossproduct = vec3.cross(\n    vec3.create(),\n    vec3.subtract(vec3.create(), point, prevpoint),\n    vec3.subtract(vec3.create(), nextpoint, point)\n  )\n  const crossdotnormal = vec3.dot(crossproduct, normal)\n  return crossdotnormal >= 0\n}\n\nmodule.exports = isConvex\n","const plane = require('./plane')\n\n/**\n * Measure the area of the given polygon.\n * @see 2000 softSurfer http://geomalgorithms.com\n * @param {poly3} polygon - the polygon to measure\n * @return {Number} area of the polygon\n * @alias module:modeling/geometries/poly3.measureArea\n */\nconst measureArea = (polygon) => {\n  const n = polygon.vertices.length\n  if (n < 3) {\n    return 0 // degenerate polygon\n  }\n  const vertices = polygon.vertices\n\n  // calculate a normal vector\n  const normal = plane(polygon)\n\n  // determine direction of projection\n  const ax = Math.abs(normal[0])\n  const ay = Math.abs(normal[1])\n  const az = Math.abs(normal[2])\n\n  if (ax + ay + az === 0) {\n    // normal does not exist\n    return 0\n  }\n\n  let coord = 3 // ignore Z coordinates\n  if ((ax > ay) && (ax > az)) {\n    coord = 1 // ignore X coordinates\n  } else\n  if (ay > az) {\n    coord = 2 // ignore Y coordinates\n  }\n\n  let area = 0\n  let h = 0\n  let i = 1\n  let j = 2\n  switch (coord) {\n    case 1: // ignore X coordinates\n      // compute area of 2D projection\n      for (i = 1; i < n; i++) {\n        h = i - 1\n        j = (i + 1) % n\n        area += (vertices[i][1] * (vertices[j][2] - vertices[h][2]))\n      }\n      area += (vertices[0][1] * (vertices[1][2] - vertices[n - 1][2]))\n      // scale to get area\n      area /= (2 * normal[0])\n      break\n\n    case 2: // ignore Y coordinates\n      // compute area of 2D projection\n      for (i = 1; i < n; i++) {\n        h = i - 1\n        j = (i + 1) % n\n        area += (vertices[i][2] * (vertices[j][0] - vertices[h][0]))\n      }\n      area += (vertices[0][2] * (vertices[1][0] - vertices[n - 1][0]))\n      // scale to get area\n      area /= (2 * normal[1])\n      break\n\n    case 3: // ignore Z coordinates\n    default:\n      // compute area of 2D projection\n      for (i = 1; i < n; i++) {\n        h = i - 1\n        j = (i + 1) % n\n        area += (vertices[i][0] * (vertices[j][1] - vertices[h][1]))\n      }\n      area += (vertices[0][0] * (vertices[1][1] - vertices[n - 1][1]))\n      // scale to get area\n      area /= (2 * normal[2])\n      break\n  }\n  return area\n}\n\nmodule.exports = measureArea\n","const vec3 = require('../../maths/vec3')\n\n/**\n * @param {poly3} polygon - the polygon to measure\n * @returns {Array} an array of two vectors (3D);  minimum and maximum coordinates\n * @alias module:modeling/geometries/poly3.measureBoundingBox\n */\nconst measureBoundingBox = (polygon) => {\n  const vertices = polygon.vertices\n  const numvertices = vertices.length\n  const min = numvertices === 0 ? vec3.create() : vec3.clone(vertices[0])\n  const max = vec3.clone(min)\n  for (let i = 1; i < numvertices; i++) {\n    vec3.min(min, min, vertices[i])\n    vec3.max(max, max, vertices[i])\n  }\n  return [min, max]\n}\n\nmodule.exports = measureBoundingBox\n","const vec3 = require('../../maths/vec3')\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/**\n * Measure the bounding sphere of the given polygon.\n * @param {poly3} polygon - the polygon to measure\n * @returns {Array} the computed bounding sphere; center point (3D) and radius\n * @alias module:modeling/geometries/poly3.measureBoundingSphere\n */\nconst measureBoundingSphere = (polygon) => {\n  const box = measureBoundingBox(polygon)\n  const center = box[0]\n  vec3.add(center, box[0], box[1])\n  vec3.scale(center, center, 0.5)\n  const radius = vec3.distance(center, box[1])\n  return [center, radius]\n}\n\nmodule.exports = measureBoundingSphere\n","const vec3 = require('../../maths/vec3')\n\n/**\n * Measure the signed volume of the given polygon, which must be convex.\n * The volume is that formed by the tetrahedron connected to the axis [0,0,0],\n * and will be positive or negative based on the rotation of the vertices.\n * @see http://chenlab.ece.cornell.edu/Publication/Cha/icip01_Cha.pdf\n * @param {poly3} polygon - the polygon to measure\n * @return {Number} volume of the polygon\n * @alias module:modeling/geometries/poly3.measureSignedVolume\n */\nconst measureSignedVolume = (polygon) => {\n  let signedVolume = 0\n  const vertices = polygon.vertices\n  // calculate based on triangular polygons\n  const cross = vec3.create()\n  for (let i = 0; i < vertices.length - 2; i++) {\n    vec3.cross(cross, vertices[i + 1], vertices[i + 2])\n    signedVolume += vec3.dot(vertices[0], cross)\n  }\n  signedVolume /= 6\n  return signedVolume\n}\n\nmodule.exports = measureSignedVolume\n","const mplane = require('../../maths/plane/')\n\nconst plane = (polygon) => {\n  if (!polygon.plane) {\n    polygon.plane = mplane.fromPoints(mplane.create(), ...polygon.vertices)\n  }\n  return polygon.plane\n}\n\nmodule.exports = plane\n","/**\n * Return the given polygon as a list of points.\n * NOTE: The returned array should not be modified as the points are shared with the geometry.\n * @param {poly3} polygon - the polygon\n * @return {Array} list of points (3D)\n * @alias module:modeling/geometries/poly3.toPoints\n */\nconst toPoints = (polygon) => polygon.vertices\n\nmodule.exports = toPoints\n","const vec3 = require('../../maths/vec3/')\n\n/**\n * @param {poly3} polygon - the polygon to measure\n * @return {String} the string representation\n * @alias module:modeling/geometries/poly3.toString\n */\nconst toString = (polygon) => {\n  let result = 'poly3: vertices: ['\n  polygon.vertices.forEach((vertex) => {\n    result += `${vec3.toString(vertex)}, `\n  })\n  result += ']'\n  return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Transform the given polygon using the given matrix.\n * @param {mat4} matrix - the matrix to transform with\n * @param {poly3} polygon - the polygon to transform\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.transform\n */\nconst transform = (matrix, polygon) => {\n  const vertices = polygon.vertices.map((vertex) => vec3.transform(vec3.create(), vertex, matrix))\n  if (mat4.isMirroring(matrix)) {\n    // reverse the order to preserve the orientation\n    vertices.reverse()\n  }\n  return create(vertices)\n}\n\nmodule.exports = transform\n","const signedDistanceToPoint = require('../../maths/plane/signedDistanceToPoint')\nconst { NEPS } = require('../../maths/constants')\nconst vec3 = require('../../maths/vec3')\nconst isA = require('./isA')\nconst isConvex = require('./isConvex')\nconst measureArea = require('./measureArea')\nconst plane = require('./plane')\n\n/**\n * Determine if the given object is a valid polygon.\n * Checks for valid data structure, convex polygons, and duplicate points.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/poly3.validate\n */\nconst validate = (object) => {\n  if (!isA(object)) {\n    throw new Error('invalid poly3 structure')\n  }\n\n  // check for empty polygon\n  if (object.vertices.length < 3) {\n    throw new Error(`poly3 not enough vertices ${object.vertices.length}`)\n  }\n  // check area\n  if (measureArea(object) <= 0) {\n    throw new Error('poly3 area must be greater than zero')\n  }\n\n  // check for duplicate points\n  for (let i = 0; i < object.vertices.length; i++) {\n    if (vec3.equals(object.vertices[i], object.vertices[(i + 1) % object.vertices.length])) {\n      throw new Error(`poly3 duplicate vertex ${object.vertices[i]}`)\n    }\n  }\n\n  // check convexity\n  if (!isConvex(object)) {\n    throw new Error('poly3 must be convex')\n  }\n\n  // check for infinity, nan\n  object.vertices.forEach((vertex) => {\n    if (!vertex.every(Number.isFinite)) {\n      throw new Error(`poly3 invalid vertex ${vertex}`)\n    }\n  })\n\n  // check that points are co-planar\n  if (object.vertices.length > 3) {\n    const normal = plane(object)\n    object.vertices.forEach((vertex) => {\n      const dist = Math.abs(signedDistanceToPoint(normal, vertex))\n      if (dist > NEPS) {\n        throw new Error(`poly3 must be coplanar: vertex ${vertex} distance ${dist}`)\n      }\n    })\n  }\n}\n\nmodule.exports = validate\n","module.exports = {\n  colors: require('./colors'),\n  curves: require('./curves'),\n  geometries: require('./geometries'),\n  maths: require('./maths'),\n  measurements: require('./measurements'),\n  primitives: require('./primitives'),\n  text: require('./text'),\n  utils: require('./utils'),\n\n  booleans: require('./operations/booleans'),\n  expansions: require('./operations/expansions'),\n  extrusions: require('./operations/extrusions'),\n  hulls: require('./operations/hulls'),\n  modifiers: require('./operations/modifiers'),\n  transforms: require('./operations/transforms')\n}\n","const mat4 = require('./mat4')\n\nconst vec2 = require('./vec2')\nconst vec3 = require('./vec3')\n\n/*\n * Class OrthoNormalBasis\n * Reprojects points on a 3D plane onto a 2D plane\n * or from a 2D plane back onto the 3D plane\n * @param  {plane} plane\n * @param  {vec3} rightvector\n */\nconst OrthoNormalBasis = function (plane, rightvector) {\n  if (arguments.length < 2) {\n    // choose an arbitrary right hand vector, making sure it is somewhat orthogonal to the plane normal:\n    rightvector = vec3.orthogonal(vec3.create(), plane)\n  }\n  this.v = vec3.normalize(vec3.create(), vec3.cross(vec3.create(), plane, rightvector))\n  this.u = vec3.cross(vec3.create(), this.v, plane)\n  this.plane = plane\n  this.planeorigin = vec3.scale(vec3.create(), plane, plane[3])\n}\n\n// Get an orthonormal basis for the standard XYZ planes.\n// Parameters: the names of two 3D axes. The 2d x axis will map to the first given 3D axis, the 2d y\n// axis will map to the second.\n// Prepend the axis with a \"-\" to invert the direction of this axis.\n// For example: OrthoNormalBasis.GetCartesian(\"-Y\",\"Z\")\n//   will return an orthonormal basis where the 2d X axis maps to the 3D inverted Y axis, and\n//   the 2d Y axis maps to the 3D Z axis.\nOrthoNormalBasis.GetCartesian = function (xaxisid, yaxisid) {\n  const axisid = xaxisid + '/' + yaxisid\n  let planenormal, rightvector\n  if (axisid === 'X/Y') {\n    planenormal = [0, 0, 1]\n    rightvector = [1, 0, 0]\n  } else if (axisid === 'Y/-X') {\n    planenormal = [0, 0, 1]\n    rightvector = [0, 1, 0]\n  } else if (axisid === '-X/-Y') {\n    planenormal = [0, 0, 1]\n    rightvector = [-1, 0, 0]\n  } else if (axisid === '-Y/X') {\n    planenormal = [0, 0, 1]\n    rightvector = [0, -1, 0]\n  } else if (axisid === '-X/Y') {\n    planenormal = [0, 0, -1]\n    rightvector = [-1, 0, 0]\n  } else if (axisid === '-Y/-X') {\n    planenormal = [0, 0, -1]\n    rightvector = [0, -1, 0]\n  } else if (axisid === 'X/-Y') {\n    planenormal = [0, 0, -1]\n    rightvector = [1, 0, 0]\n  } else if (axisid === 'Y/X') {\n    planenormal = [0, 0, -1]\n    rightvector = [0, 1, 0]\n  } else if (axisid === 'X/Z') {\n    planenormal = [0, -1, 0]\n    rightvector = [1, 0, 0]\n  } else if (axisid === 'Z/-X') {\n    planenormal = [0, -1, 0]\n    rightvector = [0, 0, 1]\n  } else if (axisid === '-X/-Z') {\n    planenormal = [0, -1, 0]\n    rightvector = [-1, 0, 0]\n  } else if (axisid === '-Z/X') {\n    planenormal = [0, -1, 0]\n    rightvector = [0, 0, -1]\n  } else if (axisid === '-X/Z') {\n    planenormal = [0, 1, 0]\n    rightvector = [-1, 0, 0]\n  } else if (axisid === '-Z/-X') {\n    planenormal = [0, 1, 0]\n    rightvector = [0, 0, -1]\n  } else if (axisid === 'X/-Z') {\n    planenormal = [0, 1, 0]\n    rightvector = [1, 0, 0]\n  } else if (axisid === 'Z/X') {\n    planenormal = [0, 1, 0]\n    rightvector = [0, 0, 1]\n  } else if (axisid === 'Y/Z') {\n    planenormal = [1, 0, 0]\n    rightvector = [0, 1, 0]\n  } else if (axisid === 'Z/-Y') {\n    planenormal = [1, 0, 0]\n    rightvector = [0, 0, 1]\n  } else if (axisid === '-Y/-Z') {\n    planenormal = [1, 0, 0]\n    rightvector = [0, -1, 0]\n  } else if (axisid === '-Z/Y') {\n    planenormal = [1, 0, 0]\n    rightvector = [0, 0, -1]\n  } else if (axisid === '-Y/Z') {\n    planenormal = [-1, 0, 0]\n    rightvector = [0, -1, 0]\n  } else if (axisid === '-Z/-Y') {\n    planenormal = [-1, 0, 0]\n    rightvector = [0, 0, -1]\n  } else if (axisid === 'Y/-Z') {\n    planenormal = [-1, 0, 0]\n    rightvector = [0, 1, 0]\n  } else if (axisid === 'Z/Y') {\n    planenormal = [-1, 0, 0]\n    rightvector = [0, 0, 1]\n  } else {\n    throw new Error('OrthoNormalBasis.GetCartesian: invalid combination of axis identifiers. Should pass two string arguments from [X,Y,Z,-X,-Y,-Z], being two different axes.')\n  }\n  return new OrthoNormalBasis(new Plane(new Vector3D(planenormal), 0), new Vector3D(rightvector))\n}\n\n/*\n// test code for OrthoNormalBasis.GetCartesian()\nOrthoNormalBasis.GetCartesian_Test=function() {\n  let axisnames=[\"X\",\"Y\",\"Z\",\"-X\",\"-Y\",\"-Z\"];\n  let axisvectors=[[1,0,0], [0,1,0], [0,0,1], [-1,0,0], [0,-1,0], [0,0,-1]];\n  for(let axis1=0; axis1 < 3; axis1++) {\n    for(let axis1inverted=0; axis1inverted < 2; axis1inverted++) {\n      let axis1name=axisnames[axis1+3*axis1inverted];\n      let axis1vector=axisvectors[axis1+3*axis1inverted];\n      for(let axis2=0; axis2 < 3; axis2++) {\n        if(axis2 != axis1) {\n          for(let axis2inverted=0; axis2inverted < 2; axis2inverted++) {\n            let axis2name=axisnames[axis2+3*axis2inverted];\n            let axis2vector=axisvectors[axis2+3*axis2inverted];\n            let orthobasis=OrthoNormalBasis.GetCartesian(axis1name, axis2name);\n            let test1=orthobasis.to3D(new Vector2D([1,0]));\n            let test2=orthobasis.to3D(new Vector2D([0,1]));\n            let expected1=new Vector3D(axis1vector);\n            let expected2=new Vector3D(axis2vector);\n            let d1=test1.distanceTo(expected1);\n            let d2=test2.distanceTo(expected2);\n            if( (d1 > 0.01) || (d2 > 0.01) ) {\n              throw new Error(\"Wrong!\");\n  }}}}}}\n  throw new Error(\"OK\");\n};\n*/\n\n// The z=0 plane, with the 3D x and y vectors mapped to the 2D x and y vector\nOrthoNormalBasis.Z0Plane = function () {\n  const plane = new Plane(new Vector3D([0, 0, 1]), 0)\n  return new OrthoNormalBasis(plane, new Vector3D([1, 0, 0]))\n}\n\nOrthoNormalBasis.prototype = {\n\n  getProjectionMatrix: function () {\n    return mat4.fromValues(\n      this.u[0], this.v[0], this.plane[0], 0,\n      this.u[1], this.v[1], this.plane[1], 0,\n      this.u[2], this.v[2], this.plane[2], 0,\n      0, 0, -this.plane[3], 1\n    )\n  },\n\n  getInverseProjectionMatrix: function () {\n    const p = vec3.scale(vec3.create(), this.plane, this.plane[3])\n    return mat4.fromValues(\n      this.u[0], this.u[1], this.u[2], 0,\n      this.v[0], this.v[1], this.v[2], 0,\n      this.plane[0], this.plane[1], this.plane[2], 0,\n      p[0], p[1], p[2], 1\n    )\n  },\n\n  to2D: function (point) {\n    return vec2.fromValues(vec3.dot(point, this.u), vec3.dot(point, this.v))\n  },\n\n  to3D: function (point) {\n    const v1 = vec3.scale(vec3.create(), this.u, point[0])\n    const v2 = vec3.scale(vec3.create(), this.v, point[1])\n\n    const v3 = vec3.add(v1, v1, this.planeorigin)\n    const v4 = vec3.add(v2, v2, v3)\n    return v4\n  },\n\n  line3Dto2D: function (line3d) {\n    const a = line3d.point\n    const b = line3d.direction.plus(a)\n    const a2d = this.to2D(a)\n    const b2d = this.to2D(b)\n    return Line2D.fromPoints(a2d, b2d)\n  },\n\n  line2Dto3D: function (line2d) {\n    const a = line2d.origin()\n    const b = line2d.direction().plus(a)\n    const a3d = this.to3D(a)\n    const b3d = this.to3D(b)\n    return Line3D.fromPoints(a3d, b3d)\n  },\n\n  transform: function (matrix4x4) {\n    // todo: this may not work properly in case of mirroring\n    const newplane = this.plane.transform(matrix4x4)\n    const rightpointTransformed = this.u.transform(matrix4x4)\n    const originTransformed = new Vector3D(0, 0, 0).transform(matrix4x4)\n    const newrighthandvector = rightpointTransformed.minus(originTransformed)\n    const newbasis = new OrthoNormalBasis(newplane, newrighthandvector)\n    return newbasis\n  }\n}\n\nmodule.exports = OrthoNormalBasis\n","/**\n * The resolution of space, currently one hundred nanometers.\n * This should be 1 / EPS.\n * @alias module:modeling/maths.spatialResolution\n * @default\n */\nconst spatialResolution = 1e5\n\n/**\n * Epsilon used during determination of near zero distances.\n * This should be 1 / spacialResolution.\n * @default\n * @alias module:modeling/maths.EPS\n */\nconst EPS = 1e-5\n\n/**\n * Smaller epsilon used for measuring near zero distances.\n * @default\n * @alias module:modeling/maths.NEPS\n */\nconst NEPS = 1e-13\n// NEPS is derived from a series of tests to determine the optimal precision\n// for comparing coplanar polygons, as provided by the sphere primitive at high\n// segmentation. NEPS is for 64 bit Number values.\n\nmodule.exports = {\n  EPS,\n  NEPS,\n  spatialResolution\n}\n","/**\n * Maths are computational units for fundamental Euclidean geometry. All maths operate upon array data structures.\n * Note: Maths data structures are considered immutable, so never change the contents directly.\n * @see Most computations are based upon the glMatrix library (glmatrix.net)\n * @module modeling/maths\n * @example\n * const { constants, line2, mat4, vec2, vec3 } = require('@jscad/modeling').maths\n\n */\nmodule.exports = {\n  constants: require('./constants'),\n  line2: require('./line2'),\n  line3: require('./line3'),\n  mat4: require('./mat4'),\n  plane: require('./plane'),\n  utils: require('./utils'),\n  vec2: require('./vec2'),\n  vec3: require('./vec3'),\n  vec4: require('./vec4')\n}\n","const create = require('./create')\n\n/**\n * Create a clone of the given line.\n *\n * @param {line2} line - line to clone\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.clone\n */\nconst clone = (line) => {\n  const out = create()\n  out[0] = line[0]\n  out[1] = line[1]\n  out[2] = line[2]\n  return out\n}\n\nmodule.exports = clone\n","const vec2 = require('../vec2')\n\nconst direction = require('./direction')\nconst origin = require('./origin')\n\n/**\n * Determine the closest point on the given line to the given point.\n *\n * @param {line2} line - line of reference\n * @param {vec2} point - point of reference\n * @returns {vec2} closest point\n * @alias module:modeling/maths/line2.closestPoint\n */\nconst closestPoint = (line, point) => {\n  // linear function of AB\n  const a = origin(line)\n  const b = direction(line)\n  const m1 = (b[1] - a[1]) / (b[0] - a[0])\n  const t1 = a[1] - m1 * a[0]\n  // linear function of PC\n  const m2 = -1 / m1 // perpendicular\n  const t2 = point[1] - m2 * point[0]\n  // c.x * m1 + t1 === c.x * m2 + t2\n  const x = (t2 - t1) / (m1 - m2)\n  const y = m1 * x + t1\n\n  const closest = vec2.fromValues(x, y)\n  return closest\n}\n\nmodule.exports = closestPoint\n","/**\n * Copy the given line to the receiving line.\n *\n * @param {line2} out - receiving line\n * @param {line2} line - line to copy\n * @returns {line2} out\n * @alias module:modeling/maths/line2.copy\n */\nconst copy = (out, line) => {\n  out[0] = line[0]\n  out[1] = line[1]\n  out[2] = line[2]\n  return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a unbounded line in 2D space, positioned at a point of origin.\n * A line is parametrized by a normal vector (perpendicular to the line, rotated 90 degrees counter clockwise) and\n * distance from the origin.\n *\n * Equation: A Point (P) is on Line (L) if dot(L.normal, P) == L.distance\n *\n * The contents of the array are a normal [0,1] and a distance [2].\n * @typedef {Array} line2\n */\n\n/**\n * Create a line, positioned at 0,0, and running along the X axis.\n *\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.create\n */\nconst create = () => [0, 1, 0] // normal and distance\n\nmodule.exports = create\n","const vec2 = require('../vec2')\n\n/**\n * Return the direction of the given line.\n *\n * @param {line2} line - line of reference\n * @return {vec2} a vector in the direction of the line\n * @alias module:modeling/maths/line2.direction\n */\nconst direction = (line) => {\n  const vector = vec2.normal(vec2.create(), line)\n  vec2.negate(vector, vector)\n  return vector\n}\n\nmodule.exports = direction\n","const vec2 = require('../vec2')\n\n/**\n * Calculate the distance (positive) between the given point and line.\n *\n * @param {line2} line - line of reference\n * @param {vec2} point - point of reference\n * @return {Number} distance between line and point\n * @alias module:modeling/maths/line2.distanceToPoint\n */\nconst distanceToPoint = (line, point) => {\n  let distance = vec2.dot(point, line)\n  distance = Math.abs(distance - line[2])\n  return distance\n}\n\nmodule.exports = distanceToPoint\n","/**\n * Compare the given lines for equality.\n *\n * @param {line2} line1 - first line to compare\n * @param {line2} line2 - second line to compare\n * @return {Boolean} true if lines are equal\n * @alias module:modeling/maths/line2.equals\n */\nconst equals = (line1, line2) => (line1[0] === line2[0]) && (line1[1] === line2[1] && (line1[2] === line2[2]))\n\nmodule.exports = equals\n","const vec2 = require('../vec2')\n\n/**\n * Create a new line that passes through the given points.\n *\n * @param {line2} out - receiving line\n * @param {vec2} point1 - start point of the line\n * @param {vec2} point2 - end point of the line\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.fromPoints\n */\nconst fromPoints = (out, point1, point2) => {\n  const vector = vec2.subtract(vec2.create(), point2, point1) // directional vector\n\n  vec2.normal(vector, vector)\n  vec2.normalize(vector, vector) // normalized\n\n  const distance = vec2.dot(point1, vector)\n\n  out[0] = vector[0]\n  out[1] = vector[1]\n  out[2] = distance\n  return out\n}\n\nmodule.exports = fromPoints\n","const create = require('./create')\n\n/**\n * Creates a new line initialized with the given values.\n *\n * @param {Number} x - X coordinate of the unit normal\n * @param {Number} y - Y coordinate of the unit normal\n * @param {Number} d - distance of the line from [0,0]\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.fromValues\n */\nconst fromValues = (x, y, d) => {\n  const out = create()\n  out[0] = x\n  out[1] = y\n  out[2] = d\n  return out\n}\n\nmodule.exports = fromValues\n","/**\n * Represents a unbounded line in 2D space, positioned at a point of origin.\n * @see {@link line2} for data structure information.\n * @module modeling/maths/line2\n */\nmodule.exports = {\n  clone: require('./clone'),\n  closestPoint: require('./closestPoint'),\n  copy: require('./copy'),\n  create: require('./create'),\n  direction: require('./direction'),\n  distanceToPoint: require('./distanceToPoint'),\n  equals: require('./equals'),\n  fromPoints: require('./fromPoints'),\n  fromValues: require('./fromValues'),\n  intersectPointOfLines: require('./intersectPointOfLines'),\n  origin: require('./origin'),\n  reverse: require('./reverse'),\n  toString: require('./toString'),\n  transform: require('./transform'),\n  xAtY: require('./xAtY')\n}\n","const vec2 = require('../vec2')\nconst { solve2Linear } = require('../utils')\n\n/**\n * Return the point of intersection between the given lines.\n *\n * NOTES:\n * The point will have Infinity values if the lines are parallel.\n * The point will have NaN values if the lines are the same.\n *\n * @param {line2} line1 - line of reference\n * @param {line2} line2 - line of reference\n * @return {vec2} the point of intersection\n * @alias module:modeling/maths/line2.intersectPointOfLines\n */\nconst intersectToLine = (line1, line2) => {\n  const point = solve2Linear(line1[0], line1[1], line2[0], line2[1], line1[2], line2[2])\n  return vec2.clone(point)\n}\n\nmodule.exports = intersectToLine\n","const vec2 = require('../vec2')\n\n/**\n * Return the origin of the given line.\n *\n * @param {line2} line - line of reference\n * @return {vec2} the origin of the line\n * @alias module:modeling/maths/line2.origin\n */\nconst origin = (line) => vec2.scale(vec2.create(), line, line[2])\n\nmodule.exports = origin\n","const vec2 = require('../vec2')\n\nconst copy = require('./copy')\nconst fromValues = require('./fromValues')\n\n/**\n * Create a new line in the opposite direction as the given.\n *\n * @param {line2} out - receiving line\n * @param {line2} line - line to reverse\n * @returns {line2} out\n * @alias module:modeling/maths/line2.reverse\n */\nconst reverse = (out, line) => {\n  const normal = vec2.negate(vec2.create(), line)\n  const distance = -line[2]\n  return copy(out, fromValues(normal[0], normal[1], distance))\n}\n\nmodule.exports = reverse\n","/**\n * Return a string representing the given line.\n *\n * @param {line2} line - line of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/line2.toString\n */\nconst toString = (line) => `line2: (${line[0].toFixed(7)}, ${line[1].toFixed(7)}, ${line[2].toFixed(7)})`\n\nmodule.exports = toString\n","const vec2 = require('../vec2')\n\nconst fromPoints = require('./fromPoints')\nconst origin = require('./origin')\nconst direction = require('./direction')\n\n/**\n * Transforms the given line using the given matrix.\n *\n * @param {line2} out - receiving line\n * @param {line2} line - line to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {line2} out\n * @alias module:modeling/maths/line2.transform\n */\nconst transform = (out, line, matrix) => {\n  const org = origin(line)\n  const dir = direction(line)\n\n  vec2.transform(org, org, matrix)\n  vec2.transform(dir, dir, matrix)\n\n  return fromPoints(out, org, dir)\n}\n\nmodule.exports = transform\n","const origin = require('./origin')\n\n/**\n * Determine the X coordinate of the given line at the Y coordinate.\n *\n * The X coordinate will be Infinity if the line is parallel to the X axis.\n *\n * @param {line2} line - line of reference\n * @param {Number} y - Y coordinate on the line\n * @return {Number} the X coordinate on the line\n * @alias module:modeling/maths/line2.xAtY\n */\nconst xAtY = (line, y) => {\n  let x = (line[2] - (line[1] * y)) / line[0]\n  if (Number.isNaN(x)) {\n    const org = origin(line)\n    x = org[0]\n  }\n  return x\n}\n\nmodule.exports = xAtY\n","const vec3 = require('../vec3')\n\nconst create = require('./create')\n\n/**\n * Create a clone of the given line.\n *\n * @param {line3} line - line to clone\n * @returns {line3} a new unbounded line\n * @alias module:modeling/maths/line3.clone\n */\nconst clone = (line) => {\n  const out = create()\n  vec3.copy(out[0], line[0])\n  vec3.copy(out[1], line[1])\n  return out\n}\n\nmodule.exports = clone\n","const vec3 = require('../vec3')\n\n/**\n * Determine the closest point on the given line to the given point.\n *\n * @param {line3} line - line of reference\n * @param {vec3} point - point of reference\n * @returns {vec3} a point\n * @alias module:modeling/maths/line3.closestPoint\n */\nconst closestPoint = (line, point) => {\n  const lpoint = line[0]\n  const ldirection = line[1]\n\n  const a = vec3.dot(vec3.subtract(vec3.create(), point, lpoint), ldirection)\n  const b = vec3.dot(ldirection, ldirection)\n  const t = a / b\n\n  const closestpoint = vec3.scale(vec3.create(), ldirection, t)\n  vec3.add(closestpoint, closestpoint, lpoint)\n  return closestpoint\n}\n\nmodule.exports = closestPoint\n","const vec3 = require('../vec3')\n\n/**\n * Copy the given line into the receiving line.\n *\n * @param {line3} out - receiving line\n * @param {line3} line - line to copy\n * @returns {line3} out\n * @alias module:modeling/maths/line3.copy\n */\nconst copy = (out, line) => {\n  vec3.copy(out[0], line[0])\n  vec3.copy(out[1], line[1])\n  return out\n}\n\nmodule.exports = copy\n","const vec3 = require('../vec3')\n\n/**\n * Represents a unbounded line in 3D space, positioned at a point of origin.\n * A line is parametrized by a point of origin and a directional vector.\n *\n * The array contents are two 3D vectors; origin [0,0,0] and directional vector [0,0,1].\n * @see https://en.wikipedia.org/wiki/Hesse_normal_form\n * @typedef {Array} line3\n */\n\n/**\n * Create a line, positioned at 0,0,0 and lying on the X axis.\n *\n * @returns {line3} a new unbounded line\n * @alias module:modeling/maths/line3.create\n */\nconst create = () => [\n  vec3.fromValues(0, 0, 0), // origin\n  vec3.fromValues(0, 0, 1) // direction\n]\n\nmodule.exports = create\n","/**\n * Return the direction of the given line.\n *\n * @param {line3} line - line for reference\n * @return {vec3} the relative vector in the direction of the line\n * @alias module:modeling/maths/line3.direction\n */\nconst direction = (line) => line[1]\n\nmodule.exports = direction\n","const vec3 = require('../vec3')\n\nconst closestPoint = require('./closestPoint')\n\n/**\n * Calculate the distance (positive) between the given point and line.\n *\n * @param {line3} line - line of reference\n * @param {vec3} point - point of reference\n * @return {Number} distance between line and point\n * @alias module:modeling/maths/line3.distanceToPoint\n */\nconst distanceToPoint = (line, point) => {\n  const closest = closestPoint(line, point)\n  const distancevector = vec3.subtract(vec3.create(), point, closest)\n  return vec3.length(distancevector)\n}\n\nmodule.exports = distanceToPoint\n","const vec3 = require('../vec3')\n\n/**\n * Compare the given lines for equality.\n *\n * @param {line3} line1 - first line to compare\n * @param {line3} line2 - second line to compare\n * @return {Boolean} true if lines are equal\n * @alias module:modeling/maths/line3.equals\n */\nconst equals = (line1, line2) => {\n  // compare directions (unit vectors)\n  if (!vec3.equals(line1[1], line2[1])) return false\n\n  // compare points\n  if (!vec3.equals(line1[0], line2[0])) return false\n\n  // why would lines with the same slope (direction) and different points be equal?\n  // let distance = distanceToPoint(line1, line2[0])\n  // if (distance > EPS) return false\n\n  return true\n}\n\nmodule.exports = equals\n","const vec3 = require('../vec3')\nconst { solve2Linear } = require('../utils')\n\nconst { EPS } = require('../constants')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Create a line the intersection of the given planes.\n *\n * @param {line3} out - receiving line\n * @param {plane} plane1 - first plane of reference\n * @param {plane} plane2 - second plane of reference\n * @returns {line3} out\n * @alias module:modeling/maths/line3.fromPlanes\n */\nconst fromPlanes = (out, plane1, plane2) => {\n  let direction = vec3.cross(vec3.create(), plane1, plane2)\n  let length = vec3.length(direction)\n  if (length < EPS) {\n    throw new Error('parallel planes do not intersect')\n  }\n  length = (1.0 / length)\n  direction = vec3.scale(direction, direction, length)\n\n  const absx = Math.abs(direction[0])\n  const absy = Math.abs(direction[1])\n  const absz = Math.abs(direction[2])\n  let origin\n  let r\n  if ((absx >= absy) && (absx >= absz)) {\n    // find a point p for which x is zero\n    r = solve2Linear(plane1[1], plane1[2], plane2[1], plane2[2], plane1[3], plane2[3])\n    origin = vec3.fromValues(0, r[0], r[1])\n  } else if ((absy >= absx) && (absy >= absz)) {\n    // find a point p for which y is zero\n    r = solve2Linear(plane1[0], plane1[2], plane2[0], plane2[2], plane1[3], plane2[3])\n    origin = vec3.fromValues(r[0], 0, r[1])\n  } else {\n    // find a point p for which z is zero\n    r = solve2Linear(plane1[0], plane1[1], plane2[0], plane2[1], plane1[3], plane2[3])\n    origin = vec3.fromValues(r[0], r[1], 0)\n  }\n  return fromPointAndDirection(out, origin, direction)\n}\n\nmodule.exports = fromPlanes\n","const vec3 = require('../vec3')\n\n/**\n * Create a line from the given point (origin) and direction.\n *\n * The point can be any random point on the line.\n * The direction must be a vector with positive or negative distance from the point.\n *\n * See the logic of fromPoints() for appropriate values.\n *\n * @param {line3} out - receiving line\n * @param {vec3} point - start point of the line segment\n * @param {vec3} direction - direction of the line segment\n * @returns {line3} out\n * @alias module:modeling/maths/line3.fromPointAndDirection\n */\nconst fromPointAndDirection = (out, point, direction) => {\n  const unit = vec3.normalize(vec3.create(), direction)\n\n  vec3.copy(out[0], point)\n  vec3.copy(out[1], unit)\n  return out\n}\n\nmodule.exports = fromPointAndDirection\n","const vec3 = require('../vec3')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Create a line that passes through the given points.\n *\n * @param {line3} out - receiving line\n * @param {vec3} point1 - start point of the line segment\n * @param {vec3} point2 - end point of the line segment\n * @returns {line3} out\n * @alias module:modeling/maths/line3.fromPoints\n */\nconst fromPoints = (out, point1, point2) => {\n  const direction = vec3.subtract(vec3.create(), point2, point1)\n  return fromPointAndDirection(out, point1, direction)\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a unbounded line in 3D space, positioned at a point of origin.\n * @see {@link line3} for data structure information.\n * @module modeling/maths/line3\n */\nmodule.exports = {\n  clone: require('./clone'),\n  closestPoint: require('./closestPoint'),\n  copy: require('./copy'),\n  create: require('./create'),\n  direction: require('./direction'),\n  distanceToPoint: require('./distanceToPoint'),\n  equals: require('./equals'),\n  fromPlanes: require('./fromPlanes'),\n  fromPointAndDirection: require('./fromPointAndDirection'),\n  fromPoints: require('./fromPoints'),\n  intersectPointOfLineAndPlane: require('./intersectPointOfLineAndPlane'),\n  origin: require('./origin'),\n  reverse: require('./reverse'),\n  toString: require('./toString'),\n  transform: require('./transform')\n}\n","const vec3 = require('../vec3')\n\n/**\n * Determine the closest point on the given plane to the given line.\n *\n * NOTES:\n * The point of intersection will be invalid if the line is parallel to the plane, e.g. NaN.\n *\n * @param {line3} line - line of reference\n * @param {plane} plane - plane of reference\n * @returns {vec3} a point on the line\n * @alias module:modeling/maths/line3.intersectPointOfLineAndPlane\n */\nconst intersectToPlane = (line, plane) => {\n  // plane: plane.normal * p = plane.w\n  const pnormal = plane\n  const pw = plane[3]\n\n  const lpoint = line[0]\n  const ldirection = line[1]\n\n  // point: p = line.point + labda * line.direction\n  const labda = (pw - vec3.dot(pnormal, lpoint)) / vec3.dot(pnormal, ldirection)\n\n  const point = vec3.add(vec3.create(), lpoint, vec3.scale(vec3.create(), ldirection, labda))\n  return point\n}\n\nmodule.exports = intersectToPlane\n","/**\n * Return the origin of the given line.\n *\n * @param {line3} line - line of reference\n * @return {vec3} the origin of the line\n * @alias module:modeling/maths/line3.origin\n */\nconst origin = (line) => line[0]\n\nmodule.exports = origin\n","const vec3 = require('../vec3')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Create a line in the opposite direction as the given.\n *\n * @param {line3} out - receiving line\n * @param {line3} line - line to reverse\n * @returns {line3} out\n * @alias module:modeling/maths/line3.reverse\n */\nconst reverse = (out, line) => {\n  const point = vec3.clone(line[0])\n  const direction = vec3.negate(vec3.create(), line[1])\n  return fromPointAndDirection(out, point, direction)\n}\n\nmodule.exports = reverse\n","/**\n * Return a string representing the given line.\n *\n * @param {line3} line - line of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/line3.toString\n */\nconst toString = (line) => {\n  const point = line[0]\n  const direction = line[1]\n  return `line3: point: (${point[0].toFixed(7)}, ${point[1].toFixed(7)}, ${point[2].toFixed(7)}) direction: (${direction[0].toFixed(7)}, ${direction[1].toFixed(7)}, ${direction[2].toFixed(7)})`\n}\n\nmodule.exports = toString\n","const vec3 = require('../vec3')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Transforms the given line using the given matrix.\n *\n * @param {line3} out - line to update\n * @param {line3} line - line to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {line3} a new unbounded line\n * @alias module:modeling/maths/line3.transform\n */\nconst transform = (out, line, matrix) => {\n  const point = line[0]\n  const direction = line[1]\n  const pointPlusDirection = vec3.add(vec3.create(), point, direction)\n\n  const newpoint = vec3.transform(vec3.create(), point, matrix)\n  const newPointPlusDirection = vec3.transform(pointPlusDirection, pointPlusDirection, matrix)\n  const newdirection = vec3.subtract(newPointPlusDirection, newPointPlusDirection, newpoint)\n\n  return fromPointAndDirection(out, newpoint, newdirection)\n}\n\nmodule.exports = transform\n","/**\n * Adds the two matrices (A+B).\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} a - first operand\n * @param {mat4} b - second operand\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.add\n */\nconst add = (out, a, b) => {\n  out[0] = a[0] + b[0]\n  out[1] = a[1] + b[1]\n  out[2] = a[2] + b[2]\n  out[3] = a[3] + b[3]\n  out[4] = a[4] + b[4]\n  out[5] = a[5] + b[5]\n  out[6] = a[6] + b[6]\n  out[7] = a[7] + b[7]\n  out[8] = a[8] + b[8]\n  out[9] = a[9] + b[9]\n  out[10] = a[10] + b[10]\n  out[11] = a[11] + b[11]\n  out[12] = a[12] + b[12]\n  out[13] = a[13] + b[13]\n  out[14] = a[14] + b[14]\n  out[15] = a[15] + b[15]\n  return out\n}\n\nmodule.exports = add\n","const create = require('./create')\n\n/**\n * Creates a clone of the given matrix.\n *\n * @param {mat4} matrix - matrix to clone\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.clone\n */\nconst clone = (matrix) => {\n  const out = create()\n  out[0] = matrix[0]\n  out[1] = matrix[1]\n  out[2] = matrix[2]\n  out[3] = matrix[3]\n  out[4] = matrix[4]\n  out[5] = matrix[5]\n  out[6] = matrix[6]\n  out[7] = matrix[7]\n  out[8] = matrix[8]\n  out[9] = matrix[9]\n  out[10] = matrix[10]\n  out[11] = matrix[11]\n  out[12] = matrix[12]\n  out[13] = matrix[13]\n  out[14] = matrix[14]\n  out[15] = matrix[15]\n  return out\n}\n\nmodule.exports = clone\n","const EPSILON = 0.000001\n\nmodule.exports = {\n  EPSILON\n}\n","/**\n * Creates a copy of the given matrix.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to copy\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.copy\n */\nconst copy = (out, matrix) => {\n  out[0] = matrix[0]\n  out[1] = matrix[1]\n  out[2] = matrix[2]\n  out[3] = matrix[3]\n  out[4] = matrix[4]\n  out[5] = matrix[5]\n  out[6] = matrix[6]\n  out[7] = matrix[7]\n  out[8] = matrix[8]\n  out[9] = matrix[9]\n  out[10] = matrix[10]\n  out[11] = matrix[11]\n  out[12] = matrix[12]\n  out[13] = matrix[13]\n  out[14] = matrix[14]\n  out[15] = matrix[15]\n  return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a 4x4 matrix which is column-major (when typed out it looks row-major).\n * See fromValues().\n * @typedef {Array} mat4\n */\n\n/**\n * Creates a new identity matrix.\n *\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.create\n */\nconst create = () => [\n  1, 0, 0, 0,\n  0, 1, 0, 0,\n  0, 0, 1, 0,\n  0, 0, 0, 1\n]\n\nmodule.exports = create\n","/**\n * Returns whether or not the matrices have exactly the same elements in the same position.\n *\n * @param {mat4} a - first matrix\n * @param {mat4} b - second matrix\n * @returns {Boolean} true if the matrices are equal\n * @alias module:modeling/maths/mat4.equals\n */\nconst equals = (a, b) => (\n  a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] &&\n  a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] &&\n  a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] &&\n  a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15]\n)\n\nmodule.exports = equals\n","const identity = require('./identity')\n\nconst { EPSILON } = require('./constants')\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotate(dest, dest, rad, axis)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} rad - angle to rotate the matrix by\n * @param {vec3} axis - axis of which to rotate around\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromRotation\n * @example\n * let matrix = fromRotation(create(), Math.PI / 2, [0, 0, 3])\n */\nconst fromRotation = (out, rad, axis) => {\n  let [x, y, z] = axis\n  let len = Math.hypot(x, y, z)\n\n  if (Math.abs(len) < EPSILON) {\n    // axis is 0,0,0 or almost\n    return identity(out)\n  }\n\n  len = 1 / len\n  x *= len\n  y *= len\n  z *= len\n\n  const s = Math.sin(rad)\n  const c = Math.cos(rad)\n  const t = 1 - c\n\n  // Perform rotation-specific matrix multiplication\n  out[0] = x * x * t + c\n  out[1] = y * x * t + z * s\n  out[2] = z * x * t - y * s\n  out[3] = 0\n  out[4] = x * y * t - z * s\n  out[5] = y * y * t + c\n  out[6] = z * y * t + x * s\n  out[7] = 0\n  out[8] = x * z * t + y * s\n  out[9] = y * z * t - x * s\n  out[10] = z * z * t + c\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromRotation\n","/**\n * Creates a matrix from a vector scaling.\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.scale(dest, dest, vec)\n *\n * @param {mat4} out - receiving matrix\n * @param {vec3} vector - X, Y, Z factors by which to scale\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromScaling\n * @example\n * let matrix = fromScaling([1, 2, 0.5])\n */\nconst fromScaling = (out, vector) => {\n  out[0] = vector[0]\n  out[1] = 0\n  out[2] = 0\n  out[3] = 0\n  out[4] = 0\n  out[5] = vector[1]\n  out[6] = 0\n  out[7] = 0\n  out[8] = 0\n  out[9] = 0\n  out[10] = vector[2]\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromScaling\n","/**\n * Creates a matrix from the given Tait–Bryan angles.\n *\n * Tait-Bryan Euler angle convention using active, intrinsic rotations around the axes in the order z-y-x.\n * @see https://en.wikipedia.org/wiki/Euler_angles\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} yaw - Z rotation in radians\n * @param {Number} pitch - Y rotation in radians\n * @param {Number} roll - X rotation in radians\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromTaitBryanRotation\n * @example\n * let matrix = fromTaitBryanRotation(create(), Math.PI / 2, 0, Math.PI)\n */\nconst fromTaitBryanRotation = (out, yaw, pitch, roll) => {\n  // precompute sines and cosines of Euler angles\n  const sy = Math.sin(yaw)\n  const cy = Math.cos(yaw)\n  const sp = Math.sin(pitch)\n  const cp = Math.cos(pitch)\n  const sr = Math.sin(roll)\n  const cr = Math.cos(roll)\n\n  // create and populate rotation matrix\n  // left-hand-rule rotation\n  // const els = [\n  //  cp*cy, sr*sp*cy - cr*sy, sr*sy + cr*sp*cy, 0,\n  //  cp*sy, cr*cy + sr*sp*sy, cr*sp*sy - sr*cy, 0,\n  //  -sp, sr*cp, cr*cp, 0,\n  //  0, 0, 0, 1\n  // ]\n  // right-hand-rule rotation\n  out[0] = cp * cy\n  out[1] = cp * sy\n  out[2] = -sp\n  out[3] = 0\n  out[4] = sr * sp * cy - cr * sy\n  out[5] = cr * cy + sr * sp * sy\n  out[6] = sr * cp\n  out[7] = 0\n  out[8] = sr * sy + cr * sp * cy\n  out[9] = cr * sp * sy - sr * cy\n  out[10] = cr * cp\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromTaitBryanRotation\n","/**\n * Creates a matrix from a vector translation.\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.translate(dest, dest, vec)\n *\n * @param {mat4} out - receiving matrix\n * @param {vec3} vector - offset (vector) of translation\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromTranslation\n * @example\n * let matrix = fromTranslation(create(), [1, 2, 3])\n */\nconst fromTranslation = (out, vector) => {\n  out[0] = 1\n  out[1] = 0\n  out[2] = 0\n  out[3] = 0\n  out[4] = 0\n  out[5] = 1\n  out[6] = 0\n  out[7] = 0\n  out[8] = 0\n  out[9] = 0\n  out[10] = 1\n  out[11] = 0\n  out[12] = vector[0]\n  out[13] = vector[1]\n  out[14] = vector[2]\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromTranslation\n","const create = require('./create')\n\n/**\n * Create a matrix with the given values.\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.fromValues\n * @example\n * let matrix = fromValues(\n *   1, 0, 0, 1,\n *   0, 1, 0, 0,\n *   0, 0, 1, 0,\n *   0, 0, 0, 1\n * )\n */\nconst fromValues = (m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) => {\n  const out = create()\n  out[0] = m00\n  out[1] = m01\n  out[2] = m02\n  out[3] = m03\n  out[4] = m10\n  out[5] = m11\n  out[6] = m12\n  out[7] = m13\n  out[8] = m20\n  out[9] = m21\n  out[10] = m22\n  out[11] = m23\n  out[12] = m30\n  out[13] = m31\n  out[14] = m32\n  out[15] = m33\n  return out\n}\n\nmodule.exports = fromValues\n","const vec3 = require('../vec3')\n\nconst fromRotation = require('./fromRotation')\n\n/**\n * Create a matrix that rotates the given source to the given target vector.\n *\n * Each vector must be a directional vector with a length greater than zero.\n * @see https://gist.github.com/kevinmoran/b45980723e53edeb8a5a43c49f134724\n * @param {mat4} out - receiving matrix\n * @param {vec3} source - source vector\n * @param {vec3} target - target vector\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.fromVectorRotation\n * @example\n * let matrix = fromVectorRotation(mat4.create(), [1, 2, 2], [-3, 3, 12])\n */\nconst fromVectorRotation = (out, source, target) => {\n  const sourceNormal = vec3.normalize(vec3.create(), source)\n  const targetNormal = vec3.normalize(vec3.create(), target)\n\n  const axis = vec3.cross(vec3.create(), targetNormal, sourceNormal)\n  const cosA = vec3.dot(targetNormal, sourceNormal)\n  if (cosA === -1.0) return fromRotation(out, Math.PI, vec3.orthogonal(axis, sourceNormal))\n\n  const k = 1 / (1 + cosA)\n  out[0] = (axis[0] * axis[0] * k) + cosA\n  out[1] = (axis[1] * axis[0] * k) - axis[2]\n  out[2] = (axis[2] * axis[0] * k) + axis[1]\n  out[3] = 0\n\n  out[4] = (axis[0] * axis[1] * k) + axis[2]\n  out[5] = (axis[1] * axis[1] * k) + cosA\n  out[6] = (axis[2] * axis[1] * k) - axis[0]\n  out[7] = 0\n\n  out[8] = (axis[0] * axis[2] * k) - axis[1]\n  out[9] = (axis[1] * axis[2] * k) + axis[0]\n  out[10] = (axis[2] * axis[2] * k) + cosA\n  out[11] = 0\n\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromVectorRotation\n","/**\n * Creates a matrix from the given angle around the X axis.\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateX(dest, dest, radians)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromXRotation\n * @example\n * let matrix = fromXRotation(create(), Math.PI / 2)\n */\nconst fromXRotation = (out, radians) => {\n  const s = Math.sin(radians)\n  const c = Math.cos(radians)\n\n  // Perform axis-specific matrix multiplication\n  out[0] = 1\n  out[1] = 0\n  out[2] = 0\n  out[3] = 0\n  out[4] = 0\n  out[5] = c\n  out[6] = s\n  out[7] = 0\n  out[8] = 0\n  out[9] = -s\n  out[10] = c\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromXRotation\n","/**\n * Creates a matrix from the given angle around the Y axis.\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateY(dest, dest, radians)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromYRotation\n * @example\n * let matrix = fromYRotation(create(), Math.PI / 2)\n */\nconst fromYRotation = (out, radians) => {\n  const s = Math.sin(radians)\n  const c = Math.cos(radians)\n\n  // Perform axis-specific matrix multiplication\n  out[0] = c\n  out[1] = 0\n  out[2] = -s\n  out[3] = 0\n  out[4] = 0\n  out[5] = 1\n  out[6] = 0\n  out[7] = 0\n  out[8] = s\n  out[9] = 0\n  out[10] = c\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromYRotation\n","/**\n * Creates a matrix from the given angle around the Z axis.\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateZ(dest, dest, radians)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromZRotation\n * @example\n * let matrix = fromZRotation(create(), Math.PI / 2)\n */\nconst fromZRotation = (out, radians) => {\n  const s = Math.sin(radians)\n  const c = Math.cos(radians)\n\n  // Perform axis-specific matrix multiplication\n  out[0] = c\n  out[1] = s\n  out[2] = 0\n  out[3] = 0\n  out[4] = -s\n  out[5] = c\n  out[6] = 0\n  out[7] = 0\n  out[8] = 0\n  out[9] = 0\n  out[10] = 1\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = fromZRotation\n","/**\n * Set a matrix to the identity transform.\n *\n * @param {mat4} out - receiving matrix\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.identity\n */\nconst identity = (out) => {\n  out[0] = 1\n  out[1] = 0\n  out[2] = 0\n  out[3] = 0\n  out[4] = 0\n  out[5] = 1\n  out[6] = 0\n  out[7] = 0\n  out[8] = 0\n  out[9] = 0\n  out[10] = 1\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n\nmodule.exports = identity\n","/**\n * Represents a 4x4 matrix which is column-major (when typed out it looks row-major).\n * @see {@link mat4} for data structure information.\n * @module modeling/maths/mat4\n */\nmodule.exports = {\n  add: require('./add'),\n  clone: require('./clone'),\n  copy: require('./copy'),\n  create: require('./create'),\n  invert: require('./invert'),\n  equals: require('./equals'),\n  fromRotation: require('./fromRotation'),\n  fromScaling: require('./fromScaling'),\n  fromTaitBryanRotation: require('./fromTaitBryanRotation'),\n  fromTranslation: require('./fromTranslation'),\n  fromValues: require('./fromValues'),\n  fromVectorRotation: require('./fromVectorRotation'),\n  fromXRotation: require('./fromXRotation'),\n  fromYRotation: require('./fromYRotation'),\n  fromZRotation: require('./fromZRotation'),\n  identity: require('./identity'),\n  isIdentity: require('./isIdentity'),\n  isOnlyTransformScale: require('./isOnlyTransformScale'),\n  isMirroring: require('./isMirroring'),\n  mirrorByPlane: require('./mirrorByPlane'),\n  multiply: require('./multiply'),\n  rotate: require('./rotate'),\n  rotateX: require('./rotateX'),\n  rotateY: require('./rotateY'),\n  rotateZ: require('./rotateZ'),\n  scale: require('./scale'),\n  subtract: require('./subtract'),\n  toString: require('./toString'),\n  translate: require('./translate')\n}\n","/**\n * Creates a invert copy of the given matrix.\n * @author Julian Lloyd\n * code from https://github.com/jlmakes/rematrix/blob/master/src/index.js\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to invert\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.invert\n */\nconst invert = (out, matrix) => {\n  const a00 = matrix[0]\n  const a01 = matrix[1]\n  const a02 = matrix[2]\n  const a03 = matrix[3]\n  const a10 = matrix[4]\n  const a11 = matrix[5]\n  const a12 = matrix[6]\n  const a13 = matrix[7]\n  const a20 = matrix[8]\n  const a21 = matrix[9]\n  const a22 = matrix[10]\n  const a23 = matrix[11]\n  const a30 = matrix[12]\n  const a31 = matrix[13]\n  const a32 = matrix[14]\n  const a33 = matrix[15]\n\n  const b00 = a00 * a11 - a01 * a10\n  const b01 = a00 * a12 - a02 * a10\n  const b02 = a00 * a13 - a03 * a10\n  const b03 = a01 * a12 - a02 * a11\n  const b04 = a01 * a13 - a03 * a11\n  const b05 = a02 * a13 - a03 * a12\n  const b06 = a20 * a31 - a21 * a30\n  const b07 = a20 * a32 - a22 * a30\n  const b08 = a20 * a33 - a23 * a30\n  const b09 = a21 * a32 - a22 * a31\n  const b10 = a21 * a33 - a23 * a31\n  const b11 = a22 * a33 - a23 * a32\n\n  // Calculate the determinant\n  let det =\n    b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06\n\n  if (!det) {\n    return null\n  }\n  det = 1.0 / det\n\n  out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det\n  out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det\n  out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det\n  out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det\n  out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det\n  out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det\n  out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det\n  out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det\n  out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det\n  out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det\n  out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det\n  out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det\n  out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det\n  out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det\n  out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det\n  out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det\n\n  return out\n}\n\nmodule.exports = invert\n","/**\n * Determine whether the given matrix is the identity transform.\n * This is equivalent to (but much faster than):\n *\n *     mat4.equals(mat4.create(), matrix)\n *\n * @param {mat4} matrix - the matrix\n * @returns {Boolean} true if matrix is the identity transform\n * @alias module:modeling/maths/mat4.isIdentity\n * @example\n * if (mat4.isIdentity(mymatrix)) ...\n */\nconst isIdentity = (matrix) => (\n  matrix[0] === 1 && matrix[1] === 0 && matrix[2] === 0 && matrix[3] === 0 &&\n  matrix[4] === 0 && matrix[5] === 1 && matrix[6] === 0 && matrix[7] === 0 &&\n  matrix[8] === 0 && matrix[9] === 0 && matrix[10] === 1 && matrix[11] === 0 &&\n  matrix[12] === 0 && matrix[13] === 0 && matrix[14] === 0 && matrix[15] === 1\n)\n\nmodule.exports = isIdentity\n","const cross = require('../vec3/cross')\nconst dot = require('../vec3/dot')\nconst fromValues = require('../vec3/fromValues')\n\n/**\n * Determine whether the given matrix is a mirroring transformation.\n *\n * @param {mat4} matrix - matrix of reference\n * @returns {Boolean} true if matrix is a mirroring transformation\n * @alias module:modeling/maths/mat4.isMirroring\n */\nconst isMirroring = (matrix) => {\n  const u = fromValues(matrix[0], matrix[4], matrix[8])\n  const v = fromValues(matrix[1], matrix[5], matrix[9])\n  const w = fromValues(matrix[2], matrix[6], matrix[10])\n\n  // for a true orthogonal, non-mirrored base, u.cross(v) == w\n  // If they have an opposite direction then we are mirroring\n  const mirrorvalue = dot(cross(u, u, v), w)\n  const ismirror = (mirrorvalue < 0)\n  return ismirror\n}\n\nmodule.exports = isMirroring\n","\n/**\n * Determine whether the given matrix is only translate and/or scale.\n * This code returns true for PI rotation as it can be interpreted as scale.\n *\n * @param {mat4} matrix - the matrix\n * @returns {Boolean} true if matrix is for translate and/or scale\n * @alias module:modeling/maths/mat4.isOnlyTransformScale\n */\nconst isOnlyTransformScale = (matrix) => (\n\n  // TODO check if it is worth the effort to add recognition of 90 deg rotations\n\n  isZero(matrix[1]) && isZero(matrix[2]) && isZero(matrix[3]) &&\n  isZero(matrix[4]) && isZero(matrix[6]) && isZero(matrix[7]) &&\n  isZero(matrix[8]) && isZero(matrix[9]) && isZero(matrix[11]) &&\n  matrix[15] === 1\n)\n\nconst isZero = (num) => Math.abs(num) < Number.EPSILON\n\nmodule.exports = isOnlyTransformScale\n","/**\n * Create a matrix for mirroring about the given plane.\n *\n * @param {mat4} out - receiving matrix\n * @param {vec4} plane - plane of which to mirror the matrix\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.mirrorByPlane\n */\nconst mirrorByPlane = (out, plane) => {\n  const [nx, ny, nz, w] = plane\n\n  out[0] = (1.0 - 2.0 * nx * nx)\n  out[1] = (-2.0 * ny * nx)\n  out[2] = (-2.0 * nz * nx)\n  out[3] = 0\n  out[4] = (-2.0 * nx * ny)\n  out[5] = (1.0 - 2.0 * ny * ny)\n  out[6] = (-2.0 * nz * ny)\n  out[7] = 0\n  out[8] = (-2.0 * nx * nz)\n  out[9] = (-2.0 * ny * nz)\n  out[10] = (1.0 - 2.0 * nz * nz)\n  out[11] = 0\n  out[12] = (2.0 * nx * w)\n  out[13] = (2.0 * ny * w)\n  out[14] = (2.0 * nz * w)\n  out[15] = 1\n\n  return out\n}\n\nmodule.exports = mirrorByPlane\n","/**\n * Multiplies the two matrices.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} a - first operand\n * @param {mat4} b - second operand\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.multiply\n */\nconst multiply = (out, a, b) => {\n  const a00 = a[0]\n  const a01 = a[1]\n  const a02 = a[2]\n  const a03 = a[3]\n  const a10 = a[4]\n  const a11 = a[5]\n  const a12 = a[6]\n  const a13 = a[7]\n  const a20 = a[8]\n  const a21 = a[9]\n  const a22 = a[10]\n  const a23 = a[11]\n  const a30 = a[12]\n  const a31 = a[13]\n  const a32 = a[14]\n  const a33 = a[15]\n\n  // Cache only the current line of the second matrix\n  let b0 = b[0]\n  let b1 = b[1]\n  let b2 = b[2]\n  let b3 = b[3]\n  out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n  out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n  out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n  out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n\n  b0 = b[4]\n  b1 = b[5]\n  b2 = b[6]\n  b3 = b[7]\n  out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n  out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n  out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n  out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n\n  b0 = b[8]\n  b1 = b[9]\n  b2 = b[10]\n  b3 = b[11]\n  out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n  out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n  out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n  out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n\n  b0 = b[12]\n  b1 = b[13]\n  b2 = b[14]\n  b3 = b[15]\n  out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n  out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n  out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n  out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n  return out\n}\n\nmodule.exports = multiply\n","const copy = require('./copy')\n\n/**\n * Rotates a matrix by the given angle about the given axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @param {vec3} axis - axis to rotate around\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotate\n */\nconst rotate = (out, matrix, radians, axis) => {\n  let [x, y, z] = axis\n  let len = Math.hypot(x, y, z)\n\n  if (Math.abs(len) < 0.000001) {\n    // axis is 0,0,0 or almost\n    return copy(out, matrix)\n  }\n\n  len = 1 / len\n  x *= len\n  y *= len\n  z *= len\n\n  const s = Math.sin(radians)\n  const c = Math.cos(radians)\n  const t = 1 - c\n\n  const a00 = matrix[0]\n  const a01 = matrix[1]\n  const a02 = matrix[2]\n  const a03 = matrix[3]\n  const a10 = matrix[4]\n  const a11 = matrix[5]\n  const a12 = matrix[6]\n  const a13 = matrix[7]\n  const a20 = matrix[8]\n  const a21 = matrix[9]\n  const a22 = matrix[10]\n  const a23 = matrix[11]\n\n  // Construct the elements of the rotation matrix\n  const b00 = x * x * t + c\n  const b01 = y * x * t + z * s\n  const b02 = z * x * t - y * s\n  const b10 = x * y * t - z * s\n  const b11 = y * y * t + c\n  const b12 = z * y * t + x * s\n  const b20 = x * z * t + y * s\n  const b21 = y * z * t - x * s\n  const b22 = z * z * t + c\n\n  // Perform rotation-specific matrix multiplication\n  out[0] = a00 * b00 + a10 * b01 + a20 * b02\n  out[1] = a01 * b00 + a11 * b01 + a21 * b02\n  out[2] = a02 * b00 + a12 * b01 + a22 * b02\n  out[3] = a03 * b00 + a13 * b01 + a23 * b02\n  out[4] = a00 * b10 + a10 * b11 + a20 * b12\n  out[5] = a01 * b10 + a11 * b11 + a21 * b12\n  out[6] = a02 * b10 + a12 * b11 + a22 * b12\n  out[7] = a03 * b10 + a13 * b11 + a23 * b12\n  out[8] = a00 * b20 + a10 * b21 + a20 * b22\n  out[9] = a01 * b20 + a11 * b21 + a21 * b22\n  out[10] = a02 * b20 + a12 * b21 + a22 * b22\n  out[11] = a03 * b20 + a13 * b21 + a23 * b22\n\n  if (matrix !== out) { // If the source and destination differ, copy the unchanged last row\n    out[12] = matrix[12]\n    out[13] = matrix[13]\n    out[14] = matrix[14]\n    out[15] = matrix[15]\n  }\n  return out\n}\n\nmodule.exports = rotate\n","/**\n * Rotates a matrix by the given angle around the X axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotateX\n */\nconst rotateX = (out, matrix, radians) => {\n  const s = Math.sin(radians)\n  const c = Math.cos(radians)\n  const a10 = matrix[4]\n  const a11 = matrix[5]\n  const a12 = matrix[6]\n  const a13 = matrix[7]\n  const a20 = matrix[8]\n  const a21 = matrix[9]\n  const a22 = matrix[10]\n  const a23 = matrix[11]\n\n  if (matrix !== out) { // If the source and destination differ, copy the unchanged rows\n    out[0] = matrix[0]\n    out[1] = matrix[1]\n    out[2] = matrix[2]\n    out[3] = matrix[3]\n    out[12] = matrix[12]\n    out[13] = matrix[13]\n    out[14] = matrix[14]\n    out[15] = matrix[15]\n  }\n\n  // Perform axis-specific matrix multiplication\n  out[4] = a10 * c + a20 * s\n  out[5] = a11 * c + a21 * s\n  out[6] = a12 * c + a22 * s\n  out[7] = a13 * c + a23 * s\n  out[8] = a20 * c - a10 * s\n  out[9] = a21 * c - a11 * s\n  out[10] = a22 * c - a12 * s\n  out[11] = a23 * c - a13 * s\n  return out\n}\n\nmodule.exports = rotateX\n","/**\n * Rotates a matrix by the given angle around the Y axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotateY\n */\nconst rotateY = (out, matrix, radians) => {\n  const s = Math.sin(radians)\n  const c = Math.cos(radians)\n  const a00 = matrix[0]\n  const a01 = matrix[1]\n  const a02 = matrix[2]\n  const a03 = matrix[3]\n  const a20 = matrix[8]\n  const a21 = matrix[9]\n  const a22 = matrix[10]\n  const a23 = matrix[11]\n\n  if (matrix !== out) { // If the source and destination differ, copy the unchanged rows\n    out[4] = matrix[4]\n    out[5] = matrix[5]\n    out[6] = matrix[6]\n    out[7] = matrix[7]\n    out[12] = matrix[12]\n    out[13] = matrix[13]\n    out[14] = matrix[14]\n    out[15] = matrix[15]\n  }\n\n  // Perform axis-specific matrix multiplication\n  out[0] = a00 * c - a20 * s\n  out[1] = a01 * c - a21 * s\n  out[2] = a02 * c - a22 * s\n  out[3] = a03 * c - a23 * s\n  out[8] = a00 * s + a20 * c\n  out[9] = a01 * s + a21 * c\n  out[10] = a02 * s + a22 * c\n  out[11] = a03 * s + a23 * c\n  return out\n}\n\nmodule.exports = rotateY\n","/**\n * Rotates a matrix by the given angle around the Z axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotateZ\n */\nconst rotateZ = (out, matrix, radians) => {\n  const s = Math.sin(radians)\n  const c = Math.cos(radians)\n  const a00 = matrix[0]\n  const a01 = matrix[1]\n  const a02 = matrix[2]\n  const a03 = matrix[3]\n  const a10 = matrix[4]\n  const a11 = matrix[5]\n  const a12 = matrix[6]\n  const a13 = matrix[7]\n\n  if (matrix !== out) { // If the source and destination differ, copy the unchanged last row\n    out[8] = matrix[8]\n    out[9] = matrix[9]\n    out[10] = matrix[10]\n    out[11] = matrix[11]\n    out[12] = matrix[12]\n    out[13] = matrix[13]\n    out[14] = matrix[14]\n    out[15] = matrix[15]\n  }\n\n  // Perform axis-specific matrix multiplication\n  out[0] = a00 * c + a10 * s\n  out[1] = a01 * c + a11 * s\n  out[2] = a02 * c + a12 * s\n  out[3] = a03 * c + a13 * s\n  out[4] = a10 * c - a00 * s\n  out[5] = a11 * c - a01 * s\n  out[6] = a12 * c - a02 * s\n  out[7] = a13 * c - a03 * s\n  return out\n}\n\nmodule.exports = rotateZ\n","/**\n * Scales the matrix by the given dimensions.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to scale\n * @param {vec3} dimensions - dimensions to scale the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.scale\n */\nconst scale = (out, matrix, dimensions) => {\n  const x = dimensions[0]\n  const y = dimensions[1]\n  const z = dimensions[2]\n\n  out[0] = matrix[0] * x\n  out[1] = matrix[1] * x\n  out[2] = matrix[2] * x\n  out[3] = matrix[3] * x\n  out[4] = matrix[4] * y\n  out[5] = matrix[5] * y\n  out[6] = matrix[6] * y\n  out[7] = matrix[7] * y\n  out[8] = matrix[8] * z\n  out[9] = matrix[9] * z\n  out[10] = matrix[10] * z\n  out[11] = matrix[11] * z\n  out[12] = matrix[12]\n  out[13] = matrix[13]\n  out[14] = matrix[14]\n  out[15] = matrix[15]\n  return out\n}\n\nmodule.exports = scale\n","/**\n * Subtracts matrix b from matrix a. (A-B)\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} a - first operand\n * @param {mat4} b - second operand\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.subtract\n */\nconst subtract = (out, a, b) => {\n  out[0] = a[0] - b[0]\n  out[1] = a[1] - b[1]\n  out[2] = a[2] - b[2]\n  out[3] = a[3] - b[3]\n  out[4] = a[4] - b[4]\n  out[5] = a[5] - b[5]\n  out[6] = a[6] - b[6]\n  out[7] = a[7] - b[7]\n  out[8] = a[8] - b[8]\n  out[9] = a[9] - b[9]\n  out[10] = a[10] - b[10]\n  out[11] = a[11] - b[11]\n  out[12] = a[12] - b[12]\n  out[13] = a[13] - b[13]\n  out[14] = a[14] - b[14]\n  out[15] = a[15] - b[15]\n  return out\n}\n\nmodule.exports = subtract\n","/**\n * Return a string representing the given matrix.\n *\n * @param {mat4} mat - matrix of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/mat4.toString\n */\nconst toString = (mat) => mat.map((n) => n.toFixed(7)).toString()\n\nmodule.exports = toString\n","/**\n * Translate the matrix by the given offset vector.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to translate\n * @param {vec3} offsets - offset vector to translate by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.translate\n */\nconst translate = (out, matrix, offsets) => {\n  const x = offsets[0]\n  const y = offsets[1]\n  const z = offsets[2]\n  let a00\n  let a01\n  let a02\n  let a03\n  let a10\n  let a11\n  let a12\n  let a13\n  let a20\n  let a21\n  let a22\n  let a23\n\n  if (matrix === out) {\n  // 0-11 assignments are unnecessary\n    out[12] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]\n    out[13] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]\n    out[14] = matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]\n    out[15] = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15]\n  } else {\n    a00 = matrix[0]; a01 = matrix[1]; a02 = matrix[2]; a03 = matrix[3]\n    a10 = matrix[4]; a11 = matrix[5]; a12 = matrix[6]; a13 = matrix[7]\n    a20 = matrix[8]; a21 = matrix[9]; a22 = matrix[10]; a23 = matrix[11]\n\n    out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03\n    out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13\n    out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23\n\n    out[12] = a00 * x + a10 * y + a20 * z + matrix[12]\n    out[13] = a01 * x + a11 * y + a21 * z + matrix[13]\n    out[14] = a02 * x + a12 * y + a22 * z + matrix[14]\n    out[15] = a03 * x + a13 * y + a23 * z + matrix[15]\n  }\n\n  return out\n}\n\nmodule.exports = translate\n","/**\n * Flip the given plane.\n *\n * @param {plane} out - receiving plane\n * @param {plane} plane - plane to flip\n * @return {plane} out\n * @alias module:modeling/maths/plane.flip\n */\nconst flip = (out, plane) => {\n  out[0] = -plane[0]\n  out[1] = -plane[1]\n  out[2] = -plane[2]\n  out[3] = -plane[3]\n  return out\n}\n\nmodule.exports = flip\n","const vec3 = require('../vec3')\n\n/**\n * Represents a plane in 3D coordinate space as determined by a normal (perpendicular to the plane)\n * and distance from 0,0,0.\n *\n * The contents of the array are a normal [0,1,2] and a distance [3].\n * @see https://en.wikipedia.org/wiki/Hesse_normal_form\n * @typedef {Array} plane\n */\n\n/**\n * Create a new plane from the given normal and point values.\n *\n * @param {plane} out - receiving plane\n * @param {vec3} normal - directional vector\n * @param {vec3} point - origin of plane\n * @returns {plane} out\n * @alias module:modeling/maths/plane.fromNormalAndPoint\n */\nconst fromNormalAndPoint = (out, normal, point) => {\n  const u = vec3.normalize(vec3.create(), normal)\n  const w = vec3.dot(point, u)\n\n  out[0] = u[0]\n  out[1] = u[1]\n  out[2] = u[2]\n  out[3] = w\n  return out\n}\n\nmodule.exports = fromNormalAndPoint\n","const vec3 = require('../vec3')\n\n/**\n * Create a plane from the given points.\n *\n * @param {plane} out - receiving plane\n * @param {Array} vertices - points on the plane\n * @returns {plane} out\n * @alias module:modeling/maths/plane.fromPoints\n */\nconst fromPoints = (out, ...vertices) => {\n  const len = vertices.length\n\n  // Calculate normal vector for a single vertex\n  // Inline to avoid allocations\n  const ba = vec3.create()\n  const ca = vec3.create()\n  const vertexNormal = (index) => {\n    const a = vertices[index]\n    const b = vertices[(index + 1) % len]\n    const c = vertices[(index + 2) % len]\n    vec3.subtract(ba, b, a) // ba = b - a\n    vec3.subtract(ca, c, a) // ca = c - a\n    vec3.cross(ba, ba, ca) // ba = ba x ca\n    vec3.normalize(ba, ba)\n    return ba\n  }\n\n  out[0] = 0\n  out[1] = 0\n  out[2] = 0\n  if (len === 3) {\n    // optimization for triangles, which are always coplanar\n    vec3.copy(out, vertexNormal(0))\n  } else {\n    // sum of vertex normals\n    vertices.forEach((v, i) => {\n      vec3.add(out, out, vertexNormal(i))\n    })\n    // renormalize normal vector\n    vec3.normalize(out, out)\n  }\n  out[3] = vec3.dot(out, vertices[0])\n  return out\n}\n\nmodule.exports = fromPoints\n","const { EPS } = require('../constants')\n\nconst vec3 = require('../vec3')\n\n/**\n * Create a new plane from the given points like fromPoints,\n * but allow the vectors to be on one point or one line.\n * In such a case, a random plane through the given points is constructed.\n *\n * @param {plane} out - receiving plane\n * @param {vec3} a - 3D point\n * @param {vec3} b - 3D point\n * @param {vec3} c - 3D point\n * @returns {plane} out\n * @alias module:modeling/maths/plane.fromPointsRandom\n */\nconst fromPointsRandom = (out, a, b, c) => {\n  let ba = vec3.subtract(vec3.create(), b, a)\n  let ca = vec3.subtract(vec3.create(), c, a)\n  if (vec3.length(ba) < EPS) {\n    ba = vec3.orthogonal(ba, ca)\n  }\n  if (vec3.length(ca) < EPS) {\n    ca = vec3.orthogonal(ca, ba)\n  }\n  let normal = vec3.cross(vec3.create(), ba, ca)\n  if (vec3.length(normal) < EPS) {\n    // this would mean that ba == ca.negated()\n    ca = vec3.orthogonal(ca, ba)\n    normal = vec3.cross(normal, ba, ca)\n  }\n  normal = vec3.normalize(normal, normal)\n  const w = vec3.dot(normal, a)\n\n  out[0] = normal[0]\n  out[1] = normal[1]\n  out[2] = normal[2]\n  out[3] = w\n  return out\n}\n\nmodule.exports = fromPointsRandom\n","/**\n * Represents a plane in 3D coordinate space as determined by a normal (perpendicular to the plane)\n * and distance from 0,0,0.\n * @see {@link plane} for data structure information.\n * @module modeling/maths/plane\n */\nmodule.exports = {\n  /**\n   * @see [vec4.clone()]{@link module:modeling/maths/vec4.clone}\n   * @function clone\n   */\n  clone: require('../vec4/clone'),\n  /**\n   * @see [vec4.copy()]{@link module:modeling/maths/vec4.copy}\n   * @function copy\n   */\n  copy: require('../vec4/copy'),\n  /**\n   * @see [vec4.create()]{@link module:modeling/maths/vec4.create}\n   * @function create\n   */\n  create: require('../vec4/create'),\n  /**\n   * @see [vec4.equals()]{@link module:modeling/maths/vec4.equals}\n   * @function equals\n   */\n  equals: require('../vec4/equals'),\n  flip: require('./flip'),\n  fromNormalAndPoint: require('./fromNormalAndPoint'),\n  /**\n   * @see [vec4.fromValues()]{@link module:modeling/maths/vec4.fromValues}\n   * @function fromValues\n   */\n  fromValues: require('../vec4/fromValues'),\n  fromPoints: require('./fromPoints'),\n  fromPointsRandom: require('./fromPointsRandom'),\n  projectionOfPoint: require('./projectionOfPoint'),\n  signedDistanceToPoint: require('./signedDistanceToPoint'),\n  /**\n   * @see [vec4.toString()]{@link module:modeling/maths/vec4.toString}\n   * @function toString\n   */\n  toString: require('../vec4/toString'),\n  transform: require('./transform')\n}\n","const vec3 = require('../vec3')\n\n/**\n * Project the given point on to the given plane.\n *\n * @param {plane} plane - plane of reference\n * @param {vec3} point - point of reference\n * @return {vec3} projected point on plane\n * @alias module:modeling/maths/plane.projectionOfPoint\n */\nconst projectionOfPoint = (plane, point) => {\n  const a = point[0] * plane[0] + point[1] * plane[1] + point[2] * plane[2] - plane[3]\n  const x = point[0] - a * plane[0]\n  const y = point[1] - a * plane[1]\n  const z = point[2] - a * plane[2]\n  return vec3.fromValues(x, y, z)\n}\n\nmodule.exports = projectionOfPoint\n","const vec3 = require('../vec3')\n\n/**\n * Calculate the distance to the given point.\n *\n * @param {plane} plane - plane of reference\n * @param {vec3} point - point of reference\n * @return {Number} signed distance to point\n * @alias module:modeling/maths/plane.signedDistanceToPoint\n */\nconst signedDistanceToPoint = (plane, point) => vec3.dot(plane, point) - plane[3]\n\nmodule.exports = signedDistanceToPoint\n","const mat4 = require('../mat4')\nconst vec3 = require('../vec3')\n\nconst fromPoints = require('./fromPoints')\nconst flip = require('./flip')\n\n/**\n * Transform the given plane using the given matrix\n *\n * @param {plane} out - receiving plane\n * @param {plane} plane - plane to transform\n * @param {mat4} matrix - matrix to transform with\n * @return {plane} out\n * @alias module:modeling/maths/plane.transform\n */\nconst transform = (out, plane, matrix) => {\n  const ismirror = mat4.isMirroring(matrix)\n  // get two vectors in the plane:\n  const r = vec3.orthogonal(vec3.create(), plane)\n  const u = vec3.cross(r, plane, r)\n  const v = vec3.cross(vec3.create(), plane, u)\n  // get 3 points in the plane:\n  let point1 = vec3.fromScalar(vec3.create(), plane[3])\n  vec3.multiply(point1, point1, plane)\n  let point2 = vec3.add(vec3.create(), point1, u)\n  let point3 = vec3.add(vec3.create(), point1, v)\n  // transform the points:\n  point1 = vec3.transform(point1, point1, matrix)\n  point2 = vec3.transform(point2, point2, matrix)\n  point3 = vec3.transform(point3, point3, matrix)\n  // and create a new plane from the transformed points:\n  fromPoints(out, point1, point2, point3)\n  if (ismirror) {\n    // the transform is mirroring so flip the plane\n    flip(out, out)\n  }\n  return out\n}\n\nmodule.exports = transform\n","const { NEPS } = require('../constants')\n\n/**\n * Compare two normals (unit vectors) for near equality.\n * @param {vec3} a - normal a\n * @param {vec3} b - normal b\n * @returns {Boolean} true if a and b are nearly equal\n * @alias module:modeling/maths/utils.aboutEqualNormals\n */\nconst aboutEqualNormals = (a, b) => (Math.abs(a[0] - b[0]) <= NEPS && Math.abs(a[1] - b[1]) <= NEPS && Math.abs(a[2] - b[2]) <= NEPS)\n\nmodule.exports = aboutEqualNormals\n","/**\n * Calculate the area under the given points.\n * @param {Array} points - list of 2D points\n * @return {Number} area under the given points\n * @alias module:modeling/maths/utils.area\n */\nconst area = (points) => {\n  let area = 0\n  for (let i = 0; i < points.length; i++) {\n    const j = (i + 1) % points.length\n    area += points[i][0] * points[j][1]\n    area -= points[j][0] * points[i][1]\n  }\n  return (area / 2.0)\n}\n\nmodule.exports = area\n","/**\n * Utility functions for maths.\n * @module modeling/maths/utils\n * @example\n * const { area, solve2Linear } = require('@jscad/maths').utils\n */\nmodule.exports = {\n  aboutEqualNormals: require('./aboutEqualNormals'),\n  area: require('./area'),\n  interpolateBetween2DPointsForY: require('./interpolateBetween2DPointsForY'),\n  intersect: require('./intersect'),\n  solve2Linear: require('./solve2Linear')\n}\n","/**\n * Get the X coordinate of a point with a certain Y coordinate, interpolated between two points.\n * Interpolation is robust even if the points have the same Y coordinate\n * @param {vec2} point1\n * @param {vec2} point2\n * @param {Number} y\n * @return {Array} X and Y of interpolated point\n * @alias module:modeling/maths/utils.interpolateBetween2DPointsForY\n */\nconst interpolateBetween2DPointsForY = (point1, point2, y) => {\n  let f1 = y - point1[1]\n  let f2 = point2[1] - point1[1]\n  if (f2 < 0) {\n    f1 = -f1\n    f2 = -f2\n  }\n  let t\n  if (f1 <= 0) {\n    t = 0.0\n  } else if (f1 >= f2) {\n    t = 1.0\n  } else if (f2 < 1e-10) { // FIXME Should this be EPS?\n    t = 0.5\n  } else {\n    t = f1 / f2\n  }\n  const result = point1[0] + t * (point2[0] - point1[0])\n  return result\n}\n\nmodule.exports = interpolateBetween2DPointsForY\n","/**\n * Calculate the intersect point of the two line segments (p1-p2 and p3-p4), end points included.\n * Note: If the line segments do NOT intersect then undefined is returned.\n * @see http://paulbourke.net/geometry/pointlineplane/\n * @param {vec2} p1 - first point of first line segment\n * @param {vec2} p2 - second point of first line segment\n * @param {vec2} p3 - first point of second line segment\n * @param {vec2} p4 - second point of second line segment\n * @returns {vec2} intersection point of the two line segments, or undefined\n * @alias module:modeling/maths/utils.intersect\n */\nconst intersect = (p1, p2, p3, p4) => {\n  // Check if none of the lines are of length 0\n  if ((p1[0] === p2[0] && p1[1] === p2[1]) || (p3[0] === p4[0] && p3[1] === p4[1])) {\n    return undefined\n  }\n\n  const denominator = ((p4[1] - p3[1]) * (p2[0] - p1[0]) - (p4[0] - p3[0]) * (p2[1] - p1[1]))\n\n  // Lines are parallel\n  if (Math.abs(denominator) < Number.MIN_VALUE) {\n    return undefined\n  }\n\n  const ua = ((p4[0] - p3[0]) * (p1[1] - p3[1]) - (p4[1] - p3[1]) * (p1[0] - p3[0])) / denominator\n  const ub = ((p2[0] - p1[0]) * (p1[1] - p3[1]) - (p2[1] - p1[1]) * (p1[0] - p3[0])) / denominator\n\n  // is the intersection along the segments\n  if (ua < 0 || ua > 1 || ub < 0 || ub > 1) {\n    return undefined\n  }\n\n  // Return the x and y coordinates of the intersection\n  const x = p1[0] + ua * (p2[0] - p1[0])\n  const y = p1[1] + ua * (p2[1] - p1[1])\n\n  return [x, y]\n}\n\nmodule.exports = intersect\n","const solve2Linear = (a, b, c, d, u, v) => {\n  const det = a * d - b * c\n  const invdet = 1.0 / det\n  let x = u * d - b * v\n  let y = -u * c + a * v\n  x *= invdet\n  y *= invdet\n  return [x, y]\n}\n\nmodule.exports = solve2Linear\n","/**\n * Calculates the absolute coordinates of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector of reference\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.abs\n */\nconst abs = (out, vector) => {\n  out[0] = Math.abs(vector[0])\n  out[1] = Math.abs(vector[1])\n  return out\n}\n\nmodule.exports = abs\n","/**\n * Adds the coordinates of two vectors (A+B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.add\n */\nconst add = (out, a, b) => {\n  out[0] = a[0] + b[0]\n  out[1] = a[1] + b[1]\n  return out\n}\n\nmodule.exports = add\n","module.exports = require('./angleRadians')\n","const angleRadians = require('./angleRadians')\n\n/**\n * Calculate the angle of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} angle in degrees\n * @alias module:modeling/maths/vec2.angleDegrees\n */\nconst angleDegrees = (vector) => angleRadians(vector) * 57.29577951308232\n\nmodule.exports = angleDegrees\n","/**\n * Calculate the angle of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} angle in radians\n * @alias module:modeling/maths/vec2.angleRadians\n */\nconst angleRadians = (vector) => Math.atan2(vector[1], vector[0]) // y=sin, x=cos\n\nmodule.exports = angleRadians\n","const create = require('./create')\n\n/**\n * Create a clone of the given vector.\n *\n * @param {vec2} vector - vector to clone\n * @returns {vec2} a new vector\n * @alias module:modeling/maths/vec2.clone\n */\nconst clone = (vector) => {\n  const out = create()\n  out[0] = vector[0]\n  out[1] = vector[1]\n  return out\n}\n\nmodule.exports = clone\n","/**\n * Create a copy of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - source vector\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.copy\n */\nconst copy = (out, vector) => {\n  out[0] = vector[0]\n  out[1] = vector[1]\n  return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a two dimensional vector.\n * See fromValues().\n * @typedef {Array} vec2\n */\n\n/**\n * Creates a new vector, initialized to [0,0].\n *\n * @returns {vec2} a new vector\n * @alias module:modeling/maths/vec2.create\n */\nconst create = () => [0, 0]\n\nmodule.exports = create\n","/**\n * Computes the cross product (3D) of two vectors.\n *\n * @param {vec3} out - receiving vector (3D)\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec2.cross\n */\nconst cross = (out, a, b) => {\n  out[0] = 0\n  out[1] = 0\n  out[2] = a[0] * b[1] - a[1] * b[0]\n  return out\n}\n\nmodule.exports = cross\n","/**\n * Calculates the distance between two vectors.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Number} distance\n * @alias module:modeling/maths/vec2.distance\n */\nconst distance = (a, b) => {\n  const x = b[0] - a[0]\n  const y = b[1] - a[1]\n  return Math.hypot(x, y)\n}\n\nmodule.exports = distance\n","/**\n * Divides the coordinates of two vectors (A/B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.divide\n */\nconst divide = (out, a, b) => {\n  out[0] = a[0] / b[0]\n  out[1] = a[1] / b[1]\n  return out\n}\n\nmodule.exports = divide\n","/**\n * Calculates the dot product of two vectors.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Number} dot product\n * @alias module:modeling/maths/vec2.dot\n */\nconst dot = (a, b) => a[0] * b[0] + a[1] * b[1]\n\nmodule.exports = dot\n","/**\n * Compare the given vectors for equality.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Boolean} true if a and b are equal\n * @alias module:modeling/maths/vec2.equals\n */\nconst equals = (a, b) => (a[0] === b[0]) && (a[1] === b[1])\n\nmodule.exports = equals\n","const fromAngleRadians = require('./fromAngleRadians')\n\n/**\n * Create a new vector in the direction of the given angle.\n *\n * @param {vec2} out - receiving vector\n * @param {Number} degrees - angle in degrees\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.fromAngleDegrees\n */\nconst fromAngleDegrees = (out, degrees) => fromAngleRadians(out, Math.PI * degrees / 180)\n\nmodule.exports = fromAngleDegrees\n","/**\n * Create a new vector in the direction of the given angle.\n *\n * @param {vec2} out - receiving vector\n * @param {Number} radians - angle in radians\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.fromAngleRadians\n */\nconst fromAngleRadians = (out, radians) => {\n  out[0] = Math.cos(radians)\n  out[1] = Math.sin(radians)\n  return out\n}\n\nmodule.exports = fromAngleRadians\n","/**\n * Create a vector from a single scalar value.\n *\n * @param {vec2} out - receiving vector\n * @param {Number} scalar - the scalar value\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.fromScalar\n */\nconst fromScalar = (out, scalar) => {\n  out[0] = scalar\n  out[1] = scalar\n  return out\n}\n\nmodule.exports = fromScalar\n","const create = require('./create')\n\n/**\n * Creates a new vector initialized with the given values.\n *\n * @param {Number} x - X coordinate\n * @param {Number} y - Y coordinate\n * @returns {vec2} a new vector\n * @alias module:modeling/maths/vec2.fromValues\n */\nconst fromValues = (x, y) => {\n  const out = create()\n  out[0] = x\n  out[1] = y\n  return out\n}\n\nmodule.exports = fromValues\n","/**\n * Represents a two dimensional vector.\n * @module modeling/maths/vec2\n */\nmodule.exports = {\n  abs: require('./abs'),\n  add: require('./add'),\n  angle: require('./angle'),\n  angleDegrees: require('./angleDegrees'),\n  angleRadians: require('./angleRadians'),\n  clone: require('./clone'),\n  copy: require('./copy'),\n  create: require('./create'),\n  cross: require('./cross'),\n  distance: require('./distance'),\n  divide: require('./divide'),\n  dot: require('./dot'),\n  equals: require('./equals'),\n  fromAngleDegrees: require('./fromAngleDegrees'),\n  fromAngleRadians: require('./fromAngleRadians'),\n  fromScalar: require('./fromScalar'),\n  fromValues: require('./fromValues'),\n  length: require('./length'),\n  lerp: require('./lerp'),\n  max: require('./max'),\n  min: require('./min'),\n  multiply: require('./multiply'),\n  negate: require('./negate'),\n  normal: require('./normal'),\n  normalize: require('./normalize'),\n  rotate: require('./rotate'),\n  scale: require('./scale'),\n  snap: require('./snap'),\n  squaredDistance: require('./squaredDistance'),\n  squaredLength: require('./squaredLength'),\n  subtract: require('./subtract'),\n  toString: require('./toString'),\n  transform: require('./transform')\n}\n","/**\n * Calculates the length of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} length\n * @alias module:modeling/maths/vec2.length\n */\nconst length = (vector) => Math.hypot(vector[0], vector[1])\n\nmodule.exports = length\n","/**\n * Performs a linear interpolation between two vectors.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @param {Number} t - interpolation amount between the two vectors\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.lerp\n */\nconst lerp = (out, a, b, t) => {\n  const ax = a[0]\n  const ay = a[1]\n  out[0] = ax + t * (b[0] - ax)\n  out[1] = ay + t * (b[1] - ay)\n  return out\n}\n\nmodule.exports = lerp\n","/**\n * Returns the maximum coordinates of two vectors.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.max\n */\nconst max = (out, a, b) => {\n  out[0] = Math.max(a[0], b[0])\n  out[1] = Math.max(a[1], b[1])\n  return out\n}\n\nmodule.exports = max\n","/**\n * Returns the minimum coordinates of two vectors.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.min\n */\nconst min = (out, a, b) => {\n  out[0] = Math.min(a[0], b[0])\n  out[1] = Math.min(a[1], b[1])\n  return out\n}\n\nmodule.exports = min\n","/**\n * Multiplies the coordinates of two vectors (A*B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.multiply\n */\nconst multiply = (out, a, b) => {\n  out[0] = a[0] * b[0]\n  out[1] = a[1] * b[1]\n  return out\n}\n\nmodule.exports = multiply\n","/**\n * Negates the coordinates of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to negate\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.negate\n */\nconst negate = (out, vector) => {\n  out[0] = -vector[0]\n  out[1] = -vector[1]\n  return out\n}\n\nmodule.exports = negate\n","const create = require('./create')\nconst rotate = require('./rotate')\n\n/**\n * Calculates the normal of the given vector.\n * The normal value is the given vector rotated 90 degrees.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - given value\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.normal\n */\nconst normal = (out, vector) => rotate(out, vector, create(), (Math.PI / 2))\n\nmodule.exports = normal\n","/**\n * Normalize the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to normalize\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.normalize\n */\nconst normalize = (out, vector) => {\n  const x = vector[0]\n  const y = vector[1]\n  let len = x * x + y * y\n  if (len > 0) {\n    len = 1 / Math.sqrt(len)\n  }\n  out[0] = x * len\n  out[1] = y * len\n  return out\n}\n\n// old this.dividedBy(this.length())\n\nmodule.exports = normalize\n","/**\n * Rotates the given vector by the given angle.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to rotate\n * @param {vec2} origin - origin of the rotation\n * @param {Number} radians - angle of rotation (radians)\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.rotate\n */\nconst rotate = (out, vector, origin, radians) => {\n  const x = vector[0] - origin[0]\n  const y = vector[1] - origin[1]\n  const c = Math.cos(radians)\n  const s = Math.sin(radians)\n\n  out[0] = x * c - y * s + origin[0]\n  out[1] = x * s + y * c + origin[1]\n\n  return out\n}\n\nmodule.exports = rotate\n","/**\n * Scales the coordinates of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to scale\n * @param {Number} amount - amount to scale\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.scale\n */\nconst scale = (out, vector, amount) => {\n  out[0] = vector[0] * amount\n  out[1] = vector[1] * amount\n  return out\n}\n\nmodule.exports = scale\n","/**\n * Snaps the coordinates of the given vector to the given epsilon.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to snap\n * @param {Number} epsilon - epsilon of precision, less than 0\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.snap\n */\nconst snap = (out, vector, epsilon) => {\n  out[0] = Math.round(vector[0] / epsilon) * epsilon + 0\n  out[1] = Math.round(vector[1] / epsilon) * epsilon + 0\n  return out\n}\n\nmodule.exports = snap\n","/**\n * Calculates the squared distance between the given vectors.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Number} squared distance\n * @alias module:modeling/maths/vec2.squaredDistance\n */\nconst squaredDistance = (a, b) => {\n  const x = b[0] - a[0]\n  const y = b[1] - a[1]\n  return x * x + y * y\n}\n\nmodule.exports = squaredDistance\n","/**\n * Calculates the squared length of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} squared length\n * @alias module:modeling/maths/vec2.squaredLength\n */\nconst squaredLength = (vector) => {\n  const x = vector[0]\n  const y = vector[1]\n  return x * x + y * y\n}\n\nmodule.exports = squaredLength\n","/**\n * Subtracts the coordinates of two vectors (A-B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.subtract\n */\nconst subtract = (out, a, b) => {\n  out[0] = a[0] - b[0]\n  out[1] = a[1] - b[1]\n  return out\n}\n\nmodule.exports = subtract\n","/**\n * Convert the given vector to a representative string.\n *\n * @param {vec2} vector - vector of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/vec2.toString\n */\nconst toString = (vector) => `[${vector[0].toFixed(7)}, ${vector[1].toFixed(7)}]`\n\nmodule.exports = toString\n","/**\n * Transforms the given vector using the given matrix.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.transform\n */\nconst transform = (out, vector, matrix) => {\n  const x = vector[0]\n  const y = vector[1]\n  out[0] = matrix[0] * x + matrix[4] * y + matrix[12]\n  out[1] = matrix[1] * x + matrix[5] * y + matrix[13]\n  return out\n}\n\nmodule.exports = transform\n","/**\n * Calculates the absolute coordinates of the give vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector of reference\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.abs\n */\nconst abs = (out, vector) => {\n  out[0] = Math.abs(vector[0])\n  out[1] = Math.abs(vector[1])\n  out[2] = Math.abs(vector[2])\n  return out\n}\n\nmodule.exports = abs\n","/**\n * Adds the coordinates of two vectors (A+B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.add\n */\nconst add = (out, a, b) => {\n  out[0] = a[0] + b[0]\n  out[1] = a[1] + b[1]\n  out[2] = a[2] + b[2]\n  return out\n}\n\nmodule.exports = add\n","const dot = require('./dot')\n\n/**\n * Calculate the angle between two vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} angle (radians)\n * @alias module:modeling/maths/vec3.angle\n */\nconst angle = (a, b) => {\n  const ax = a[0]\n  const ay = a[1]\n  const az = a[2]\n  const bx = b[0]\n  const by = b[1]\n  const bz = b[2]\n  const mag1 = Math.hypot(ax, ay, az)\n  const mag2 = Math.hypot(bx, by, bz)\n  const mag = mag1 * mag2\n  const cosine = mag && dot(a, b) / mag\n  return Math.acos(Math.min(Math.max(cosine, -1), 1))\n}\n\nmodule.exports = angle\n","const create = require('./create')\n\n/**\n * Create a clone of the given vector.\n *\n * @param {vec3} vector - vector to clone\n * @returns {vec3} a new vector\n * @alias module:modeling/maths/vec3.clone\n */\nconst clone = (vector) => {\n  const out = create()\n  out[0] = vector[0]\n  out[1] = vector[1]\n  out[2] = vector[2]\n  return out\n}\n\nmodule.exports = clone\n","/**\n * Create a copy of the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to copy\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.copy\n */\nconst copy = (out, vector) => {\n  out[0] = vector[0]\n  out[1] = vector[1]\n  out[2] = vector[2]\n  return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a three dimensional vector.\n * See fromValues().\n * @typedef {Array} vec3\n */\n\n/**\n * Creates a new vector initialized to [0,0,0].\n *\n * @returns {vec3} a new vector\n * @alias module:modeling/maths/vec3.create\n */\nconst create = () => [0, 0, 0]\n\nmodule.exports = create\n","/**\n * Computes the cross product of the given vectors (AxB).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.cross\n */\nconst cross = (out, a, b) => {\n  const ax = a[0]\n  const ay = a[1]\n  const az = a[2]\n  const bx = b[0]\n  const by = b[1]\n  const bz = b[2]\n\n  out[0] = ay * bz - az * by\n  out[1] = az * bx - ax * bz\n  out[2] = ax * by - ay * bx\n  return out\n}\n\nmodule.exports = cross\n","/**\n * Calculates the Euclidian distance between the given vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} distance\n * @alias module:modeling/maths/vec3.distance\n */\nconst distance = (a, b) => {\n  const x = b[0] - a[0]\n  const y = b[1] - a[1]\n  const z = b[2] - a[2]\n  return Math.hypot(x, y, z)\n}\n\nmodule.exports = distance\n","/**\n * Divides the coordinates of two vectors (A/B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - dividend vector\n * @param {vec3} b - divisor vector\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.divide\n */\nconst divide = (out, a, b) => {\n  out[0] = a[0] / b[0]\n  out[1] = a[1] / b[1]\n  out[2] = a[2] / b[2]\n  return out\n}\n\nmodule.exports = divide\n","/**\n * Calculates the dot product of two vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} dot product\n * @alias module:modeling/maths/vec3.dot\n */\nconst dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2]\n\nmodule.exports = dot\n","/**\n * Compare the given vectors for equality.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Boolean} true if a and b are equal\n * @alias module:modeling/maths/vec3.equals\n */\nconst equals = (a, b) => (a[0] === b[0]) && (a[1] === b[1]) && (a[2] === b[2])\n\nmodule.exports = equals\n","/**\n * Creates a vector from a single scalar value.\n * All components of the resulting vector have the given value.\n *\n * @param {vec3} out - receiving vector\n * @param {Number} scalar\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.fromScalar\n */\nconst fromScalar = (out, scalar) => {\n  out[0] = scalar\n  out[1] = scalar\n  out[2] = scalar\n  return out\n}\n\nmodule.exports = fromScalar\n","const create = require('./create')\n\n/**\n * Creates a new vector initialized with the given values.\n *\n * @param {Number} x - X component\n * @param {Number} y - Y component\n * @param {Number} z - Z component\n * @returns {vec3} a new vector\n * @alias module:modeling/maths/vec3.fromValues\n */\nconst fromValues = (x, y, z) => {\n  const out = create()\n  out[0] = x\n  out[1] = y\n  out[2] = z\n  return out\n}\n\nmodule.exports = fromValues\n","/**\n * Create a new vector by extending a 2D vector with a Z value.\n *\n * @param {vec3} out - receiving vector\n * @param {Array} vector - 2D vector of values\n * @param {Number} [z=0] - Z value\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.fromVec2\n */\nconst fromVector2 = (out, vector, z = 0) => {\n  out[0] = vector[0]\n  out[1] = vector[1]\n  out[2] = z\n  return out\n}\n\nmodule.exports = fromVector2\n","/**\n * Represents a three dimensional vector.\n * @see {@link vec3} for data structure information.\n * @module modeling/maths/vec3\n */\nmodule.exports = {\n  abs: require('./abs'),\n  add: require('./add'),\n  angle: require('./angle'),\n  clone: require('./clone'),\n  copy: require('./copy'),\n  create: require('./create'),\n  cross: require('./cross'),\n  distance: require('./distance'),\n  divide: require('./divide'),\n  dot: require('./dot'),\n  equals: require('./equals'),\n  fromScalar: require('./fromScalar'),\n  fromValues: require('./fromValues'),\n  fromVec2: require('./fromVec2'),\n  length: require('./length'),\n  lerp: require('./lerp'),\n  max: require('./max'),\n  min: require('./min'),\n  multiply: require('./multiply'),\n  negate: require('./negate'),\n  normalize: require('./normalize'),\n  orthogonal: require('./orthogonal'),\n  rotateX: require('./rotateX'),\n  rotateY: require('./rotateY'),\n  rotateZ: require('./rotateZ'),\n  scale: require('./scale'),\n  snap: require('./snap'),\n  squaredDistance: require('./squaredDistance'),\n  squaredLength: require('./squaredLength'),\n  subtract: require('./subtract'),\n  toString: require('./toString'),\n  transform: require('./transform')\n}\n","/**\n * Calculates the length of a vector.\n *\n * @param {vec3} vector - vector to calculate length of\n * @returns {Number} length\n * @alias module:modeling/maths/vec3.length\n */\nconst length = (vector) => {\n  const x = vector[0]\n  const y = vector[1]\n  const z = vector[2]\n  return Math.hypot(x, y, z)\n}\n\nmodule.exports = length\n","/**\n * Performs a linear interpolation between two vectors.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @param {Number} t - interpolant (0.0 to 1.0) applied between the two inputs\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.lerp\n */\nconst lerp = (out, a, b, t) => {\n  out[0] = a[0] + t * (b[0] - a[0])\n  out[1] = a[1] + t * (b[1] - a[1])\n  out[2] = a[2] + t * (b[2] - a[2])\n  return out\n}\n\nmodule.exports = lerp\n","/**\n * Returns the maximum coordinates of the given vectors.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.max\n */\nconst max = (out, a, b) => {\n  out[0] = Math.max(a[0], b[0])\n  out[1] = Math.max(a[1], b[1])\n  out[2] = Math.max(a[2], b[2])\n  return out\n}\n\nmodule.exports = max\n","/**\n * Returns the minimum coordinates of the given vectors.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.min\n */\nconst min = (out, a, b) => {\n  out[0] = Math.min(a[0], b[0])\n  out[1] = Math.min(a[1], b[1])\n  out[2] = Math.min(a[2], b[2])\n  return out\n}\n\nmodule.exports = min\n","/**\n * Multiply the coordinates of the given vectors (A*B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.multiply\n */\nconst multiply = (out, a, b) => {\n  out[0] = a[0] * b[0]\n  out[1] = a[1] * b[1]\n  out[2] = a[2] * b[2]\n  return out\n}\n\nmodule.exports = multiply\n","/**\n * Negates the coordinates of the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to negate\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.negate\n */\nconst negate = (out, vector) => {\n  out[0] = -vector[0]\n  out[1] = -vector[1]\n  out[2] = -vector[2]\n  return out\n}\n\nmodule.exports = negate\n","/**\n * Normalize the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to normalize\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.normalize\n */\nconst normalize = (out, vector) => {\n  const x = vector[0]\n  const y = vector[1]\n  const z = vector[2]\n  let len = x * x + y * y + z * z\n  if (len > 0) {\n    len = 1 / Math.sqrt(len)\n  }\n  out[0] = x * len\n  out[1] = y * len\n  out[2] = z * len\n  return out\n}\n\nmodule.exports = normalize\n","const abs = require('./abs')\nconst create = require('./create')\nconst cross = require('./cross')\n\n/**\n * Create a new vector that is orthogonal to the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector of reference\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.orthogonal\n */\nconst orthogonal = (out, vector) => {\n  const bV = abs(create(), vector)\n  const b0 = 0 + ((bV[0] < bV[1]) && (bV[0] < bV[2]))\n  const b1 = 0 + ((bV[1] <= bV[0]) && (bV[1] < bV[2]))\n  const b2 = 0 + ((bV[2] <= bV[0]) && (bV[2] <= bV[1]))\n\n  return cross(out, vector, [b0, b1, b2])\n}\n\nmodule.exports = orthogonal\n","/**\n * Rotate the given vector around the given origin, X axis only.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to rotate\n * @param {vec3} origin - origin of the rotation\n * @param {Number} radians - angle of rotation\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.rotateX\n */\nconst rotateX = (out, vector, origin, radians) => {\n  const p = []\n  const r = []\n\n  // translate point to the origin\n  p[0] = vector[0] - origin[0]\n  p[1] = vector[1] - origin[1]\n  p[2] = vector[2] - origin[2]\n\n  // perform rotation\n  r[0] = p[0]\n  r[1] = p[1] * Math.cos(radians) - p[2] * Math.sin(radians)\n  r[2] = p[1] * Math.sin(radians) + p[2] * Math.cos(radians)\n\n  // translate to correct position\n  out[0] = r[0] + origin[0]\n  out[1] = r[1] + origin[1]\n  out[2] = r[2] + origin[2]\n\n  return out\n}\n\nmodule.exports = rotateX\n","/**\n * Rotate the given vector around the given origin, Y axis only.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to rotate\n * @param {vec3} origin - origin of the rotation\n * @param {Number} radians - angle of rotation\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.rotateY\n */\nconst rotateY = (out, vector, origin, radians) => {\n  const p = []\n  const r = []\n\n  // translate point to the origin\n  p[0] = vector[0] - origin[0]\n  p[1] = vector[1] - origin[1]\n  p[2] = vector[2] - origin[2]\n\n  // perform rotation\n  r[0] = p[2] * Math.sin(radians) + p[0] * Math.cos(radians)\n  r[1] = p[1]\n  r[2] = p[2] * Math.cos(radians) - p[0] * Math.sin(radians)\n\n  // translate to correct position\n  out[0] = r[0] + origin[0]\n  out[1] = r[1] + origin[1]\n  out[2] = r[2] + origin[2]\n\n  return out\n}\n\nmodule.exports = rotateY\n","/**\n * Rotate the given vector around the given origin, Z axis only.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to rotate\n * @param {vec3} origin - origin of the rotation\n * @param {Number} radians - angle of rotation in radians\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.rotateZ\n */\nconst rotateZ = (out, vector, origin, radians) => {\n  const p = []\n  const r = []\n  // Translate point to the origin\n  p[0] = vector[0] - origin[0]\n  p[1] = vector[1] - origin[1]\n\n  // perform rotation\n  r[0] = (p[0] * Math.cos(radians)) - (p[1] * Math.sin(radians))\n  r[1] = (p[0] * Math.sin(radians)) + (p[1] * Math.cos(radians))\n\n  // translate to correct position\n  out[0] = r[0] + origin[0]\n  out[1] = r[1] + origin[1]\n  out[2] = vector[2]\n\n  return out\n}\n\nmodule.exports = rotateZ\n","/**\n * Scales the coordinates of the given vector by a scalar number.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to scale\n * @param {Number} amount - amount to scale the vector by\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.scale\n */\nconst scale = (out, vector, amount) => {\n  out[0] = vector[0] * amount\n  out[1] = vector[1] * amount\n  out[2] = vector[2] * amount\n  return out\n}\n\nmodule.exports = scale\n","/**\n * Snaps the coordinates of the given vector to the given epsilon.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to snap\n * @param {Number} epsilon - epsilon of precision, less than 0\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.snap\n */\nconst snap = (out, vector, epsilon) => {\n  out[0] = Math.round(vector[0] / epsilon) * epsilon + 0\n  out[1] = Math.round(vector[1] / epsilon) * epsilon + 0\n  out[2] = Math.round(vector[2] / epsilon) * epsilon + 0\n  return out\n}\n\nmodule.exports = snap\n","/**\n * Calculates the squared distance between two vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} squared distance\n * @alias module:modeling/maths/vec3.squaredDistance\n */\nconst squaredDistance = (a, b) => {\n  const x = b[0] - a[0]\n  const y = b[1] - a[1]\n  const z = b[2] - a[2]\n  return x * x + y * y + z * z\n}\n\nmodule.exports = squaredDistance\n","/**\n * Calculates the squared length of the given vector.\n *\n * @param {vec3} vector - vector to calculate squared length of\n * @returns {Number} squared length\n * @alias module:modeling/maths/vec3.squaredLength\n */\nconst squaredLength = (vector) => {\n  const x = vector[0]\n  const y = vector[1]\n  const z = vector[2]\n  return x * x + y * y + z * z\n}\n\nmodule.exports = squaredLength\n","/**\n * Subtracts the coordinates of two vectors (A-B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - minuend vector\n * @param {vec3} b - subtrahend vector\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.subtract\n */\nconst subtract = (out, a, b) => {\n  out[0] = a[0] - b[0]\n  out[1] = a[1] - b[1]\n  out[2] = a[2] - b[2]\n  return out\n}\n\nmodule.exports = subtract\n","/**\n * Convert the given vector to a representative string.\n * @param {vec3} vec - vector of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/vec3.toString\n */\nconst toString = (vec) => `[${vec[0].toFixed(7)}, ${vec[1].toFixed(7)}, ${vec[2].toFixed(7)}]`\n\nmodule.exports = toString\n","/**\n * Transforms the given vector using the given matrix.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to transform\n * @param {mat4} matrix - transform matrix\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.transform\n */\nconst transform = (out, vector, matrix) => {\n  const x = vector[0]\n  const y = vector[1]\n  const z = vector[2]\n  let w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15]\n  w = w || 1.0\n  out[0] = (matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]) / w\n  out[1] = (matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]) / w\n  out[2] = (matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]) / w\n  return out\n}\n\nmodule.exports = transform\n","const create = require('./create')\n\n/**\n * Create a clone of the given vector.\n *\n * @param {vec4} vector - source vector\n * @returns {vec4} a new vector\n * @alias module:modeling/maths/vec4.clone\n */\nconst clone = (vector) => {\n  const out = create()\n  out[0] = vector[0]\n  out[1] = vector[1]\n  out[2] = vector[2]\n  out[3] = vector[3]\n  return out\n}\n\nmodule.exports = clone\n","/**\n * Create a copy of the given vector.\n *\n * @param {vec4} out - receiving vector\n * @param {vec4} vector - source vector\n * @returns {vec4} out\n * @alias module:modeling/maths/vec4.copy\n */\nconst copy = (out, vector) => {\n  out[0] = vector[0]\n  out[1] = vector[1]\n  out[2] = vector[2]\n  out[3] = vector[3]\n  return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a four dimensional vector.\n * See fromValues().\n * @typedef {Array} vec4\n */\n\n/**\n * Creates a new vector initialized to [0,0,0,0].\n *\n * @returns {vec4} a new vector\n * @alias module:modeling/maths/vec4.create\n */\nconst create = () => [0, 0, 0, 0]\n\nmodule.exports = create\n","/**\n * Calculates the dot product of the given vectors.\n *\n * @param {vec4} a - first vector\n * @param {vec4} b - second vector\n * @returns {Number} dot product\n * @alias module:modeling/maths/vec4.dot\n */\nconst dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]\n\nmodule.exports = dot\n","/**\n * Compare the given vectors for equality.\n *\n * @param {vec4} a - first vector\n * @param {vec4} b - second vector\n * @return {Boolean} true if vectors are equal\n * @alias module:modeling/maths/vec4.equals\n */\nconst equals = (a, b) => ((a[0] === b[0]) && (a[1] === b[1]) && (a[2] === b[2]) && (a[3] === b[3]))\n\nmodule.exports = equals\n","/**\n * Create a new vector from the given scalar value.\n *\n * @param {vec4} out - receiving vector\n * @param  {Number} scalar\n * @returns {vec4} out\n * @alias module:modeling/maths/vec4.fromScalar\n */\nconst fromScalar = (out, scalar) => {\n  out[0] = scalar\n  out[1] = scalar\n  out[2] = scalar\n  out[3] = scalar\n  return out\n}\n\nmodule.exports = fromScalar\n","const create = require('./create')\n\n/**\n * Creates a new vector with the given values.\n *\n * @param {Number} x - X component\n * @param {Number} y - Y component\n * @param {Number} z - Z component\n * @param {Number} w - W component\n * @returns {vec4} a new vector\n * @alias module:modeling/maths/vec4.fromValues\n */\nconst fromValues = (x, y, z, w) => {\n  const out = create()\n  out[0] = x\n  out[1] = y\n  out[2] = z\n  out[3] = w\n  return out\n}\n\nmodule.exports = fromValues\n","/**\n * Represents a four dimensional vector.\n * @see {@link vec4} for data structure information.\n * @module modeling/maths/vec4\n */\nmodule.exports = {\n  clone: require('./clone'),\n  copy: require('./copy'),\n  create: require('./create'),\n  dot: require('./dot'),\n  equals: require('./equals'),\n  fromScalar: require('./fromScalar'),\n  fromValues: require('./fromValues'),\n  toString: require('./toString'),\n  transform: require('./transform')\n}\n","/**\n * Convert the given vector to a representative string.\n *\n * @param {vec4} vec - vector to convert\n * @returns {String} representative string\n * @alias module:modeling/maths/vec4.toString\n */\nconst toString = (vec) => `(${vec[0].toFixed(9)}, ${vec[1].toFixed(9)}, ${vec[2].toFixed(9)}, ${vec[3].toFixed(9)})`\n\nmodule.exports = toString\n","/**\n * Transform the given vector using the given matrix.\n *\n * @param {vec4} out - receiving vector\n * @param {vec4} vector - vector to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {vec4} out\n * @alias module:modeling/maths/vec4.transform\n */\nconst transform = (out, vector, matrix) => {\n  const [x, y, z, w] = vector\n\n  out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12] * w\n  out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13] * w\n  out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14] * w\n  out[3] = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15] * w\n  return out\n}\n\nmodule.exports = transform\n","const { EPS } = require('../maths/constants')\n\nconst calculateEpsilonFromBounds = (bounds, dimensions) => {\n  let total = 0\n  for (let i = 0; i < dimensions; i++) {\n    total += bounds[1][i] - bounds[0][i]\n  }\n  return EPS * total / dimensions\n}\n\nmodule.exports = calculateEpsilonFromBounds\n","/**\n * All shapes (primitives or the results of operations) can be measured, e.g. calculate volume, etc.\n * @module modeling/measurements\n * @example\n * const { measureArea, measureBoundingBox, measureVolume } = require('@jscad/modeling').measurements\n */\nmodule.exports = {\n  measureAggregateArea: require('./measureAggregateArea'),\n  measureAggregateBoundingBox: require('./measureAggregateBoundingBox'),\n  measureAggregateEpsilon: require('./measureAggregateEpsilon'),\n  measureAggregateVolume: require('./measureAggregateVolume'),\n  measureArea: require('./measureArea'),\n  measureBoundingBox: require('./measureBoundingBox'),\n  measureBoundingSphere: require('./measureBoundingSphere'),\n  measureCenter: require('./measureCenter'),\n  measureCenterOfMass: require('./measureCenterOfMass'),\n  measureDimensions: require('./measureDimensions'),\n  measureEpsilon: require('./measureEpsilon'),\n  measureVolume: require('./measureVolume')\n}\n","const flatten = require('../utils/flatten')\n\nconst measureArea = require('./measureArea')\n\n/**\n * Measure the total (aggregate) area for the given geometries.\n * Note: This measurement will not account for overlapping geometry\n * @param {...Object} geometries - the geometries to measure.\n * @return {Number} the total surface area for the group of geometry.\n * @alias module:modeling/measurements.measureAggregateArea\n *\n * @example\n * let totalArea = measureAggregateArea(sphere(),cube())\n */\nconst measureAggregateArea = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('measureAggregateArea: no geometries supplied')\n  const areas = measureArea(geometries)\n  if (geometries.length === 1) {\n    return areas\n  }\n  const result = 0\n  return areas.reduce((result, area) => result + area, result)\n}\n\nmodule.exports = measureAggregateArea\n","const flatten = require('../utils/flatten')\nconst vec3min = require('../maths/vec3/min')\nconst vec3max = require('../maths/vec3/max')\n\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/**\n * Measure the aggregated minimum and maximum bounds for the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the min and max bounds for the group of geometry, i.e. [[x,y,z],[X,Y,Z]]\n * @alias module:modeling/measurements.measureAggregateBoundingBox\n *\n * @example\n * let bounds = measureAggregateBoundingBox(sphere(),cube())\n */\nconst measureAggregateBoundingBox = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('measureAggregateBoundingBox: no geometries supplied')\n  const bounds = measureBoundingBox(geometries)\n  if (geometries.length === 1) {\n    return bounds\n  }\n  const result = [[Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE], [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE]]\n  return bounds.reduce((result, item) => {\n    result = [vec3min(result[0], result[0], item[0]), vec3max(result[1], result[1], item[1])]\n    return result\n  }, result)\n}\n\nmodule.exports = measureAggregateBoundingBox\n","const flatten = require('../utils/flatten')\nconst measureAggregateBoundingBox = require('./measureAggregateBoundingBox')\nconst calculateEpsilonFromBounds = require('./calculateEpsilonFromBounds')\nconst { geom2, geom3, path2 } = require('../geometries')\n\n/**\n * Measure the aggregated Epsilon for the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Number} the aggregated Epsilon for the whole group of geometries\n * @alias module:modeling/measurements.measureAggregateEpsilon\n *\n * @example\n * let groupEpsilon = measureAggregateEpsilon(sphere(),cube())\n */\nconst measureAggregateEpsilon = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('measureAggregateEpsilon: no geometries supplied')\n  const bounds = measureAggregateBoundingBox(geometries)\n\n  let dimensions = 0\n  dimensions = geometries.reduce((dimensions, geometry) => {\n    if (path2.isA(geometry) || geom2.isA(geometry)) return Math.max(dimensions, 2)\n    if (geom3.isA(geometry)) return Math.max(dimensions, 3)\n    return 0\n  }, dimensions)\n  return calculateEpsilonFromBounds(bounds, dimensions)\n}\n\nmodule.exports = measureAggregateEpsilon\n","const flatten = require('../utils/flatten')\n\nconst measureVolume = require('./measureVolume')\n\n/**\n * Measure the total (aggregate) volume for the given geometries.\n * Note: This measurement will not account for overlapping geometry\n * @param {...Object} geometries - the geometries to measure.\n * @return {Number} the volume for the group of geometry.\n * @alias module:modeling/measurements.measureAggregateVolume\n *\n * @example\n * let totalVolume = measureAggregateVolume(sphere(),cube())\n */\nconst measureAggregateVolume = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('measureAggregateVolume: no geometries supplied')\n  const volumes = measureVolume(geometries)\n  if (geometries.length === 1) {\n    return volumes\n  }\n  const result = 0\n  return volumes.reduce((result, volume) => result + volume, result)\n}\n\nmodule.exports = measureAggregateVolume\n","const flatten = require('../utils/flatten')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cache = new WeakMap()\n\n/*\n * Measure the area of the given geometry.\n * NOTE: paths are infinitely narrow and do not have an area\n *\n * @param {path2} geometry - geometry to measure\n * @returns {Number} area of the geometry\n */\nconst measureAreaOfPath2 = () => 0\n\n/*\n * Measure the area of the given geometry.\n * For a counter clockwise rotating geometry (about Z) the area is positive, otherwise negative.\n *\n * @see http://paulbourke.net/geometry/polygonmesh/\n * @param {geom2} geometry - 2D geometry to measure\n * @returns {Number} area of the geometry\n */\nconst measureAreaOfGeom2 = (geometry) => {\n  let area = cache.get(geometry)\n  if (area) return area\n\n  const sides = geom2.toSides(geometry)\n  area = sides.reduce((area, side) => area + (side[0][0] * side[1][1] - side[0][1] * side[1][0]), 0)\n  area *= 0.5\n\n  cache.set(geometry, area)\n\n  return area\n}\n\n/*\n * Measure the area of the given geometry.\n *\n * @param {geom3} geometry - 3D geometry to measure\n * @returns {Number} area of the geometry\n */\nconst measureAreaOfGeom3 = (geometry) => {\n  let area = cache.get(geometry)\n  if (area) return area\n\n  const polygons = geom3.toPolygons(geometry)\n  area = polygons.reduce((area, polygon) => area + poly3.measureArea(polygon), 0)\n\n  cache.set(geometry, area)\n\n  return area\n}\n\n/**\n * Measure the area of the given geometries.\n * @param {...Objects} geometries - the geometries to measure\n * @return {Number|Array} the area, or a list of areas for each geometry\n * @alias module:modeling/measurements.measureArea\n *\n * @example\n * let area = measureArea(sphere())\n */\nconst measureArea = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  const results = geometries.map((geometry) => {\n    if (path2.isA(geometry)) return measureAreaOfPath2(geometry)\n    if (geom2.isA(geometry)) return measureAreaOfGeom2(geometry)\n    if (geom3.isA(geometry)) return measureAreaOfGeom3(geometry)\n    return 0\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureArea\n","const flatten = require('../utils/flatten')\n\nconst vec2 = require('../maths/vec2')\nconst vec3 = require('../maths/vec3')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cache = new WeakMap()\n\n/*\n * Measure the min and max bounds of the given (path2) geometry.\n * @return {Array[]} the min and max bounds for the geometry\n */\nconst measureBoundingBoxOfPath2 = (geometry) => {\n  let boundingBox = cache.get(geometry)\n  if (boundingBox) return boundingBox\n\n  const points = path2.toPoints(geometry)\n\n  let minpoint\n  if (points.length === 0) {\n    minpoint = vec2.create()\n  } else {\n    minpoint = vec2.clone(points[0])\n  }\n  let maxpoint = vec2.clone(minpoint)\n\n  points.forEach((point) => {\n    vec2.min(minpoint, minpoint, point)\n    vec2.max(maxpoint, maxpoint, point)\n  })\n  minpoint = [minpoint[0], minpoint[1], 0]\n  maxpoint = [maxpoint[0], maxpoint[1], 0]\n\n  boundingBox = [minpoint, maxpoint]\n\n  cache.set(geometry, boundingBox)\n\n  return boundingBox\n}\n\n/*\n * Measure the min and max bounds of the given (geom2) geometry.\n * @return {Array[]} the min and max bounds for the geometry\n */\nconst measureBoundingBoxOfGeom2 = (geometry) => {\n  let boundingBox = cache.get(geometry)\n  if (boundingBox) return boundingBox\n\n  const points = geom2.toPoints(geometry)\n\n  let minpoint\n  if (points.length === 0) {\n    minpoint = vec2.create()\n  } else {\n    minpoint = vec2.clone(points[0])\n  }\n  let maxpoint = vec2.clone(minpoint)\n\n  points.forEach((point) => {\n    vec2.min(minpoint, minpoint, point)\n    vec2.max(maxpoint, maxpoint, point)\n  })\n\n  minpoint = [minpoint[0], minpoint[1], 0]\n  maxpoint = [maxpoint[0], maxpoint[1], 0]\n\n  boundingBox = [minpoint, maxpoint]\n\n  cache.set(geometry, boundingBox)\n\n  return boundingBox\n}\n\n/*\n * Measure the min and max bounds of the given (geom3) geometry.\n * @return {Array[]} the min and max bounds for the geometry\n */\nconst measureBoundingBoxOfGeom3 = (geometry) => {\n  let boundingBox = cache.get(geometry)\n  if (boundingBox) return boundingBox\n\n  const polygons = geom3.toPolygons(geometry)\n\n  let minpoint = vec3.create()\n  if (polygons.length > 0) {\n    const points = poly3.toPoints(polygons[0])\n    vec3.copy(minpoint, points[0])\n  }\n  let maxpoint = vec3.clone(minpoint)\n\n  polygons.forEach((polygon) => {\n    poly3.toPoints(polygon).forEach((point) => {\n      vec3.min(minpoint, minpoint, point)\n      vec3.max(maxpoint, maxpoint, point)\n    })\n  })\n\n  minpoint = [minpoint[0], minpoint[1], minpoint[2]]\n  maxpoint = [maxpoint[0], maxpoint[1], maxpoint[2]]\n\n  boundingBox = [minpoint, maxpoint]\n\n  cache.set(geometry, boundingBox)\n\n  return boundingBox\n}\n\n/**\n * Measure the min and max bounds of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the min and max bounds, or a list of bounds for each geometry\n * @alias module:modeling/measurements.measureBoundingBox\n *\n * @example\n * let bounds = measureBoundingBox(sphere())\n */\nconst measureBoundingBox = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  const results = geometries.map((geometry) => {\n    if (path2.isA(geometry)) return measureBoundingBoxOfPath2(geometry)\n    if (geom2.isA(geometry)) return measureBoundingBoxOfGeom2(geometry)\n    if (geom3.isA(geometry)) return measureBoundingBoxOfGeom3(geometry)\n    return [[0, 0, 0], [0, 0, 0]]\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureBoundingBox\n","const flatten = require('../utils/flatten')\n\nconst vec2 = require('../maths/vec2')\nconst vec3 = require('../maths/vec3')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cacheOfBoundingSpheres = new WeakMap()\n\n/*\n * Measure the bounding sphere of the given (path2) geometry.\n * @return {[[x, y, z], radius]} the bounding sphere for the geometry\n */\nconst measureBoundingSphereOfPath2 = (geometry) => {\n  let boundingSphere = cacheOfBoundingSpheres.get(geometry)\n  if (boundingSphere !== undefined) return boundingSphere\n\n  const centroid = vec3.create()\n  let radius = 0\n\n  const points = path2.toPoints(geometry)\n\n  if (points.length > 0) {\n    // calculate the centroid of the geometry\n    let numPoints = 0\n    const temp = vec3.create()\n    points.forEach((point) => {\n      vec3.add(centroid, centroid, vec3.fromVec2(temp, point, 0))\n      numPoints++\n    })\n    vec3.scale(centroid, centroid, 1 / numPoints)\n\n    // find the farthest point from the centroid\n    points.forEach((point) => {\n      radius = Math.max(radius, vec2.squaredDistance(centroid, point))\n    })\n    radius = Math.sqrt(radius)\n  }\n\n  boundingSphere = [centroid, radius]\n  cacheOfBoundingSpheres.set(geometry, boundingSphere)\n\n  return boundingSphere\n}\n\n/*\n * Measure the bounding sphere of the given (geom2) geometry.\n * @return {[[x, y, z], radius]} the bounding sphere for the geometry\n */\nconst measureBoundingSphereOfGeom2 = (geometry) => {\n  let boundingSphere = cacheOfBoundingSpheres.get(geometry)\n  if (boundingSphere !== undefined) return boundingSphere\n\n  const centroid = vec3.create()\n  let radius = 0\n\n  const sides = geom2.toSides(geometry)\n\n  if (sides.length > 0) {\n    // calculate the centroid of the geometry\n    let numPoints = 0\n    const temp = vec3.create()\n    sides.forEach((side) => {\n      vec3.add(centroid, centroid, vec3.fromVec2(temp, side[0], 0))\n      numPoints++\n    })\n    vec3.scale(centroid, centroid, 1 / numPoints)\n\n    // find the farthest point from the centroid\n    sides.forEach((side) => {\n      radius = Math.max(radius, vec2.squaredDistance(centroid, side[0]))\n    })\n    radius = Math.sqrt(radius)\n  }\n\n  boundingSphere = [centroid, radius]\n  cacheOfBoundingSpheres.set(geometry, boundingSphere)\n\n  return boundingSphere\n}\n\n/*\n * Measure the bounding sphere of the given (geom3) geometry.\n * @return {[[x, y, z], radius]} the bounding sphere for the geometry\n */\nconst measureBoundingSphereOfGeom3 = (geometry) => {\n  let boundingSphere = cacheOfBoundingSpheres.get(geometry)\n  if (boundingSphere !== undefined) return boundingSphere\n\n  const centroid = vec3.create()\n  let radius = 0\n\n  const polygons = geom3.toPolygons(geometry)\n\n  if (polygons.length > 0) {\n    // calculate the centroid of the geometry\n    let numPoints = 0\n    polygons.forEach((polygon) => {\n      poly3.toPoints(polygon).forEach((point) => {\n        vec3.add(centroid, centroid, point)\n        numPoints++\n      })\n    })\n    vec3.scale(centroid, centroid, 1 / numPoints)\n\n    // find the farthest point from the centroid\n    polygons.forEach((polygon) => {\n      poly3.toPoints(polygon).forEach((point) => {\n        radius = Math.max(radius, vec3.squaredDistance(centroid, point))\n      })\n    })\n    radius = Math.sqrt(radius)\n  }\n\n  boundingSphere = [centroid, radius]\n  cacheOfBoundingSpheres.set(geometry, boundingSphere)\n\n  return boundingSphere\n}\n\n/**\n * Measure the (approximate) bounding sphere of the given geometries.\n * @see https://en.wikipedia.org/wiki/Bounding_sphere\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the bounding sphere for each geometry, i.e. [centroid, radius]\n * @alias module:modeling/measurements.measureBoundingSphere\n *\n * @example\n * let bounds = measureBoundingSphere(cube())\n */\nconst measureBoundingSphere = (...geometries) => {\n  geometries = flatten(geometries)\n\n  const results = geometries.map((geometry) => {\n    if (path2.isA(geometry)) return measureBoundingSphereOfPath2(geometry)\n    if (geom2.isA(geometry)) return measureBoundingSphereOfGeom2(geometry)\n    if (geom3.isA(geometry)) return measureBoundingSphereOfGeom3(geometry)\n    return [[0, 0, 0], 0]\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureBoundingSphere\n","const flatten = require('../utils/flatten')\n\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/**\n * Measure the center of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the center point for each geometry, i.e. [X, Y, Z]\n * @alias module:modeling/measurements.measureCenter\n *\n * @example\n * let center = measureCenter(sphere())\n */\nconst measureCenter = (...geometries) => {\n  geometries = flatten(geometries)\n\n  const results = geometries.map((geometry) => {\n    const bounds = measureBoundingBox(geometry)\n    return [\n      (bounds[0][0] + ((bounds[1][0] - bounds[0][0]) / 2)),\n      (bounds[0][1] + ((bounds[1][1] - bounds[0][1]) / 2)),\n      (bounds[0][2] + ((bounds[1][2] - bounds[0][2]) / 2))\n    ]\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureCenter\n","const flatten = require('../utils/flatten')\n\nconst vec3 = require('../maths/vec3')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\n\nconst cacheOfCenterOfMass = new WeakMap()\n\n/*\n * Measure the center of mass for the given geometry.\n *\n * @see http://paulbourke.net/geometry/polygonmesh/\n * @return {Array} the center of mass for the geometry\n */\nconst measureCenterOfMassGeom2 = (geometry) => {\n  let centerOfMass = cacheOfCenterOfMass.get(geometry)\n  if (centerOfMass !== undefined) return centerOfMass\n\n  const sides = geom2.toSides(geometry)\n\n  let area = 0\n  let x = 0\n  let y = 0\n  if (sides.length > 0) {\n    for (let i = 0; i < sides.length; i++) {\n      const p1 = sides[i][0]\n      const p2 = sides[i][1]\n\n      const a = p1[0] * p2[1] - p1[1] * p2[0]\n      area += a\n      x += (p1[0] + p2[0]) * a\n      y += (p1[1] + p2[1]) * a\n    }\n    area /= 2\n\n    const f = 1 / (area * 6)\n    x *= f\n    y *= f\n  }\n\n  centerOfMass = vec3.fromValues(x, y, 0)\n\n  cacheOfCenterOfMass.set(geometry, centerOfMass)\n  return centerOfMass\n}\n\n/*\n * Measure the center of mass for the given geometry.\n * @return {Array} the center of mass for the geometry\n */\nconst measureCenterOfMassGeom3 = (geometry) => {\n  let centerOfMass = cacheOfCenterOfMass.get(geometry)\n  if (centerOfMass !== undefined) return centerOfMass\n\n  centerOfMass = vec3.create() // 0, 0, 0\n\n  const polygons = geom3.toPolygons(geometry)\n  if (polygons.length === 0) return centerOfMass\n\n  let totalVolume = 0\n  const vector = vec3.create() // for speed\n  polygons.forEach((polygon) => {\n    // calculate volume and center of each tetrahedron\n    const vertices = polygon.vertices\n    for (let i = 0; i < vertices.length - 2; i++) {\n      vec3.cross(vector, vertices[i + 1], vertices[i + 2])\n      const volume = vec3.dot(vertices[0], vector) / 6\n\n      totalVolume += volume\n\n      vec3.add(vector, vertices[0], vertices[i + 1])\n      vec3.add(vector, vector, vertices[i + 2])\n      const weightedCenter = vec3.scale(vector, vector, 1 / 4 * volume)\n\n      vec3.add(centerOfMass, centerOfMass, weightedCenter)\n    }\n  })\n  vec3.scale(centerOfMass, centerOfMass, 1 / totalVolume)\n\n  cacheOfCenterOfMass.set(geometry, centerOfMass)\n  return centerOfMass\n}\n\n/**\n * Measure the center of mass for the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the center of mass for each geometry, i.e. [X, Y, Z]\n * @alias module:modeling/measurements.measureCenterOfMass\n *\n * @example\n * let center = measureCenterOfMass(sphere())\n */\nconst measureCenterOfMass = (...geometries) => {\n  geometries = flatten(geometries)\n\n  const results = geometries.map((geometry) => {\n    // NOTE: center of mass for geometry path2 is not possible\n    if (geom2.isA(geometry)) return measureCenterOfMassGeom2(geometry)\n    if (geom3.isA(geometry)) return measureCenterOfMassGeom3(geometry)\n    return [0, 0, 0]\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureCenterOfMass\n","const flatten = require('../utils/flatten')\n\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/**\n * Measure the dimensions of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the dimensions for each geometry, i.e. [width, depth, height]\n * @alias module:modeling/measurements.measureDimensions\n *\n * @example\n * let dimensions = measureDimensions(sphere())\n */\nconst measureDimensions = (...geometries) => {\n  geometries = flatten(geometries)\n\n  const results = geometries.map((geometry) => {\n    const boundingBox = measureBoundingBox(geometry)\n    return [\n      boundingBox[1][0] - boundingBox[0][0],\n      boundingBox[1][1] - boundingBox[0][1],\n      boundingBox[1][2] - boundingBox[0][2]\n    ]\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureDimensions\n","const flatten = require('../utils/flatten')\nconst { geom2, geom3, path2 } = require('../geometries')\n\nconst calculateEpsilonFromBounds = require('./calculateEpsilonFromBounds')\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/*\n * Measure the epsilon of the given (path2) geometry.\n * @return {Number} the epsilon (precision) of the geometry\n */\nconst measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox(geometry), 2)\n\n/*\n * Measure the epsilon of the given (geom2) geometry.\n * @return {Number} the epsilon (precision) of the geometry\n */\nconst measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox(geometry), 2)\n\n/*\n * Measure the epsilon of the given (geom3) geometry.\n * @return {Float} the epsilon (precision) of the geometry\n */\nconst measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox(geometry), 3)\n\n/**\n * Measure the epsilon of the given geometries.\n * Epsilon values are used in various functions to determine minimum distances between points, planes, etc.\n * @param {...Object} geometries - the geometries to measure\n * @return {Number|Array} the epsilon, or a list of epsilons for each geometry\n * @alias module:modeling/measurements.measureEpsilon\n *\n * @example\n * let epsilon = measureEpsilon(sphere())\n */\nconst measureEpsilon = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  const results = geometries.map((geometry) => {\n    if (path2.isA(geometry)) return measureEpsilonOfPath2(geometry)\n    if (geom2.isA(geometry)) return measureEpsilonOfGeom2(geometry)\n    if (geom3.isA(geometry)) return measureEpsilonOfGeom3(geometry)\n    return 0\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureEpsilon\n","const flatten = require('../utils/flatten')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cache = new WeakMap()\n\n/*\n * Measure the volume of the given geometry.\n * NOTE: paths are infinitely narrow and do not have an volume\n *\n * @param {Path2} geometry - geometry to measure\n * @returns {Number} volume of the geometry\n */\nconst measureVolumeOfPath2 = () => 0\n\n/*\n * Measure the volume of the given geometry.\n * NOTE: 2D geometry are infinitely thin and do not have an volume\n *\n * @param {Geom2} geometry - 2D geometry to measure\n * @returns {Number} volume of the geometry\n */\nconst measureVolumeOfGeom2 = () => 0\n\n/*\n * Measure the volume of the given geometry.\n *\n * @param {Geom3} geometry - 3D geometry to measure\n * @returns {Number} volume of the geometry\n */\nconst measureVolumeOfGeom3 = (geometry) => {\n  let volume = cache.get(geometry)\n  if (volume) return volume\n\n  const polygons = geom3.toPolygons(geometry)\n  volume = polygons.reduce((volume, polygon) => volume + poly3.measureSignedVolume(polygon), 0)\n\n  cache.set(geometry, volume)\n\n  return volume\n}\n\n/**\n * Measure the volume of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Number|Array} the volume, or a list of volumes for each geometry\n * @alias module:modeling/measurements.measureVolume\n *\n * @example\n * let volume = measureVolume(sphere())\n */\nconst measureVolume = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  const results = geometries.map((geometry) => {\n    if (path2.isA(geometry)) return measureVolumeOfPath2(geometry)\n    if (geom2.isA(geometry)) return measureVolumeOfGeom2(geometry)\n    if (geom3.isA(geometry)) return measureVolumeOfGeom3(geometry)\n    return 0\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureVolume\n","const vec2 = require('../../maths/vec2')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst fromFakePolygon = (epsilon, polygon) => {\n  // this can happen based on union, seems to be residuals -\n  // return null and handle in caller\n  if (polygon.vertices.length < 4) {\n    return null\n  }\n  const vert1Indices = []\n  const points3D = polygon.vertices.filter((vertex, i) => {\n    if (vertex[2] > 0) {\n      vert1Indices.push(i)\n      return true\n    }\n    return false\n  })\n\n  if (points3D.length !== 2) {\n    throw new Error('Assertion failed: fromFakePolygon: not enough points found') // TBD remove later\n  }\n\n  const points2D = points3D.map((v3) => {\n    const x = Math.round(v3[0] / epsilon) * epsilon + 0 // no more -0\n    const y = Math.round(v3[1] / epsilon) * epsilon + 0 // no more -0\n    return vec2.fromValues(x, y)\n  })\n\n  if (vec2.equals(points2D[0], points2D[1])) return null\n\n  const d = vert1Indices[1] - vert1Indices[0]\n  if (d === 1 || d === 3) {\n    if (d === 1) {\n      points2D.reverse()\n    }\n  } else {\n    throw new Error('Assertion failed: fromFakePolygon: unknown index ordering')\n  }\n  return points2D\n}\n\n/*\n * Convert the given polygons to a list of sides.\n * The polygons must have only z coordinates +1 and -1, as constructed by to3DWalls().\n */\nconst fromFakePolygons = (epsilon, polygons) => {\n  const sides = polygons.map((polygon) => fromFakePolygon(epsilon, polygon)).filter((polygon) => (polygon !== null))\n  return geom2.create(sides)\n}\n\nmodule.exports = fromFakePolygons\n","/**\n * All shapes (primitives or the results of operations) can be passed to boolean functions\n * to perform logical operations, e.g. remove a hole from a board.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/booleans\n * @example\n * const { intersect, subtract, union } = require('@jscad/modeling').booleans\n */\nmodule.exports = {\n  intersect: require('./intersect'),\n  scission: require('./scission'),\n  subtract: require('./subtract'),\n  union: require('./union')\n}\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\nconst intersectGeom2 = require('./intersectGeom2')\nconst intersectGeom3 = require('./intersectGeom3')\n\n/**\n * Return a new geometry representing space in both the first geometry and\n * all subsequent geometries.\n * The given geometries should be of the same type, either geom2 or geom3.\n *\n * @param {...Object} geometries - list of geometries\n * @returns {geom2|geom3} a new geometry\n * @alias module:modeling/booleans.intersect\n *\n * @example\n * let myshape = intersect(cube({size: [5,5,5]}), cube({size: [5,5,5], center: [5,5,5]}))\n *\n * @example\n * +-------+\n * |       |\n * |   A   |\n * |    +--+----+   =   +--+\n * +----+--+    |       +--+\n *      |   B   |\n *      |       |\n *      +-------+\n */\nconst intersect = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  if (!areAllShapesTheSameType(geometries)) {\n    throw new Error('only intersect of the types are supported')\n  }\n\n  const geometry = geometries[0]\n  // if (path.isA(geometry)) return pathintersect(matrix, geometries)\n  if (geom2.isA(geometry)) return intersectGeom2(geometries)\n  if (geom3.isA(geometry)) return intersectGeom3(geometries)\n  return geometry\n}\n\nmodule.exports = intersect\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst fromFakePolygons = require('./fromFakePolygons')\nconst to3DWalls = require('./to3DWalls')\nconst intersectGeom3 = require('./intersectGeom3')\n\n/*\n * Return a new 2D geometry representing space in both the first geometry and\n * in the subsequent geometries. None of the given geometries are modified.\n * @param {...geom2} geometries - list of 2D geometries\n * @returns {geom2} new 2D geometry\n */\nconst intersect = (...geometries) => {\n  geometries = flatten(geometries)\n  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry))\n\n  const newgeom3 = intersectGeom3(newgeometries)\n  const epsilon = measureEpsilon(newgeom3)\n\n  return fromFakePolygons(epsilon, geom3.toPolygons(newgeom3))\n}\n\nmodule.exports = intersect\n","const flatten = require('../../utils/flatten')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst intersectSub = require('./intersectGeom3Sub')\n\n/*\n * Return a new 3D geometry representing space in both the first geometry and\n * in the subsequent geometries. None of the given geometries are modified.\n * @param {...geom3} geometries - list of 3D geometries\n * @returns {geom3} new 3D geometry\n */\nconst intersect = (...geometries) => {\n  geometries = flatten(geometries)\n\n  let newgeometry = geometries.shift()\n  geometries.forEach((geometry) => {\n    newgeometry = intersectSub(newgeometry, geometry)\n  })\n\n  newgeometry = retessellate(newgeometry)\n  return newgeometry\n}\n\nmodule.exports = intersect\n","const geom3 = require('../../geometries/geom3')\n\nconst mayOverlap = require('./mayOverlap')\nconst { Tree } = require('./trees')\n\n/*\n * Return a new 3D geometry representing the space in both the first geometry and\n * the second geometry. None of the given geometries are modified.\n * @param {geom3} geometry1 - a geometry\n * @param {geom3} geometry2 - a geometry\n * @returns {geom3} new 3D geometry\n */\nconst intersectGeom3Sub = (geometry1, geometry2) => {\n  if (!mayOverlap(geometry1, geometry2)) {\n    return geom3.create() // empty geometry\n  }\n\n  const a = new Tree(geom3.toPolygons(geometry1))\n  const b = new Tree(geom3.toPolygons(geometry2))\n\n  a.invert()\n  b.clipTo(a)\n  b.invert()\n  a.clipTo(b)\n  b.clipTo(a)\n  a.addPolygons(b.allPolygons())\n  a.invert()\n\n  const newpolygons = a.allPolygons()\n  return geom3.create(newpolygons)\n}\n\nmodule.exports = intersectGeom3Sub\n","const { EPS } = require('../../maths/constants')\n\nconst measureBoundingBox = require('../../measurements/measureBoundingBox')\n\n/*\n * Determine if the given geometries overlap by comparing min and max bounds.\n * NOTE: This is used in union for performance gains.\n * @param {geom3} geometry1 - geometry for comparison\n * @param {geom3} geometry2 - geometry for comparison\n * @returns {boolean} true if the geometries overlap\n */\nconst mayOverlap = (geometry1, geometry2) => {\n  // FIXME accessing the data structure of the geometry should not be allowed\n  if ((geometry1.polygons.length === 0) || (geometry2.polygons.length === 0)) {\n    return false\n  }\n\n  const bounds1 = measureBoundingBox(geometry1)\n  const min1 = bounds1[0]\n  const max1 = bounds1[1]\n\n  const bounds2 = measureBoundingBox(geometry2)\n  const min2 = bounds2[0]\n  const max2 = bounds2[1]\n\n  if ((min2[0] - max1[0]) > EPS) return false\n  if ((min1[0] - max2[0]) > EPS) return false\n  if ((min2[1] - max1[1]) > EPS) return false\n  if ((min1[1] - max2[1]) > EPS) return false\n  if ((min2[2] - max1[2]) > EPS) return false\n  if ((min1[2] - max2[2]) > EPS) return false\n  return true\n}\n\nmodule.exports = mayOverlap\n","const flatten = require('../../utils/flatten')\n\n// const geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\n// const scissionGeom2 = require('./scissionGeom2')\nconst scissionGeom3 = require('./scissionGeom3')\n\n/**\n * Scission (divide) the given geometry into the component pieces.\n *\n * @param {...Object} objects - list of geometries\n * @returns {Array} list of pieces from each geometry\n * @alias module:modeling/booleans.scission\n *\n * @example\n * let figure = require('./my.stl')\n * let pieces = scission(figure)\n *\n * @example\n * +-------+            +-------+\n * |       |            |       |\n * |   +---+            | A +---+\n * |   |    +---+   =   |   |    +---+\n * +---+    |   |       +---+    |   |\n *      +---+   |            +---+   |\n *      |       |            |    B  |\n *      +-------+            +-------+\n */\nconst scission = (...objects) => {\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  const results = objects.map((object) => {\n    // if (path2.isA(object)) return path2.transform(matrix, object)\n    // if (geom2.isA(object)) return geom2.transform(matrix, object)\n    if (geom3.isA(object)) return scissionGeom3(object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = scission\n","const vec3 = require('../../maths/vec3')\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst geom3 = require('../../geometries/geom3')\n\n// returns array numerically sorted and duplicates removed\nconst sortNb = (array) => array.sort((a, b) => a - b).filter((item, pos, ary) => !pos || item !== ary[pos - 1])\n\nconst insertMapping = (map, point, index) => {\n  const key = `${point}`\n  const mapping = map.get(key)\n  if (mapping === undefined) {\n    map.set(key, [index])\n  } else {\n    mapping.push(index)\n  }\n}\n\nconst findMapping = (map, point) => {\n  const key = `${point}`\n  return map.get(key)\n}\n\nconst scissionGeom3 = (geometry) => {\n  // construit table de correspondance entre polygones\n  // build polygons lookup table\n  const eps = measureEpsilon(geometry)\n  const polygons = geom3.toPolygons(geometry)\n  const pl = polygons.length\n\n  const indexesPerPoint = new Map()\n  const temp = vec3.create()\n  polygons.forEach((polygon, index) => {\n    polygon.vertices.forEach((point) => {\n      insertMapping(indexesPerPoint, vec3.snap(temp, point, eps), index)\n    })\n  })\n\n  const indexesPerPolygon = polygons.map((polygon) => {\n    let indexes = []\n    polygon.vertices.forEach((point) => {\n      indexes = indexes.concat(findMapping(indexesPerPoint, vec3.snap(temp, point, eps)))\n    })\n    return { e: 1, d: sortNb(indexes) } // for each polygon, push the list of indexes\n  })\n\n  indexesPerPoint.clear()\n\n  // regroupe les correspondances des polygones se touchant\n  // boucle ne s'arrêtant que quand deux passages retournent le même nb de polygones\n  // merge lookup data from linked polygons as long as possible\n  let merges = 0\n  const ippl = indexesPerPolygon.length\n  for (let i = 0; i < ippl; i++) {\n    const mapi = indexesPerPolygon[i]\n    // merge mappings if necessary\n    if (mapi.e > 0) {\n      const indexes = new Array(pl)\n      indexes[i] = true // include ourself\n      do {\n        merges = 0\n        // loop through the known indexes\n        indexes.forEach((e, j) => {\n          const mapj = indexesPerPolygon[j]\n          // merge this mapping if necessary\n          if (mapj.e > 0) {\n            mapj.e = -1 // merged\n            for (let d = 0; d < mapj.d.length; d++) {\n              indexes[mapj.d[d]] = true\n            }\n            merges++\n          }\n        })\n      } while (merges > 0)\n      mapi.indexes = indexes\n    }\n  }\n\n  // construit le tableau des geometry à retourner\n  // build array of geometry to return\n  const newgeometries = []\n  for (let i = 0; i < ippl; i++) {\n    if (indexesPerPolygon[i].indexes) {\n      const newpolygons = []\n      indexesPerPolygon[i].indexes.forEach((e, p) => newpolygons.push(polygons[p]))\n      newgeometries.push(geom3.create(newpolygons))\n    }\n  }\n\n  return newgeometries\n}\n\nmodule.exports = scissionGeom3\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\nconst subtractGeom2 = require('./subtractGeom2')\nconst subtractGeom3 = require('./subtractGeom3')\n\n/**\n * Return a new geometry representing space in the first geometry but\n * not in all subsequent geometries.\n * The given geometries should be of the same type, either geom2 or geom3.\n *\n * @param {...Object} geometries - list of geometries\n * @returns {geom2|geom3} a new geometry\n * @alias module:modeling/booleans.subtract\n *\n * @example\n * let myshape = subtract(cuboid({size: [5,5,5]}), cuboid({size: [5,5,5], center: [5,5,5]}))\n *\n * @example\n * +-------+            +-------+\n * |       |            |       |\n * |   A   |            |       |\n * |    +--+----+   =   |    +--+\n * +----+--+    |       +----+\n *      |   B   |\n *      |       |\n *      +-------+\n */\nconst subtract = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  if (!areAllShapesTheSameType(geometries)) {\n    throw new Error('only subtract of the types are supported')\n  }\n\n  const geometry = geometries[0]\n  // if (path.isA(geometry)) return pathsubtract(matrix, geometries)\n  if (geom2.isA(geometry)) return subtractGeom2(geometries)\n  if (geom3.isA(geometry)) return subtractGeom3(geometries)\n  return geometry\n}\n\nmodule.exports = subtract\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst fromFakePolygons = require('./fromFakePolygons')\nconst to3DWalls = require('./to3DWalls')\nconst subtractGeom3 = require('./subtractGeom3')\n\n/*\n * Return a new 2D geometry representing space in the first geometry but\n * not in the subsequent geometries. None of the given geometries are modified.\n * @param {...geom2} geometries - list of geometries\n * @returns {geom2} new 2D geometry\n */\nconst subtract = (...geometries) => {\n  geometries = flatten(geometries)\n  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry))\n\n  const newgeom3 = subtractGeom3(newgeometries)\n  const epsilon = measureEpsilon(newgeom3)\n\n  return fromFakePolygons(epsilon, geom3.toPolygons(newgeom3))\n}\n\nmodule.exports = subtract\n","const flatten = require('../../utils/flatten')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst subtractSub = require('./subtractGeom3Sub')\n\n/*\n * Return a new 3D geometry representing space in this geometry but not in the given geometries.\n * Neither this geometry nor the given geometries are modified.\n * @param {...geom3} geometries - list of geometries\n * @returns {geom3} new 3D geometry\n */\nconst subtract = (...geometries) => {\n  geometries = flatten(geometries)\n\n  let newgeometry = geometries.shift()\n  geometries.forEach((geometry) => {\n    newgeometry = subtractSub(newgeometry, geometry)\n  })\n\n  newgeometry = retessellate(newgeometry)\n  return newgeometry\n}\n\nmodule.exports = subtract\n","const geom3 = require('../../geometries/geom3')\n\nconst mayOverlap = require('./mayOverlap')\nconst { Tree } = require('./trees')\n\n/*\n * Return a new 3D geometry representing the space in the first geometry but not\n * in the second geometry. None of the given geometries are modified.\n * @param {geom3} geometry1 - a geometry\n * @param {geom3} geometry2 - a geometry\n * @returns {geom3} new 3D geometry\n */\nconst subtractGeom3Sub = (geometry1, geometry2) => {\n  if (!mayOverlap(geometry1, geometry2)) {\n    return geom3.clone(geometry1)\n  }\n\n  const a = new Tree(geom3.toPolygons(geometry1))\n  const b = new Tree(geom3.toPolygons(geometry2))\n\n  a.invert()\n  a.clipTo(b)\n  b.clipTo(a, true)\n  a.addPolygons(b.allPolygons())\n  a.invert()\n\n  const newpolygons = a.allPolygons()\n  return geom3.create(newpolygons)\n}\n\nmodule.exports = subtractGeom3Sub\n","const vec3 = require('../../maths/vec3')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\n/*\n * Create a polygon (wall) from the given Z values and side.\n */\nconst to3DWall = (z0, z1, side) => {\n  const points = [\n    vec3.fromVec2(vec3.create(), side[0], z0),\n    vec3.fromVec2(vec3.create(), side[1], z0),\n    vec3.fromVec2(vec3.create(), side[1], z1),\n    vec3.fromVec2(vec3.create(), side[0], z1)\n  ]\n  return poly3.create(points)\n}\n\n/*\n * Create a 3D geometry with walls, as constructed from the given options and geometry.\n *\n * @param {Object} options - options with Z offsets\n * @param {geom2} geometry - geometry used as base of walls\n * @return {geom3} the new geometry\n */\nconst to3DWalls = (options, geometry) => {\n  const sides = geom2.toSides(geometry)\n\n  const polygons = sides.map((side) => to3DWall(options.z0, options.z1, side))\n\n  const result = geom3.create(polygons)\n  return result\n}\n\nmodule.exports = to3DWalls\n","const plane = require('../../../maths/plane')\nconst poly3 = require('../../../geometries/poly3')\n\n// # class Node\n// Holds a node in a BSP tree.\n// A BSP tree is built from a collection of polygons by picking a polygon to split along.\n// Polygons are not stored directly in the tree, but in PolygonTreeNodes, stored in this.polygontreenodes.\n// Those PolygonTreeNodes are children of the owning Tree.polygonTree.\n// This is not a leafy BSP tree since there is no distinction between internal and leaf nodes.\nclass Node {\n  constructor (parent) {\n    this.plane = null\n    this.front = null\n    this.back = null\n    this.polygontreenodes = []\n    this.parent = parent\n  }\n\n  // Convert solid space to empty space and empty space to solid space.\n  invert () {\n    const queue = [this]\n    let node\n    for (let i = 0; i < queue.length; i++) {\n      node = queue[i]\n      if (node.plane) node.plane = plane.flip(plane.create(), node.plane)\n      if (node.front) queue.push(node.front)\n      if (node.back) queue.push(node.back)\n      const temp = node.front\n      node.front = node.back\n      node.back = temp\n    }\n  }\n\n  // clip polygontreenodes to our plane\n  // calls remove() for all clipped PolygonTreeNodes\n  clipPolygons (polygontreenodes, alsoRemovecoplanarFront) {\n    let current = { node: this, polygontreenodes: polygontreenodes }\n    let node\n    const stack = []\n\n    do {\n      node = current.node\n      polygontreenodes = current.polygontreenodes\n\n      if (node.plane) {\n        const plane = node.plane\n\n        const backnodes = []\n        const frontnodes = []\n        const coplanarfrontnodes = alsoRemovecoplanarFront ? backnodes : frontnodes\n        const numpolygontreenodes = polygontreenodes.length\n        for (let i = 0; i < numpolygontreenodes; i++) {\n          const treenode = polygontreenodes[i]\n          if (!treenode.isRemoved()) {\n            // split this polygon tree node using the plane\n            // NOTE: children are added to the tree if there are spanning polygons\n            treenode.splitByPlane(plane, coplanarfrontnodes, backnodes, frontnodes, backnodes)\n          }\n        }\n\n        if (node.front && (frontnodes.length > 0)) {\n          // add front node for further splitting\n          stack.push({ node: node.front, polygontreenodes: frontnodes })\n        }\n        const numbacknodes = backnodes.length\n        if (node.back && (numbacknodes > 0)) {\n          // add back node for further splitting\n          stack.push({ node: node.back, polygontreenodes: backnodes })\n        } else {\n          // remove all back nodes from processing\n          for (let i = 0; i < numbacknodes; i++) {\n            backnodes[i].remove()\n          }\n        }\n      }\n      current = stack.pop()\n    } while (current !== undefined)\n  }\n\n  // Remove all polygons in this BSP tree that are inside the other BSP tree\n  // `tree`.\n  clipTo (tree, alsoRemovecoplanarFront) {\n    let node = this\n    const stack = []\n    do {\n      if (node.polygontreenodes.length > 0) {\n        tree.rootnode.clipPolygons(node.polygontreenodes, alsoRemovecoplanarFront)\n      }\n      if (node.front) stack.push(node.front)\n      if (node.back) stack.push(node.back)\n      node = stack.pop()\n    } while (node !== undefined)\n  }\n\n  addPolygonTreeNodes (newpolygontreenodes) {\n    let current = { node: this, polygontreenodes: newpolygontreenodes }\n    const stack = []\n    do {\n      const node = current.node\n      const polygontreenodes = current.polygontreenodes\n\n      if (polygontreenodes.length === 0) {\n        current = stack.pop()\n        continue\n      }\n      if (!node.plane) {\n        let index = 0 // default\n        index = Math.floor(polygontreenodes.length / 2)\n        // index = polygontreenodes.length >> 1\n        // index = Math.floor(Math.random()*polygontreenodes.length)\n        const bestpoly = polygontreenodes[index].getPolygon()\n        node.plane = poly3.plane(bestpoly)\n      }\n      const frontnodes = []\n      const backnodes = []\n      const n = polygontreenodes.length\n      for (let i = 0; i < n; ++i) {\n        polygontreenodes[i].splitByPlane(node.plane, node.polygontreenodes, backnodes, frontnodes, backnodes)\n      }\n\n      if (frontnodes.length > 0) {\n        if (!node.front) node.front = new Node(node)\n\n        // unable to split by any of the current nodes\n        const stopCondition = n === frontnodes.length && backnodes.length === 0\n        if (stopCondition) node.front.polygontreenodes = frontnodes\n        else stack.push({ node: node.front, polygontreenodes: frontnodes })\n      }\n      if (backnodes.length > 0) {\n        if (!node.back) node.back = new Node(node)\n\n        // unable to split by any of the current nodes\n        const stopCondition = n === backnodes.length && frontnodes.length === 0\n\n        if (stopCondition) node.back.polygontreenodes = backnodes\n        else stack.push({ node: node.back, polygontreenodes: backnodes })\n      }\n\n      current = stack.pop()\n    } while (current !== undefined)\n  }\n}\n\nmodule.exports = Node\n","const { EPS } = require('../../../maths/constants')\n\nconst vec3 = require('../../../maths/vec3')\n\nconst poly3 = require('../../../geometries/poly3')\n\nconst splitPolygonByPlane = require('./splitPolygonByPlane')\n\n// # class PolygonTreeNode\n// This class manages hierarchical splits of polygons.\n// At the top is a root node which does not hold a polygon, only child PolygonTreeNodes.\n// Below that are zero or more 'top' nodes; each holds a polygon.\n// The polygons can be in different planes.\n// splitByPlane() splits a node by a plane. If the plane intersects the polygon, two new child nodes\n// are created holding the splitted polygon.\n// getPolygons() retrieves the polygons from the tree. If for PolygonTreeNode the polygon is split but\n// the two split parts (child nodes) are still intact, then the unsplit polygon is returned.\n// This ensures that we can safely split a polygon into many fragments. If the fragments are untouched,\n// getPolygons() will return the original unsplit polygon instead of the fragments.\n// remove() removes a polygon from the tree. Once a polygon is removed, the parent polygons are invalidated\n// since they are no longer intact.\nclass PolygonTreeNode {\n  // constructor creates the root node\n  constructor (parent, polygon) {\n    this.parent = parent\n    this.children = []\n    this.polygon = polygon\n    this.removed = false  // state of branch or leaf\n  }\n\n  // fill the tree with polygons. Should be called on the root node only; child nodes must\n  // always be a derivate (split) of the parent node.\n  addPolygons (polygons) {\n    // new polygons can only be added to root node; children can only be splitted polygons\n    if (!this.isRootNode()) {\n      throw new Error('Assertion failed')\n    }\n    const _this = this\n    polygons.forEach((polygon) => {\n      _this.addChild(polygon)\n    })\n  }\n\n  // remove a node\n  // - the siblings become toplevel nodes\n  // - the parent is removed recursively\n  remove () {\n    if (!this.removed) {\n      this.removed = true\n      this.polygon = null\n\n      // remove ourselves from the parent's children list:\n      const parentschildren = this.parent.children\n      const i = parentschildren.indexOf(this)\n      if (i < 0) throw new Error('Assertion failed')\n      parentschildren.splice(i, 1)\n\n      // invalidate the parent's polygon, and of all parents above it:\n      this.parent.recursivelyInvalidatePolygon()\n    }\n  }\n\n  isRemoved () {\n    return this.removed\n  }\n\n  isRootNode () {\n    return !this.parent\n  }\n\n  // invert all polygons in the tree. Call on the root node\n  invert () {\n    if (!this.isRootNode()) throw new Error('Assertion failed') // can only call this on the root node\n    this.invertSub()\n  }\n\n  getPolygon () {\n    if (!this.polygon) throw new Error('Assertion failed') // doesn't have a polygon, which means that it has been broken down\n    return this.polygon\n  }\n\n  getPolygons (result) {\n    let children = [this]\n    const queue = [children]\n    let i, j, l, node\n    for (i = 0; i < queue.length; ++i) { // queue size can change in loop, don't cache length\n      children = queue[i]\n      for (j = 0, l = children.length; j < l; j++) { // ok to cache length\n        node = children[j]\n        if (node.polygon) {\n          // the polygon hasn't been broken yet. We can ignore the children and return our polygon:\n          result.push(node.polygon)\n        } else {\n          // our polygon has been split up and broken, so gather all subpolygons from the children\n          if (node.children.length > 0) queue.push(node.children)\n        }\n      }\n    }\n  }\n\n  // split the node by a plane; add the resulting nodes to the frontnodes and backnodes array\n  // If the plane doesn't intersect the polygon, the 'this' object is added to one of the arrays\n  // If the plane does intersect the polygon, two new child nodes are created for the front and back fragments,\n  //  and added to both arrays.\n  splitByPlane (plane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes) {\n    if (this.children.length) {\n      const queue = [this.children]\n      let i\n      let j\n      let l\n      let node\n      let nodes\n      for (i = 0; i < queue.length; i++) { // queue.length can increase, do not cache\n        nodes = queue[i]\n        for (j = 0, l = nodes.length; j < l; j++) { // ok to cache length\n          node = nodes[j]\n          if (node.children.length > 0) {\n            queue.push(node.children)\n          } else {\n            // no children. Split the polygon:\n            node._splitByPlane(plane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes)\n          }\n        }\n      }\n    } else {\n      this._splitByPlane(plane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes)\n    }\n  }\n\n  // only to be called for nodes with no children\n  _splitByPlane (splane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes) {\n    const polygon = this.polygon\n    if (polygon) {\n      const bound = poly3.measureBoundingSphere(polygon)\n      const sphereradius = bound[1] + EPS // ensure radius is LARGER then polygon\n      const spherecenter = bound[0]\n      const d = vec3.dot(splane, spherecenter) - splane[3]\n      if (d > sphereradius) {\n        frontnodes.push(this)\n      } else if (d < -sphereradius) {\n        backnodes.push(this)\n      } else {\n        const splitresult = splitPolygonByPlane(splane, polygon)\n        switch (splitresult.type) {\n          case 0:\n            // coplanar front:\n            coplanarfrontnodes.push(this)\n            break\n\n          case 1:\n            // coplanar back:\n            coplanarbacknodes.push(this)\n            break\n\n          case 2:\n            // front:\n            frontnodes.push(this)\n            break\n\n          case 3:\n            // back:\n            backnodes.push(this)\n            break\n\n          case 4:\n            // spanning:\n            if (splitresult.front) {\n              const frontnode = this.addChild(splitresult.front)\n              frontnodes.push(frontnode)\n            }\n            if (splitresult.back) {\n              const backnode = this.addChild(splitresult.back)\n              backnodes.push(backnode)\n            }\n            break\n        }\n      }\n    }\n  }\n\n  // PRIVATE methods from here:\n  // add child to a node\n  // this should be called whenever the polygon is split\n  // a child should be created for every fragment of the split polygon\n  // returns the newly created child\n  addChild (polygon) {\n    const newchild = new PolygonTreeNode(this, polygon)\n    this.children.push(newchild)\n    return newchild\n  }\n\n  invertSub () {\n    let children = [this]\n    const queue = [children]\n    let i, j, l, node\n    for (i = 0; i < queue.length; i++) {\n      children = queue[i]\n      for (j = 0, l = children.length; j < l; j++) {\n        node = children[j]\n        if (node.polygon) {\n          node.polygon = poly3.invert(node.polygon)\n        }\n        if (node.children.length > 0) queue.push(node.children)\n      }\n    }\n  }\n\n  // private method\n  // remove the polygon from the node, and all parent nodes above it\n  // called to invalidate parents of removed nodes\n  recursivelyInvalidatePolygon () {\n    this.polygon = null\n    if (this.parent) {\n      this.parent.recursivelyInvalidatePolygon()\n    }\n  }\n\n  clear () {\n    let children = [this]\n    const queue = [children]\n    for (let i = 0; i < queue.length; ++i) { // queue size can change in loop, don't cache length\n      children = queue[i]\n      const l = children.length\n      for (let j = 0; j < l; j++) {\n        const node = children[j]\n        if (node.polygon) {\n          node.polygon = null\n        }\n        if (node.parent) {\n          node.parent = null\n        }\n        if (node.children.length > 0) queue.push(node.children)\n        node.children = []\n      }\n    }\n  }\n\n  toString () {\n    let result = ''\n    let children = [this]\n    const queue = [children]\n    let i, j, l, node\n    for (i = 0; i < queue.length; ++i) { // queue size can change in loop, don't cache length\n      children = queue[i]\n      const prefix = ' '.repeat(i)\n      for (j = 0, l = children.length; j < l; j++) { // ok to cache length\n        node = children[j]\n        result += `${prefix}PolygonTreeNode (${node.isRootNode()}): ${node.children.length}`\n        if (node.polygon) {\n          result += `\\n ${prefix}polygon: ${node.polygon.vertices}\\n`\n        } else {\n          result += '\\n'\n        }\n        if (node.children.length > 0) queue.push(node.children)\n      }\n    }\n    return result\n  }\n}\n\nmodule.exports = PolygonTreeNode\n","const Node = require('./Node')\nconst PolygonTreeNode = require('./PolygonTreeNode')\n\n// # class Tree\n// This is the root of a BSP tree.\n// This separate class for the root of the tree in order to hold the PolygonTreeNode root.\n// The actual tree is kept in this.rootnode\nclass Tree {\n  constructor (polygons) {\n    this.polygonTree = new PolygonTreeNode()\n    this.rootnode = new Node(null)\n    if (polygons) this.addPolygons(polygons)\n  }\n\n  invert () {\n    this.polygonTree.invert()\n    this.rootnode.invert()\n  }\n\n  // Remove all polygons in this BSP tree that are inside the other BSP tree\n  // `tree`.\n  clipTo (tree, alsoRemovecoplanarFront = false) {\n    this.rootnode.clipTo(tree, alsoRemovecoplanarFront)\n  }\n\n  allPolygons () {\n    const result = []\n    this.polygonTree.getPolygons(result)\n    return result\n  }\n\n  addPolygons (polygons) {\n    const polygontreenodes = new Array(polygons.length)\n    for (let i = 0; i < polygons.length; i++) {\n      polygontreenodes[i] = this.polygonTree.addChild(polygons[i])\n    }\n    this.rootnode.addPolygonTreeNodes(polygontreenodes)\n  }\n\n  clear () {\n    this.polygonTree.clear()\n  }\n\n  toString () {\n    const result = 'Tree: ' + this.polygonTree.toString('')\n    return result\n  }\n}\n\nmodule.exports = Tree\n","module.exports = {\n  Tree: require('./Tree')\n}\n","const vec3 = require('../../../maths/vec3')\n\nconst splitLineSegmentByPlane = (plane, p1, p2) => {\n  const direction = vec3.subtract(vec3.create(), p2, p1)\n  let lambda = (plane[3] - vec3.dot(plane, p1)) / vec3.dot(plane, direction)\n  if (Number.isNaN(lambda)) lambda = 0\n  if (lambda > 1) lambda = 1\n  if (lambda < 0) lambda = 0\n\n  vec3.scale(direction, direction, lambda)\n  vec3.add(direction, p1, direction)\n  return direction\n}\n\nmodule.exports = splitLineSegmentByPlane\n","const { EPS } = require('../../../maths/constants')\n\nconst plane = require('../../../maths/plane')\nconst vec3 = require('../../../maths/vec3')\n\nconst poly3 = require('../../../geometries/poly3')\n\nconst splitLineSegmentByPlane = require('./splitLineSegmentByPlane')\n\n// Returns object:\n// .type:\n//   0: coplanar-front\n//   1: coplanar-back\n//   2: front\n//   3: back\n//   4: spanning\n// In case the polygon is spanning, returns:\n// .front: a Polygon3 of the front part\n// .back: a Polygon3 of the back part\nconst splitPolygonByPlane = (splane, polygon) => {\n  const result = {\n    type: null,\n    front: null,\n    back: null\n  }\n  // cache in local lets (speedup):\n  const vertices = polygon.vertices\n  const numvertices = vertices.length\n  const pplane = poly3.plane(polygon)\n  if (plane.equals(pplane, splane)) {\n    result.type = 0\n  } else {\n    let hasfront = false\n    let hasback = false\n    const vertexIsBack = []\n    const MINEPS = -EPS\n    for (let i = 0; i < numvertices; i++) {\n      const t = vec3.dot(splane, vertices[i]) - splane[3]\n      const isback = (t < MINEPS)\n      vertexIsBack.push(isback)\n      if (t > EPS) hasfront = true\n      if (t < MINEPS) hasback = true\n    }\n    if ((!hasfront) && (!hasback)) {\n      // all points coplanar\n      const t = vec3.dot(splane, pplane)\n      result.type = (t >= 0) ? 0 : 1\n    } else if (!hasback) {\n      result.type = 2\n    } else if (!hasfront) {\n      result.type = 3\n    } else {\n      // spanning\n      result.type = 4\n      const frontvertices = []\n      const backvertices = []\n      let isback = vertexIsBack[0]\n      for (let vertexindex = 0; vertexindex < numvertices; vertexindex++) {\n        const vertex = vertices[vertexindex]\n        let nextvertexindex = vertexindex + 1\n        if (nextvertexindex >= numvertices) nextvertexindex = 0\n        const nextisback = vertexIsBack[nextvertexindex]\n        if (isback === nextisback) {\n          // line segment is on one side of the plane:\n          if (isback) {\n            backvertices.push(vertex)\n          } else {\n            frontvertices.push(vertex)\n          }\n        } else {\n          // line segment intersects plane:\n          const nextpoint = vertices[nextvertexindex]\n          const intersectionpoint = splitLineSegmentByPlane(splane, vertex, nextpoint)\n          if (isback) {\n            backvertices.push(vertex)\n            backvertices.push(intersectionpoint)\n            frontvertices.push(intersectionpoint)\n          } else {\n            frontvertices.push(vertex)\n            frontvertices.push(intersectionpoint)\n            backvertices.push(intersectionpoint)\n          }\n        }\n        isback = nextisback\n      } // for vertexindex\n      // remove duplicate vertices:\n      const EPS_SQUARED = EPS * EPS\n      if (backvertices.length >= 3) {\n        let prevvertex = backvertices[backvertices.length - 1]\n        for (let vertexindex = 0; vertexindex < backvertices.length; vertexindex++) {\n          const vertex = backvertices[vertexindex]\n          if (vec3.squaredDistance(vertex, prevvertex) < EPS_SQUARED) {\n            backvertices.splice(vertexindex, 1)\n            vertexindex--\n          }\n          prevvertex = vertex\n        }\n      }\n      if (frontvertices.length >= 3) {\n        let prevvertex = frontvertices[frontvertices.length - 1]\n        for (let vertexindex = 0; vertexindex < frontvertices.length; vertexindex++) {\n          const vertex = frontvertices[vertexindex]\n          if (vec3.squaredDistance(vertex, prevvertex) < EPS_SQUARED) {\n            frontvertices.splice(vertexindex, 1)\n            vertexindex--\n          }\n          prevvertex = vertex\n        }\n      }\n      if (frontvertices.length >= 3) {\n        result.front = poly3.fromPointsAndPlane(frontvertices, pplane)\n      }\n      if (backvertices.length >= 3) {\n        result.back = poly3.fromPointsAndPlane(backvertices, pplane)\n      }\n    }\n  }\n  return result\n}\n\nmodule.exports = splitPolygonByPlane\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\nconst unionGeom2 = require('./unionGeom2')\nconst unionGeom3 = require('./unionGeom3')\n\n/**\n * Return a new geometry representing the total space in the given geometries.\n * The given geometries should be of the same type, either geom2 or geom3.\n *\n * @param {...Object} geometries - list of geometries\n * @returns {geom2|geom3} a new geometry\n * @alias module:modeling/booleans.union\n *\n * @example\n * let myshape = union(cube({size: [5,5,5]}), cube({size: [5,5,5], center: [5,5,5]}))\n *\n * @example\n * +-------+            +-------+\n * |       |            |       |\n * |   A   |            |       |\n * |    +--+----+   =   |       +----+\n * +----+--+    |       +----+       |\n *      |   B   |            |       |\n *      |       |            |       |\n *      +-------+            +-------+\n */\nconst union = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  if (!areAllShapesTheSameType(geometries)) {\n    throw new Error('only unions of the same type are supported')\n  }\n\n  const geometry = geometries[0]\n  // if (path.isA(geometry)) return pathunion(matrix, geometries)\n  if (geom2.isA(geometry)) return unionGeom2(geometries)\n  if (geom3.isA(geometry)) return unionGeom3(geometries)\n  return geometry\n}\n\nmodule.exports = union\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst fromFakePolygons = require('./fromFakePolygons')\nconst to3DWalls = require('./to3DWalls')\nconst unionGeom3 = require('./unionGeom3')\n\n/*\n * Return a new 2D geometry representing the total space in the given 2D geometries.\n * @param {...geom2} geometries - list of 2D geometries to union\n * @returns {geom2} new 2D geometry\n */\nconst union = (...geometries) => {\n  geometries = flatten(geometries)\n  const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry))\n\n  const newgeom3 = unionGeom3(newgeometries)\n  const epsilon = measureEpsilon(newgeom3)\n\n  return fromFakePolygons(epsilon, geom3.toPolygons(newgeom3))\n}\n\nmodule.exports = union\n","const flatten = require('../../utils/flatten')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst unionSub = require('./unionGeom3Sub')\n\n/*\n * Return a new 3D geometry representing the space in the given 3D geometries.\n * @param {...objects} geometries - list of geometries to union\n * @returns {geom3} new 3D geometry\n */\nconst union = (...geometries) => {\n  geometries = flatten(geometries)\n\n  // combine geometries in a way that forms a balanced binary tree pattern\n  let i\n  for (i = 1; i < geometries.length; i += 2) {\n    geometries.push(unionSub(geometries[i - 1], geometries[i]))\n  }\n  let newgeometry = geometries[i - 1]\n  newgeometry = retessellate(newgeometry)\n  return newgeometry\n}\n\nmodule.exports = union\n","const geom3 = require('../../geometries/geom3')\n\nconst mayOverlap = require('./mayOverlap')\nconst { Tree } = require('./trees')\n\n/*\n * Return a new 3D geometry representing the space in the given geometries.\n * @param {geom3} geometry1 - geometry to union\n * @param {geom3} geometry2 - geometry to union\n * @returns {geom3} new 3D geometry\n */\nconst unionSub = (geometry1, geometry2) => {\n  if (!mayOverlap(geometry1, geometry2)) {\n    return unionForNonIntersecting(geometry1, geometry2)\n  }\n\n  const a = new Tree(geom3.toPolygons(geometry1))\n  const b = new Tree(geom3.toPolygons(geometry2))\n\n  a.clipTo(b, false)\n  // b.clipTo(a, true); // ERROR: doesn't work\n  b.clipTo(a)\n  b.invert()\n  b.clipTo(a)\n  b.invert()\n\n  const newpolygons = a.allPolygons().concat(b.allPolygons())\n  const result = geom3.create(newpolygons)\n  return result\n}\n\n// Like union, but when we know that the two solids are not intersecting\n// Do not use if you are not completely sure that the solids do not intersect!\nconst unionForNonIntersecting = (geometry1, geometry2) => {\n  let newpolygons = geom3.toPolygons(geometry1)\n  newpolygons = newpolygons.concat(geom3.toPolygons(geometry2))\n  return geom3.create(newpolygons)\n}\n\nmodule.exports = unionSub\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst expandGeom2 = require('./expandGeom2')\nconst expandGeom3 = require('./expandGeom3')\nconst expandPath2 = require('./expandPath2')\n\n/**\n * Expand the given geometry using the given options.\n * Both internal and external space is expanded for 2D and 3D shapes.\n *\n * Note: Contract is expand using a negative delta.\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+/-) of expansion\n * @param {String} [options.corners='edge'] - type of corner to create after expanding; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {...Objects} objects - the geometries to expand\n * @return {Object|Array} new geometry, or list of new geometries\n * @alias module:modeling/expansions.expand\n *\n * @example\n * let newarc = expand({delta: 5, corners: 'edge'}, arc({}))\n * let newsquare = expand({delta: 5, corners: 'chamfer'}, square({size: 30}))\n * let newsphere = expand({delta: 2, corners: 'round'}, cuboid({size: [20, 25, 5]}))\n */\nconst expand = (options, ...objects) => {\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return expandPath2(options, object)\n    if (geom2.isA(object)) return expandGeom2(options, object)\n    if (geom3.isA(object)) return expandGeom3(options, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = expand\n","const geom2 = require('../../geometries/geom2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\n/*\n * Expand the given geometry (geom2) using the given options (if any).\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+/-) of expansion\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {geom2} geometry - the geometry to expand\n * @returns {geom2} expanded geometry\n */\nconst expandGeom2 = (options, geometry) => {\n  const defaults = {\n    delta: 1,\n    corners: 'edge',\n    segments: 16\n  }\n  const { delta, corners, segments } = Object.assign({ }, defaults, options)\n\n  if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n    throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n  }\n\n  // convert the geometry to outlines, and generate offsets from each\n  const outlines = geom2.toOutlines(geometry)\n  const newoutlines = outlines.map((outline) => {\n    options = {\n      delta,\n      corners,\n      closed: true,\n      segments\n    }\n    return offsetFromPoints(options, outline)\n  })\n\n  // create a composite geometry from the new outlines\n  const allsides = newoutlines.reduce((sides, newoutline) => sides.concat(geom2.toSides(geom2.fromPoints(newoutline))), [])\n  return geom2.create(allsides)\n}\n\nmodule.exports = expandGeom2\n","const geom3 = require('../../geometries/geom3')\n\nconst union = require('../booleans/union')\n\nconst expandShell = require('./expandShell')\n\n/*\n * Expand the given geometry (geom3) using the given options (if any).\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+/-) of expansion\n * @param {String} [options.corners='round'] - type corner to create during of expansion; round\n * @param {Integer} [options.segments=12] - number of segments when creating round corners\n * @param {geom3} geometry - the geometry to expand\n * @returns {geom3} expanded geometry\n */\nconst expandGeom3 = (options, geometry) => {\n  const defaults = {\n    delta: 1,\n    corners: 'round',\n    segments: 12\n  }\n  const { delta, corners, segments } = Object.assign({ }, defaults, options)\n\n  if (!(corners === 'round')) {\n    throw new Error('corners must be \"round\" for 3D geometries')\n  }\n\n  const polygons = geom3.toPolygons(geometry)\n  if (polygons.length === 0) throw new Error('the given geometry cannot be empty')\n\n  options = { delta, corners, segments }\n  const expanded = expandShell(options, geometry)\n  return union(geometry, expanded)\n}\n\nmodule.exports = expandGeom3\n","const area = require('../../maths/utils/area')\n\nconst vec2 = require('../../maths/vec2')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\nconst createGeometryFromClosedOffsets = (paths) => {\n  let { external, internal } = paths\n  if (area(external) < 0) {\n    external = external.reverse()\n  } else {\n    internal = internal.reverse()\n  }\n  // NOTE: creating path2 from the points ensures proper closure\n  const externalPath = path2.fromPoints({ closed: true }, external)\n  const internalPath = path2.fromPoints({ closed: true }, internal)\n  const externalSides = geom2.toSides(geom2.fromPoints(path2.toPoints(externalPath)))\n  const internalSides = geom2.toSides(geom2.fromPoints(path2.toPoints(internalPath)))\n  externalSides.push(...internalSides)\n  return geom2.create(externalSides)\n}\n\nconst createGeometryFromExpandedOpenPath = (paths, segments, corners, delta) => {\n  const { points, external, internal } = paths\n  const capSegments = Math.floor(segments / 2) // rotation is 180 degrees\n  const e2iCap = []\n  const i2eCap = []\n  if (corners === 'round' && capSegments > 0) {\n    // added round caps to the geometry\n    const step = Math.PI / capSegments\n    const eCorner = points[points.length - 1]\n    const e2iStart = vec2.angle(vec2.subtract(vec2.create(), external[external.length - 1], eCorner))\n    const iCorner = points[0]\n    const i2eStart = vec2.angle(vec2.subtract(vec2.create(), internal[0], iCorner))\n    for (let i = 1; i < capSegments; i++) {\n      let radians = e2iStart + (step * i)\n      let point = vec2.fromAngleRadians(vec2.create(), radians)\n      vec2.scale(point, point, delta)\n      vec2.add(point, point, eCorner)\n      e2iCap.push(point)\n\n      radians = i2eStart + (step * i)\n      point = vec2.fromAngleRadians(vec2.create(), radians)\n      vec2.scale(point, point, delta)\n      vec2.add(point, point, iCorner)\n      i2eCap.push(point)\n    }\n  }\n  const allPoints = []\n  allPoints.push(...external, ...e2iCap, ...internal.reverse(), ...i2eCap)\n  return geom2.fromPoints(allPoints)\n}\n\n/*\n * Expand the given geometry (path2) using the given options (if any).\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+) of expansion\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {path2} geometry - the geometry to expand\n * @returns {geom2} expanded geometry\n */\nconst expandPath2 = (options, geometry) => {\n  const defaults = {\n    delta: 1,\n    corners: 'edge',\n    segments: 16\n  }\n\n  options = Object.assign({ }, defaults, options)\n  const { delta, corners, segments } = options\n\n  if (delta <= 0) throw new Error('the given delta must be positive for paths')\n\n  if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n    throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n  }\n\n  const closed = geometry.isClosed\n  const points = path2.toPoints(geometry)\n  if (points.length === 0) throw new Error('the given geometry cannot be empty')\n\n  const paths = {\n    points: points,\n    external: offsetFromPoints({ delta, corners, segments, closed }, points),\n    internal: offsetFromPoints({ delta: -delta, corners, segments, closed }, points)\n  }\n\n  if (geometry.isClosed) {\n    return createGeometryFromClosedOffsets(paths)\n  } else {\n    return createGeometryFromExpandedOpenPath(paths, segments, corners, delta)\n  }\n}\n\nmodule.exports = expandPath2\n","const { EPS } = require('../../maths/constants')\n\nconst mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst fnNumberSort = require('../../utils/fnNumberSort')\n\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst sphere = require('../../primitives/sphere')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst unionGeom3Sub = require('../booleans/unionGeom3Sub')\n\nconst extrudePolygon = require('./extrudePolygon')\n\n/*\n * Collect all planes adjacent to each vertex\n */\nconst mapPlaneToVertex = (map, vertex, plane) => {\n  const key = vertex.toString()\n  if (!map.has(key)) {\n    const entry = [vertex, [plane]]\n    map.set(key, entry)\n  } else {\n    const planes = map.get(key)[1]\n    planes.push(plane)\n  }\n}\n\n/*\n * Collect all planes adjacent to each edge.\n * Combine undirected edges, no need for duplicate cylinders.\n */\nconst mapPlaneToEdge = (map, edge, plane) => {\n  const key0 = edge[0].toString()\n  const key1 = edge[1].toString()\n  // Sort keys to make edges undirected\n  const key = key0 < key1 ? `${key0},${key1}` : `${key1},${key0}`\n  if (!map.has(key)) {\n    const entry = [edge, [plane]]\n    map.set(key, entry)\n  } else {\n    const planes = map.get(key)[1]\n    planes.push(plane)\n  }\n}\n\nconst addUniqueAngle = (map, angle) => {\n  const i = map.findIndex((item) => item === angle)\n  if (i < 0) {\n    map.push(angle)\n  }\n}\n\n/*\n * Create the expanded shell of the solid:\n * All faces are extruded to 2 times delta\n * Cylinders are constructed around every side\n * Spheres are placed on every vertex\n * the result is a true expansion of the solid\n * @param  {Number} delta\n * @param  {Integer} segments\n */\nconst expandShell = (options, geometry) => {\n  const defaults = {\n    delta: 1,\n    segments: 12\n  }\n  const { delta, segments } = Object.assign({ }, defaults, options)\n\n  let result = geom3.create()\n  const vertices2planes = new Map() // {vertex: [vertex, [plane, ...]]}\n  const edges2planes = new Map() // {edge: [[vertex, vertex], [plane, ...]]}\n\n  const v1 = vec3.create()\n  const v2 = vec3.create()\n\n  // loop through the polygons\n  // - extruded the polygon, and add to the composite result\n  // - add the plane to the unique vertice map\n  // - add the plane to the unique edge map\n  const polygons = geom3.toPolygons(geometry)\n  polygons.forEach((polygon, index) => {\n    const extrudevector = vec3.scale(vec3.create(), poly3.plane(polygon), 2 * delta)\n    const translatedpolygon = poly3.transform(mat4.fromTranslation(mat4.create(), vec3.scale(vec3.create(), extrudevector, -0.5)), polygon)\n    const extrudedface = extrudePolygon(extrudevector, translatedpolygon)\n    result = unionGeom3Sub(result, extrudedface)\n\n    const vertices = polygon.vertices\n    for (let i = 0; i < vertices.length; i++) {\n      mapPlaneToVertex(vertices2planes, vertices[i], poly3.plane(polygon))\n      const j = (i + 1) % vertices.length\n      const edge = [vertices[i], vertices[j]]\n      mapPlaneToEdge(edges2planes, edge, poly3.plane(polygon))\n    }\n  })\n\n  // now construct a cylinder on every side\n  // The cylinder is always an approximation of a true cylinder, having polygons\n  // around the sides. We will make sure though that the cylinder will have an edge at every\n  // face that touches this side. This ensures that we will get a smooth fill even\n  // if two edges are at, say, 10 degrees and the segments is low.\n  edges2planes.forEach((item) => {\n    const edge = item[0]\n    const planes = item[1]\n    const startpoint = edge[0]\n    const endpoint = edge[1]\n\n    // our x,y and z vectors:\n    const zbase = vec3.subtract(vec3.create(), endpoint, startpoint)\n    vec3.normalize(zbase, zbase)\n    const xbase = planes[0]\n    const ybase = vec3.cross(vec3.create(), xbase, zbase)\n\n    // make a list of angles that the cylinder should traverse:\n    let angles = []\n\n    // first of all equally spaced around the cylinder:\n    for (let i = 0; i < segments; i++) {\n      addUniqueAngle(angles, (i * Math.PI * 2 / segments))\n    }\n\n    // and also at every normal of all touching planes:\n    for (let i = 0, iMax = planes.length; i < iMax; i++) {\n      const planenormal = planes[i]\n      const si = vec3.dot(ybase, planenormal)\n      const co = vec3.dot(xbase, planenormal)\n      let angle = Math.atan2(si, co)\n\n      if (angle < 0) angle += Math.PI * 2\n      addUniqueAngle(angles, angle)\n      angle = Math.atan2(-si, -co)\n      if (angle < 0) angle += Math.PI * 2\n      addUniqueAngle(angles, angle)\n    }\n\n    // this will result in some duplicate angles but we will get rid of those later.\n    angles = angles.sort(fnNumberSort)\n\n    // Now construct the cylinder by traversing all angles:\n    const numangles = angles.length\n    let prevp1\n    let prevp2\n    const startfacevertices = []\n    const endfacevertices = []\n    const polygons = []\n    for (let i = -1; i < numangles; i++) {\n      const angle = angles[(i < 0) ? (i + numangles) : i]\n      const si = Math.sin(angle)\n      const co = Math.cos(angle)\n      vec3.scale(v1, xbase, co * delta)\n      vec3.scale(v2, ybase, si * delta)\n      vec3.add(v1, v1, v2)\n      const p1 = vec3.add(vec3.create(), startpoint, v1)\n      const p2 = vec3.add(vec3.create(), endpoint, v1)\n      let skip = false\n      if (i >= 0) {\n        if (vec3.distance(p1, prevp1) < EPS) {\n          skip = true\n        }\n      }\n      if (!skip) {\n        if (i >= 0) {\n          startfacevertices.push(p1)\n          endfacevertices.push(p2)\n          const points = [prevp2, p2, p1, prevp1]\n          const polygon = poly3.create(points)\n          polygons.push(polygon)\n        }\n        prevp1 = p1\n        prevp2 = p2\n      }\n    }\n    endfacevertices.reverse()\n    polygons.push(poly3.create(startfacevertices))\n    polygons.push(poly3.create(endfacevertices))\n\n    const cylinder = geom3.create(polygons)\n    result = unionGeom3Sub(result, cylinder)\n  })\n\n  // build spheres at each unique vertex\n  // We will try to set the x and z axis to the normals of 2 planes\n  // This will ensure that our sphere tesselation somewhat matches 2 planes\n  vertices2planes.forEach((item) => {\n    const vertex = item[0]\n    const planes = item[1]\n    // use the first normal to be the x axis of our sphere:\n    const xaxis = planes[0]\n    // and find a suitable z axis. We will use the normal which is most perpendicular to the x axis:\n    let bestzaxis = null\n    let bestzaxisorthogonality = 0\n    for (let i = 1; i < planes.length; i++) {\n      const normal = planes[i]\n      const cross = vec3.cross(v1, xaxis, normal)\n      const crosslength = vec3.length(cross)\n      if (crosslength > 0.05) { // FIXME why 0.05?\n        if (crosslength > bestzaxisorthogonality) {\n          bestzaxisorthogonality = crosslength\n          bestzaxis = normal\n        }\n      }\n    }\n    if (!bestzaxis) {\n      bestzaxis = vec3.orthogonal(v1, xaxis)\n    }\n    const yaxis = vec3.cross(v1, xaxis, bestzaxis)\n    vec3.normalize(yaxis, yaxis)\n    const zaxis = vec3.cross(v2, yaxis, xaxis)\n    const corner = sphere({\n      center: [vertex[0], vertex[1], vertex[2]],\n      radius: delta,\n      segments: segments,\n      axes: [xaxis, yaxis, zaxis]\n    })\n    result = unionGeom3Sub(result, corner)\n  })\n  return retessellate(result)\n}\n\nmodule.exports = expandShell\n","const mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\n// Extrude a polygon in the direction of the offsetvector.\n// Returns (geom3) a new geometry\nconst extrudePolygon = (offsetvector, polygon1) => {\n  const direction = vec3.dot(poly3.plane(polygon1), offsetvector)\n  if (direction > 0) {\n    polygon1 = poly3.invert(polygon1)\n  }\n\n  const newpolygons = [polygon1]\n\n  const polygon2 = poly3.transform(mat4.fromTranslation(mat4.create(), offsetvector), polygon1)\n  const numvertices = polygon1.vertices.length\n  for (let i = 0; i < numvertices; i++) {\n    const nexti = (i < (numvertices - 1)) ? i + 1 : 0\n    const sideFacePolygon = poly3.create([\n      polygon1.vertices[i],\n      polygon2.vertices[i],\n      polygon2.vertices[nexti],\n      polygon1.vertices[nexti]\n    ])\n    newpolygons.push(sideFacePolygon)\n  }\n  newpolygons.push(poly3.invert(polygon2))\n\n  return geom3.create(newpolygons)\n}\n\nmodule.exports = extrudePolygon\n","/**\n * All shapes (primitives or the results of operations) can be expanded (or contracted.)\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/expansions\n * @example\n * const { expand, offset } = require('@jscad/modeling').expansions\n */\nmodule.exports = {\n  expand: require('./expand'),\n  offset: require('./offset')\n}\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst offsetGeom2 = require('./offsetGeom2')\nconst offsetPath2 = require('./offsetPath2')\n\n/**\n * Create offset geometry from the given geometry using the given options.\n * Offsets from internal and external space are created.\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type of corner to create after offseting; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {...Object} objects - the geometries to offset\n * @return {Object|Array} new geometry, or list of new geometries\n * @alias module:modeling/expansions.offset\n *\n * @example\n * let small = offset({ delta: -4, corners: 'chamfer' }, square({size: 40})) // contract\n */\nconst offset = (options, ...objects) => {\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return offsetPath2(options, object)\n    if (geom2.isA(object)) return offsetGeom2(options, object)\n    // if (geom3.isA(object)) return geom3.transform(matrix, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = offset\n","const { EPS } = require('../../maths/constants')\n\nconst intersect = require('../../maths/utils/intersect')\nconst line2 = require('../../maths/line2')\nconst vec2 = require('../../maths/vec2')\nconst area = require('../../maths/utils/area')\n\n/*\n * Create a set of offset points from the given points using the given options (if any).\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {Integer} [options.closed=false] - is the last point connected back to the first point?\n * @param {Array} points - array of 2D points\n * @returns {Array} new set of offset points, plus points for each rounded corner\n */\nconst offsetFromPoints = (options, points) => {\n  const defaults = {\n    delta: 1,\n    corners: 'edge',\n    closed: false,\n    segments: 16\n  }\n  let { delta, corners, closed, segments } = Object.assign({ }, defaults, options)\n\n  if (Math.abs(delta) < EPS) return points\n\n  let rotation = options.closed ? area(points) : 1.0 // + counter clockwise, - clockwise\n  if (rotation === 0) rotation = 1.0\n\n  // use right hand normal?\n  const orientation = ((rotation > 0) && (delta >= 0)) || ((rotation < 0) && (delta < 0))\n  delta = Math.abs(delta) // sign is no longer required\n\n  let previousSegment = null\n  let newPoints = []\n  const newCorners = []\n  const of = vec2.create()\n  const n = points.length\n  for (let i = 0; i < n; i++) {\n    const j = (i + 1) % n\n    const p0 = points[i]\n    const p1 = points[j]\n    // calculate the unit normal\n    orientation ? vec2.subtract(of, p0, p1) : vec2.subtract(of, p1, p0)\n    vec2.normal(of, of)\n    vec2.normalize(of, of)\n    // calculate the offset vector\n    vec2.scale(of, of, delta)\n    // calculate the new points (edge)\n    const n0 = vec2.add(vec2.create(), p0, of)\n    const n1 = vec2.add(vec2.create(), p1, of)\n\n    const currentSegment = [n0, n1]\n    if (previousSegment != null) {\n      if (closed || (!closed && j !== 0)) {\n        // check for intersection of new line segments\n        const ip = intersect(previousSegment[0], previousSegment[1], currentSegment[0], currentSegment[1])\n        if (ip) {\n          // adjust the previous points\n          newPoints.pop()\n          // adjust current points\n          currentSegment[0] = ip\n        } else {\n          newCorners.push({ c: p0, s0: previousSegment, s1: currentSegment })\n        }\n      }\n    }\n    previousSegment = [n0, n1]\n\n    if (j === 0 && !closed) continue\n\n    newPoints.push(currentSegment[0])\n    newPoints.push(currentSegment[1])\n  }\n  // complete the closure if required\n  if (closed && previousSegment != null) {\n    // check for intersection of closing line segments\n    const n0 = newPoints[0]\n    const n1 = newPoints[1]\n    const ip = intersect(previousSegment[0], previousSegment[1], n0, n1)\n    if (ip) {\n      // adjust the previous points\n      newPoints[0] = ip\n      newPoints.pop()\n    } else {\n      const p0 = points[0]\n      const cursegment = [n0, n1]\n      newCorners.push({ c: p0, s0: previousSegment, s1: cursegment })\n    }\n  }\n\n  // generate corners if necessary\n\n  if (corners === 'edge') {\n    // map for fast point index lookup\n    const pointIndex = new Map() // {point: index}\n    newPoints.forEach((point, index) => pointIndex.set(point, index))\n\n    // create edge corners\n    const line0 = line2.create()\n    const line1 = line2.create()\n    newCorners.forEach((corner) => {\n      line2.fromPoints(line0, corner.s0[0], corner.s0[1])\n      line2.fromPoints(line1, corner.s1[0], corner.s1[1])\n      const ip = line2.intersectPointOfLines(line0, line1)\n      if (Number.isFinite(ip[0]) && Number.isFinite(ip[1])) {\n        const p0 = corner.s0[1]\n        const i = pointIndex.get(p0)\n        newPoints[i] = ip\n        newPoints[(i + 1) % newPoints.length] = undefined\n      } else {\n        // paralell segments, drop one\n        const p0 = corner.s1[0]\n        const i = pointIndex.get(p0)\n        newPoints[i] = undefined\n      }\n    })\n    newPoints = newPoints.filter((p) => p !== undefined)\n  }\n\n  if (corners === 'round') {\n    // create rounded corners\n    let cornersegments = Math.floor(segments / 4)\n    const v0 = vec2.create()\n    newCorners.forEach((corner) => {\n      // calculate angle of rotation\n      let rotation = vec2.angle(vec2.subtract(v0, corner.s1[0], corner.c))\n      rotation -= vec2.angle(vec2.subtract(v0, corner.s0[1], corner.c))\n      if (orientation && rotation < 0) {\n        rotation = rotation + Math.PI\n        if (rotation < 0) rotation = rotation + Math.PI\n      }\n      if ((!orientation) && rotation > 0) {\n        rotation = rotation - Math.PI\n        if (rotation > 0) rotation = rotation - Math.PI\n      }\n\n      if (rotation !== 0.0) {\n        // generate the segments\n        cornersegments = Math.floor(segments * (Math.abs(rotation) / (2 * Math.PI)))\n        const step = rotation / cornersegments\n        const start = vec2.angle(vec2.subtract(v0, corner.s0[1], corner.c))\n        const cornerpoints = []\n        for (let i = 1; i < cornersegments; i++) {\n          const radians = start + (step * i)\n          const point = vec2.fromAngleRadians(vec2.create(), radians)\n          vec2.scale(point, point, delta)\n          vec2.add(point, point, corner.c)\n          cornerpoints.push(point)\n        }\n        if (cornerpoints.length > 0) {\n          const p0 = corner.s0[1]\n          let i = newPoints.findIndex((point) => vec2.equals(p0, point))\n          i = (i + 1) % newPoints.length\n          newPoints.splice(i, 0, ...cornerpoints)\n        }\n      } else {\n        // paralell segments, drop one\n        const p0 = corner.s1[0]\n        const i = newPoints.findIndex((point) => vec2.equals(p0, point))\n        newPoints.splice(i, 1)\n      }\n    })\n  }\n  return newPoints\n}\n\nmodule.exports = offsetFromPoints\n","const geom2 = require('../../geometries/geom2')\nconst poly2 = require('../../geometries/poly2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\n/*\n * Create a offset geometry from the given geom2 using the given options (if any).\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {geom2} geometry - geometry from which to create the offset\n * @returns {geom2} offset geometry, plus rounded corners\n */\nconst offsetGeom2 = (options, geometry) => {\n  const defaults = {\n    delta: 1,\n    corners: 'edge',\n    segments: 0\n  }\n  const { delta, corners, segments } = Object.assign({ }, defaults, options)\n\n  if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n    throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n  }\n\n  // convert the geometry to outlines, and generate offsets from each\n  const outlines = geom2.toOutlines(geometry)\n  const newoutlines = outlines.map((outline) => {\n    const level = outlines.reduce((acc, polygon) => acc + poly2.arePointsInside(outline, poly2.create(polygon)), 0)\n    const outside = (level % 2) === 0\n\n    options = {\n      delta: outside ? delta : -delta,\n      corners,\n      closed: true,\n      segments\n    }\n    return offsetFromPoints(options, outline)\n  })\n\n  // create a composite geometry from the new outlines\n  const allsides = newoutlines.reduce((sides, newoutline) => sides.concat(geom2.toSides(geom2.fromPoints(newoutline))), [])\n  return geom2.create(allsides)\n}\n\nmodule.exports = offsetGeom2\n","const path2 = require('../../geometries/path2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\n/*\n * Create a offset geometry from the given path using the given options (if any).\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {path2} geometry - geometry from which to create the offset\n * @returns {path2} offset geometry, plus rounded corners\n */\nconst offsetPath2 = (options, geometry) => {\n  const defaults = {\n    delta: 1,\n    corners: 'edge',\n    closed: geometry.isClosed,\n    segments: 16\n  }\n  const { delta, corners, closed, segments } = Object.assign({ }, defaults, options)\n\n  if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n    throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n  }\n\n  options = { delta, corners, closed, segments }\n  const newpoints = offsetFromPoints(options, path2.toPoints(geometry))\n  return path2.fromPoints({ closed: closed }, newpoints)\n}\n\nmodule.exports = offsetPath2\n","const { area } = require('../../../maths/utils')\nconst { toOutlines } = require('../../../geometries/geom2')\nconst { arePointsInside } = require('../../../geometries/poly2')\n\n/*\n * Constructs a polygon hierarchy of solids and holes.\n * The hierarchy is represented as a forest of trees. All trees shall be depth at most 2.\n * If a solid exists inside the hole of another solid, it will be split out as its own root.\n *\n * @param {geom2} geometry\n * @returns {Array} an array of polygons with associated holes\n * @alias module:modeling/geometries/geom2.toTree\n *\n * @example\n * const geometry = subtract(rectangle({size: [5, 5]}), rectangle({size: [3, 3]}))\n * console.log(assignHoles(geometry))\n * [{\n *   \"solid\": [[-2.5,-2.5],[2.5,-2.5],[2.5,2.5],[-2.5,2.5]],\n *   \"holes\": [[[-1.5,1.5],[1.5,1.5],[1.5,-1.5],[-1.5,-1.5]]]\n * }]\n */\nconst assignHoles = (geometry) => {\n  const outlines = toOutlines(geometry)\n  const solids = [] // solid indices\n  const holes = [] // hole indices\n  outlines.forEach((outline, i) => {\n    const a = area(outline)\n    if (a < 0) {\n      holes.push(i)\n    } else if (a > 0) {\n      solids.push(i)\n    }\n  })\n\n  // for each hole, determine what solids it is inside of\n  const children = [] // child holes of solid[i]\n  const parents = [] // parent solids of hole[i]\n  solids.forEach((s, i) => {\n    const solid = outlines[s]\n    children[i] = []\n    holes.forEach((h, j) => {\n      const hole = outlines[h]\n      // check if a point of hole j is inside solid i\n      if (arePointsInside([hole[0]], { vertices: solid })) {\n        children[i].push(h)\n        if (!parents[j]) parents[j] = []\n        parents[j].push(i)\n      }\n    })\n  })\n\n  // check if holes have multiple parents and choose one with fewest children\n  holes.forEach((h, j) => {\n    // ensure at least one parent exists\n    if (parents[j] && parents[j].length > 1) {\n      // the solid directly containing this hole\n      const directParent = minIndex(parents[j], (p) => children[p].length)\n      parents[j].forEach((p, i) => {\n        if (i !== directParent) {\n          // Remove hole from skip level parents\n          children[p] = children[p].filter((c) => c !== h)\n        }\n      })\n    }\n  })\n\n  // map indices back to points\n  return children.map((holes, i) => ({\n    solid: outlines[solids[i]],\n    holes: holes.map((h) => outlines[h])\n  }))\n}\n\n/*\n * Find the item in the list with smallest score(item).\n * If the list is empty, return undefined.\n */\nconst minIndex = (list, score) => {\n  let bestIndex\n  let best\n  list.forEach((item, index) => {\n    const value = score(item)\n    if (best === undefined || value < best) {\n      bestIndex = index\n      best = value\n    }\n  })\n  return bestIndex\n}\n\nmodule.exports = assignHoles\n","const { filterPoints, linkedPolygon, locallyInside, splitPolygon } = require('./linkedPolygon')\nconst { area, pointInTriangle } = require('./triangle')\n\n/*\n * link every hole into the outer loop, producing a single-ring polygon without holes\n *\n * Original source from https://github.com/mapbox/earcut\n * Copyright (c) 2016 Mapbox\n */\nconst eliminateHoles = (data, holeIndices, outerNode, dim) => {\n  const queue = []\n\n  for (let i = 0, len = holeIndices.length; i < len; i++) {\n    const start = holeIndices[i] * dim\n    const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length\n    const list = linkedPolygon(data, start, end, dim, false)\n    if (list === list.next) list.steiner = true\n    queue.push(getLeftmost(list))\n  }\n\n  queue.sort((a, b) => a.x - b.x) // compare X\n\n  // process holes from left to right\n  for (let i = 0; i < queue.length; i++) {\n    outerNode = eliminateHole(queue[i], outerNode)\n    outerNode = filterPoints(outerNode, outerNode.next)\n  }\n\n  return outerNode\n}\n\n/*\n * find a bridge between vertices that connects hole with an outer ring and link it\n */\nconst eliminateHole = (hole, outerNode) => {\n  const bridge = findHoleBridge(hole, outerNode)\n  if (!bridge) {\n    return outerNode\n  }\n\n  const bridgeReverse = splitPolygon(bridge, hole)\n\n  // filter colinear points around the cuts\n  const filteredBridge = filterPoints(bridge, bridge.next)\n  filterPoints(bridgeReverse, bridgeReverse.next)\n\n  // Check if input node was removed by the filtering\n  return outerNode === bridge ? filteredBridge : outerNode\n}\n\n/*\n * David Eberly's algorithm for finding a bridge between hole and outer polygon\n */\nconst findHoleBridge = (hole, outerNode) => {\n  let p = outerNode\n  const hx = hole.x\n  const hy = hole.y\n  let qx = -Infinity\n  let m\n\n  // find a segment intersected by a ray from the hole's leftmost point to the left\n  // segment's endpoint with lesser x will be potential connection point\n  do {\n    if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n      const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y)\n      if (x <= hx && x > qx) {\n        qx = x\n        if (x === hx) {\n          if (hy === p.y) return p\n          if (hy === p.next.y) return p.next\n        }\n\n        m = p.x < p.next.x ? p : p.next\n      }\n    }\n\n    p = p.next\n  } while (p !== outerNode)\n\n  if (!m) return null\n\n  if (hx === qx) return m // hole touches outer segment; pick leftmost endpoint\n\n  // look for points inside the triangle of hole point, segment intersection and endpoint\n  // if there are no points found, we have a valid connection\n  // otherwise choose the point of the minimum angle with the ray as connection point\n\n  const stop = m\n  const mx = m.x\n  const my = m.y\n  let tanMin = Infinity\n\n  p = m\n\n  do {\n    if (hx >= p.x && p.x >= mx && hx !== p.x &&\n        pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n      const tan = Math.abs(hy - p.y) / (hx - p.x) // tangential\n\n      if (locallyInside(p, hole) && (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n        m = p\n        tanMin = tan\n      }\n    }\n\n    p = p.next\n  } while (p !== stop)\n\n  return m\n}\n\n/*\n * whether sector in vertex m contains sector in vertex p in the same coordinates\n */\nconst sectorContainsSector = (m, p) => area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0\n\n/*\n * find the leftmost node of a polygon ring\n */\nconst getLeftmost = (start) => {\n  let p = start\n  let leftmost = start\n  do {\n    if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p\n    p = p.next\n  } while (p !== start)\n\n  return leftmost\n}\n\nmodule.exports = eliminateHoles\n","const eliminateHoles = require('./eliminateHoles')\nconst { removeNode, sortLinked } = require('./linkedList')\nconst { cureLocalIntersections, filterPoints, isValidDiagonal, linkedPolygon, splitPolygon } = require('./linkedPolygon')\nconst { area, pointInTriangle } = require('./triangle')\n\n/*\n * An implementation of the earcut polygon triangulation algorithm.\n *\n * Original source from https://github.com/mapbox/earcut\n * Copyright (c) 2016 Mapbox\n *\n * @param {data} A flat array of vertex coordinates.\n * @param {holeIndices} An array of hole indices if any.\n * @param {dim} The number of coordinates per vertex in the input array.\n */\nconst triangulate = (data, holeIndices, dim = 2) => {\n  const hasHoles = holeIndices && holeIndices.length\n  const outerLen = hasHoles ? holeIndices[0] * dim : data.length\n  let outerNode = linkedPolygon(data, 0, outerLen, dim, true)\n  const triangles = []\n\n  if (!outerNode || outerNode.next === outerNode.prev) return triangles\n\n  let minX, minY, maxX, maxY, invSize\n\n  if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim)\n\n  // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n  if (data.length > 80 * dim) {\n    minX = maxX = data[0]\n    minY = maxY = data[1]\n\n    for (let i = dim; i < outerLen; i += dim) {\n      const x = data[i]\n      const y = data[i + 1]\n      if (x < minX) minX = x\n      if (y < minY) minY = y\n      if (x > maxX) maxX = x\n      if (y > maxY) maxY = y\n    }\n\n    // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n    invSize = Math.max(maxX - minX, maxY - minY)\n    invSize = invSize !== 0 ? 1 / invSize : 0\n  }\n\n  earcutLinked(outerNode, triangles, dim, minX, minY, invSize)\n\n  return triangles\n}\n\n/*\n * main ear slicing loop which triangulates a polygon (given as a linked list)\n */\nconst earcutLinked = (ear, triangles, dim, minX, minY, invSize, pass) => {\n  if (!ear) return\n\n  // interlink polygon nodes in z-order\n  if (!pass && invSize) indexCurve(ear, minX, minY, invSize)\n\n  let stop = ear\n  let prev\n  let next\n\n  // iterate through ears, slicing them one by one\n  while (ear.prev !== ear.next) {\n    prev = ear.prev\n    next = ear.next\n\n    if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n      // cut off the triangle\n      triangles.push(prev.i / dim)\n      triangles.push(ear.i / dim)\n      triangles.push(next.i / dim)\n\n      removeNode(ear)\n\n      // skipping the next vertex leads to less sliver triangles\n      ear = next.next\n      stop = next.next\n\n      continue\n    }\n\n    ear = next\n\n    // if we looped through the whole remaining polygon and can't find any more ears\n    if (ear === stop) {\n      // try filtering points and slicing again\n      if (!pass) {\n        earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1)\n\n        // if this didn't work, try curing all small self-intersections locally\n      } else if (pass === 1) {\n        ear = cureLocalIntersections(filterPoints(ear), triangles, dim)\n        earcutLinked(ear, triangles, dim, minX, minY, invSize, 2)\n\n        // as a last resort, try splitting the remaining polygon into two\n      } else if (pass === 2) {\n        splitEarcut(ear, triangles, dim, minX, minY, invSize)\n      }\n\n      break\n    }\n  }\n}\n\n/*\n * check whether a polygon node forms a valid ear with adjacent nodes\n */\nconst isEar = (ear) => {\n  const a = ear.prev\n  const b = ear\n  const c = ear.next\n\n  if (area(a, b, c) >= 0) return false // reflex, can't be an ear\n\n  // now make sure we don't have other points inside the potential ear\n  let p = ear.next.next\n\n  while (p !== ear.prev) {\n    if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) {\n      return false\n    }\n    p = p.next\n  }\n\n  return true\n}\n\nconst isEarHashed = (ear, minX, minY, invSize) => {\n  const a = ear.prev\n  const b = ear\n  const c = ear.next\n\n  if (area(a, b, c) >= 0) return false // reflex, can't be an ear\n\n  // triangle bbox; min & max are calculated like this for speed\n  const minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x)\n  const minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y)\n  const maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x)\n  const maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y)\n\n  // z-order range for the current triangle bbox\n  const minZ = zOrder(minTX, minTY, minX, minY, invSize)\n  const maxZ = zOrder(maxTX, maxTY, minX, minY, invSize)\n\n  let p = ear.prevZ\n  let n = ear.nextZ\n\n  // look for points inside the triangle in both directions\n  while (p && p.z >= minZ && n && n.z <= maxZ) {\n    if (p !== ear.prev && p !== ear.next &&\n      pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n      area(p.prev, p, p.next) >= 0) return false\n    p = p.prevZ\n\n    if (n !== ear.prev && n !== ear.next &&\n      pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n      area(n.prev, n, n.next) >= 0) return false\n    n = n.nextZ\n  }\n\n  // look for remaining points in decreasing z-order\n  while (p && p.z >= minZ) {\n    if (p !== ear.prev && p !== ear.next &&\n      pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n      area(p.prev, p, p.next) >= 0) return false\n    p = p.prevZ\n  }\n\n  // look for remaining points in increasing z-order\n  while (n && n.z <= maxZ) {\n    if (n !== ear.prev && n !== ear.next &&\n      pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n      area(n.prev, n, n.next) >= 0) return false\n    n = n.nextZ\n  }\n\n  return true\n}\n\n/*\n * try splitting polygon into two and triangulate them independently\n */\nconst splitEarcut = (start, triangles, dim, minX, minY, invSize) => {\n  // look for a valid diagonal that divides the polygon into two\n  let a = start\n  do {\n    let b = a.next.next\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        // split the polygon in two by the diagonal\n        let c = splitPolygon(a, b)\n\n        // filter colinear points around the cuts\n        a = filterPoints(a, a.next)\n        c = filterPoints(c, c.next)\n\n        // run earcut on each half\n        earcutLinked(a, triangles, dim, minX, minY, invSize)\n        earcutLinked(c, triangles, dim, minX, minY, invSize)\n        return\n      }\n\n      b = b.next\n    }\n\n    a = a.next\n  } while (a !== start)\n}\n\n/*\n * interlink polygon nodes in z-order\n */\nconst indexCurve = (start, minX, minY, invSize) => {\n  let p = start\n  do {\n    if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize)\n    p.prevZ = p.prev\n    p.nextZ = p.next\n    p = p.next\n  } while (p !== start)\n\n  p.prevZ.nextZ = null\n  p.prevZ = null\n\n  sortLinked(p, (p) => p.z)\n}\n\n/*\n * z-order of a point given coords and inverse of the longer side of data bbox\n */\nconst zOrder = (x, y, minX, minY, invSize) => {\n  // coords are transformed into non-negative 15-bit integer range\n  x = 32767 * (x - minX) * invSize\n  y = 32767 * (y - minY) * invSize\n\n  x = (x | (x << 8)) & 0x00FF00FF\n  x = (x | (x << 4)) & 0x0F0F0F0F\n  x = (x | (x << 2)) & 0x33333333\n  x = (x | (x << 1)) & 0x55555555\n\n  y = (y | (y << 8)) & 0x00FF00FF\n  y = (y | (y << 4)) & 0x0F0F0F0F\n  y = (y | (y << 2)) & 0x33333333\n  y = (y | (y << 1)) & 0x55555555\n\n  return x | (y << 1)\n}\n\nmodule.exports = triangulate\n","const sortLinked = require('./linkedListSort')\n\nclass Node {\n  constructor (i, x, y) {\n    // vertex index in coordinates array\n    this.i = i\n\n    // vertex coordinates\n    this.x = x\n    this.y = y\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null\n    this.next = null\n\n    // z-order curve value\n    this.z = null\n\n    // previous and next nodes in z-order\n    this.prevZ = null\n    this.nextZ = null\n\n    // indicates whether this is a steiner point\n    this.steiner = false\n  }\n}\n\n/*\n * create a node and optionally link it with previous one (in a circular doubly linked list)\n */\nconst insertNode = (i, x, y, last) => {\n  const p = new Node(i, x, y)\n\n  if (!last) {\n    p.prev = p\n    p.next = p\n  } else {\n    p.next = last.next\n    p.prev = last\n    last.next.prev = p\n    last.next = p\n  }\n\n  return p\n}\n\n/*\n * remove a node and join prev with next nodes\n */\nconst removeNode = (p) => {\n  p.next.prev = p.prev\n  p.prev.next = p.next\n\n  if (p.prevZ) p.prevZ.nextZ = p.nextZ\n  if (p.nextZ) p.nextZ.prevZ = p.prevZ\n}\n\nmodule.exports = { Node, insertNode, removeNode, sortLinked }\n","\n// Simon Tatham's linked list merge sort algorithm\n// https://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nconst sortLinked = (list, fn) => {\n  let i, p, q, e, numMerges\n  let inSize = 1\n\n  do {\n    p = list\n    list = null\n    let tail = null\n    numMerges = 0\n\n    while (p) {\n      numMerges++\n      q = p\n      let pSize = 0\n      for (i = 0; i < inSize; i++) {\n        pSize++\n        q = q.nextZ\n        if (!q) break\n      }\n\n      let qSize = inSize\n\n      while (pSize > 0 || (qSize > 0 && q)) {\n        if (pSize !== 0 && (qSize === 0 || !q || fn(p) <= fn(q))) {\n          e = p\n          p = p.nextZ\n          pSize--\n        } else {\n          e = q\n          q = q.nextZ\n          qSize--\n        }\n\n        if (tail) tail.nextZ = e\n        else list = e\n\n        e.prevZ = tail\n        tail = e\n      }\n\n      p = q\n    }\n\n    tail.nextZ = null\n    inSize *= 2\n  } while (numMerges > 1)\n\n  return list\n}\n\nmodule.exports = sortLinked\n","const { Node, insertNode, removeNode } = require('./linkedList')\nconst { area } = require('./triangle')\n\n/*\n * create a circular doubly linked list from polygon points in the specified winding order\n */\nconst linkedPolygon = (data, start, end, dim, clockwise) => {\n  let last\n\n  if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n    for (let i = start; i < end; i += dim) {\n      last = insertNode(i, data[i], data[i + 1], last)\n    }\n  } else {\n    for (let i = end - dim; i >= start; i -= dim) {\n      last = insertNode(i, data[i], data[i + 1], last)\n    }\n  }\n\n  if (last && equals(last, last.next)) {\n    removeNode(last)\n    last = last.next\n  }\n\n  return last\n}\n\n/*\n * eliminate colinear or duplicate points\n */\nconst filterPoints = (start, end) => {\n  if (!start) return start\n  if (!end) end = start\n\n  let p = start\n  let again\n  do {\n    again = false\n\n    if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n      removeNode(p)\n      p = end = p.prev\n      if (p === p.next) break\n      again = true\n    } else {\n      p = p.next\n    }\n  } while (again || p !== end)\n\n  return end\n}\n\n/*\n * go through all polygon nodes and cure small local self-intersections\n */\nconst cureLocalIntersections = (start, triangles, dim) => {\n  let p = start\n  do {\n    const a = p.prev\n    const b = p.next.next\n\n    if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim)\n      triangles.push(p.i / dim)\n      triangles.push(b.i / dim)\n\n      // remove two nodes involved\n      removeNode(p)\n      removeNode(p.next)\n\n      p = start = b\n    }\n\n    p = p.next\n  } while (p !== start)\n\n  return filterPoints(p)\n}\n\n/*\n * check if a polygon diagonal intersects any polygon segments\n */\nconst intersectsPolygon = (a, b) => {\n  let p = a\n  do {\n    if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n        intersects(p, p.next, a, b)) return true\n    p = p.next\n  } while (p !== a)\n\n  return false\n}\n\n/*\n * check if a polygon diagonal is locally inside the polygon\n */\nconst locallyInside = (a, b) => area(a.prev, a, a.next) < 0\n  ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0\n  : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0\n\n/*\n * check if the middle point of a polygon diagonal is inside the polygon\n */\nconst middleInside = (a, b) => {\n  let p = a\n  let inside = false\n  const px = (a.x + b.x) / 2\n  const py = (a.y + b.y) / 2\n  do {\n    if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n        (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x)) { inside = !inside }\n    p = p.next\n  } while (p !== a)\n\n  return inside\n}\n\n/*\n * link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two\n * if one belongs to the outer ring and another to a hole, it merges it into a single ring\n */\nconst splitPolygon = (a, b) => {\n  const a2 = new Node(a.i, a.x, a.y)\n  const b2 = new Node(b.i, b.x, b.y)\n  const an = a.next\n  const bp = b.prev\n\n  a.next = b\n  b.prev = a\n\n  a2.next = an\n  an.prev = a2\n\n  b2.next = a2\n  a2.prev = b2\n\n  bp.next = b2\n  b2.prev = bp\n\n  return b2\n}\n\n/*\n * check if a diagonal between two polygon nodes is valid (lies in polygon interior)\n */\nconst isValidDiagonal = (a, b) => a.next.i !== b.i &&\n    a.prev.i !== b.i &&\n    !intersectsPolygon(a, b) && // doesn't intersect other edges\n    (\n      locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n        (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n        equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0\n    )\n\n/*\n * check if two segments intersect\n */\nconst intersects = (p1, q1, p2, q2) => {\n  const o1 = Math.sign(area(p1, q1, p2))\n  const o2 = Math.sign(area(p1, q1, q2))\n  const o3 = Math.sign(area(p2, q2, p1))\n  const o4 = Math.sign(area(p2, q2, q1))\n\n  if (o1 !== o2 && o3 !== o4) return true // general case\n\n  if (o1 === 0 && onSegment(p1, p2, q1)) return true // p1, q1 and p2 are colinear and p2 lies on p1q1\n  if (o2 === 0 && onSegment(p1, q2, q1)) return true // p1, q1 and q2 are colinear and q2 lies on p1q1\n  if (o3 === 0 && onSegment(p2, p1, q2)) return true // p2, q2 and p1 are colinear and p1 lies on p2q2\n  if (o4 === 0 && onSegment(p2, q1, q2)) return true // p2, q2 and q1 are colinear and q1 lies on p2q2\n\n  return false\n}\n\n/*\n * for colinear points p, q, r, check if point q lies on segment pr\n */\nconst onSegment = (p, q, r) => q.x <= Math.max(p.x, r.x) &&\n    q.x >= Math.min(p.x, r.x) &&\n    q.y <= Math.max(p.y, r.y) &&\n    q.y >= Math.min(p.y, r.y)\n\nconst signedArea = (data, start, end, dim) => {\n  let sum = 0\n  for (let i = start, j = end - dim; i < end; i += dim) {\n    sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1])\n    j = i\n  }\n\n  return sum\n}\n\n/*\n * check if two points are equal\n */\nconst equals = (p1, p2) => p1.x === p2.x && p1.y === p2.y\n\nmodule.exports = { cureLocalIntersections, filterPoints, isValidDiagonal, linkedPolygon, locallyInside, splitPolygon }\n","const geom2 = require('../../../geometries/geom2')\nconst plane = require('../../../maths/plane')\nconst vec2 = require('../../../maths/vec2')\nconst vec3 = require('../../../maths/vec3')\nconst calculatePlane = require('../slice/calculatePlane')\nconst assignHoles = require('./assignHoles')\n\n/*\n * Constructs a polygon hierarchy which associates holes with their outer solids.\n * This class maps a 3D polygon onto a 2D space using an orthonormal basis.\n * It tracks the mapping so that points can be reversed back to 3D losslessly.\n */\nclass PolygonHierarchy {\n  constructor (slice) {\n    this.plane = calculatePlane(slice)\n\n    // create an orthonormal basis\n    // choose an arbitrary right hand vector, making sure it is somewhat orthogonal to the plane normal\n    const rightvector = vec3.orthogonal(vec3.create(), this.plane)\n    const perp = vec3.cross(vec3.create(), this.plane, rightvector)\n    this.v = vec3.normalize(perp, perp)\n    this.u = vec3.cross(vec3.create(), this.v, this.plane)\n\n    // map from 2D to original 3D points\n    this.basisMap = new Map()\n\n    // project slice onto 2D plane\n    const projected = slice.edges.map((e) => e.map((v) => this.to2D(v)))\n\n    // compute polygon hierarchies, assign holes to solids\n    const geometry = geom2.create(projected)\n    this.roots = assignHoles(geometry)\n  }\n\n  /*\n   * project a 3D point onto the 2D plane\n   */\n  to2D (vector3) {\n    const vector2 = vec2.fromValues(vec3.dot(vector3, this.u), vec3.dot(vector3, this.v))\n    this.basisMap.set(vector2, vector3)\n    return vector2\n  }\n\n  /*\n   * un-project a 2D point back into 3D\n   */\n  to3D (vector2) {\n    // use a map to get the original 3D, no floating point error\n    const original = this.basisMap.get(vector2)\n    if (original) {\n      return original\n    } else {\n      console.log('Warning: point not in original slice')\n      const v1 = vec3.scale(vec3.create(), this.u, vector2[0])\n      const v2 = vec3.scale(vec3.create(), this.v, vector2[1])\n\n      const planeOrigin = vec3.scale(vec3.create(), plane, plane[3])\n      const v3 = vec3.add(v1, v1, planeOrigin)\n      return vec3.add(v2, v2, v3)\n    }\n  }\n}\n\nmodule.exports = PolygonHierarchy\n","\n/*\n * check if a point lies within a convex triangle\n */\nconst pointInTriangle = (ax, ay, bx, by, cx, cy, px, py) => (\n  (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n      (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n      (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0\n)\n\n/*\n * signed area of a triangle\n */\nconst area = (p, q, r) => (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y)\n\nmodule.exports = { area, pointInTriangle }\n","const mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst slice = require('./slice')\nconst repairSlice = require('./slice/repairSlice')\n\nconst extrudeWalls = require('./extrudeWalls')\n\nconst defaultCallback = (progress, index, base) => {\n  let baseSlice = null\n  if (geom2.isA(base)) baseSlice = slice.fromSides(geom2.toSides(base))\n  if (poly3.isA(base)) baseSlice = slice.fromPoints(poly3.toPoints(base))\n\n  return progress === 0 || progress === 1 ? slice.transform(mat4.fromTranslation(mat4.create(), [0, 0, progress]), baseSlice) : null\n}\n\n/**\n * Extrude a solid from the slices as returned by the callback function.\n * @see slice\n *\n * @param {Object} options - options for extrude\n * @param {Integer} [options.numberOfSlices=2] the number of slices to be generated by the callback\n * @param {Boolean} [options.capStart=true] the solid should have a cap at the start\n * @param {Boolean} [options.capEnd=true] the solid should have a cap at the end\n * @param {Boolean} [options.close=false] the solid should have a closing section between start and end\n * @param {Boolean} [options.repair=true] - repair gaps in the geometry\n * @param {Function} [options.callback] the callback function that generates each slice\n * @param {Object} base - the base object which is used to create slices (see the example for callback information)\n * @return {geom3} the extruded shape\n * @alias module:modeling/extrusions.extrudeFromSlices\n *\n * @example\n * // Parameters:\n * //   progress : the percent complete [0..1]\n * //   index : the index of the current slice [0..numberOfSlices - 1]\n * //   base : the base object as given\n * // Return Value:\n * //   slice or null (to skip)\n * const callback = (progress, index, base) => {\n *   ...\n *   return slice\n * }\n */\nconst extrudeFromSlices = (options, base) => {\n  const defaults = {\n    numberOfSlices: 2,\n    capStart: true,\n    capEnd: true,\n    close: false,\n    repair: true,\n    callback: defaultCallback\n  }\n  const { numberOfSlices, capStart, capEnd, close, repair, callback: generate } = Object.assign({ }, defaults, options)\n\n  if (numberOfSlices < 2) throw new Error('numberOfSlices must be 2 or more')\n\n  // Repair gaps in the base slice\n  if (repair) {\n    repairSlice(base)\n  }\n\n  const sMax = numberOfSlices - 1\n\n  let startSlice = null\n  let endSlice = null\n  let prevSlice = null\n  let polygons = []\n  for (let s = 0; s < numberOfSlices; s++) {\n    // invoke the callback function to get the next slice\n    // NOTE: callback can return null to skip the slice\n    const currentSlice = generate(s / sMax, s, base)\n\n    if (currentSlice) {\n      if (!slice.isA(currentSlice)) throw new Error('the callback function must return slice objects')\n\n      const edges = slice.toEdges(currentSlice)\n      if (edges.length === 0) throw new Error('the callback function must return slices with one or more edges')\n\n      if (prevSlice) {\n        polygons = polygons.concat(extrudeWalls(prevSlice, currentSlice))\n      }\n\n      // save start and end slices for caps if necessary\n      if (s === 0) startSlice = currentSlice\n      if (s === (numberOfSlices - 1)) endSlice = currentSlice\n\n      prevSlice = currentSlice\n    }\n  }\n\n  if (capEnd) {\n    // create a cap at the end\n    const endPolygons = slice.toPolygons(endSlice)\n    polygons = polygons.concat(endPolygons)\n  }\n  if (capStart) {\n    // create a cap at the start\n    const startPolygons = slice.toPolygons(startSlice).map(poly3.invert)\n    polygons = polygons.concat(startPolygons)\n  }\n  if (!capStart && !capEnd) {\n    // create walls between end and start slices\n    if (close && !slice.equals(endSlice, startSlice)) {\n      polygons = polygons.concat(extrudeWalls(endSlice, startSlice))\n    }\n  }\n  return geom3.create(polygons)\n}\n\nmodule.exports = extrudeFromSlices\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\nconst extrudeLinearPath2 = require('./extrudeLinearPath2')\n\n/**\n * Extrude the given geometry in an upward linear direction using the given options.\n * Accepts path2 or geom2 objects as input. Paths must be closed.\n *\n * @param {Object} options - options for extrude\n * @param {Number} [options.height=1] the height of the extrusion\n * @param {Number} [options.twistAngle=0] the final rotation (RADIANS) about the origin of the shape (if any)\n * @param {Integer} [options.twistSteps=1] the resolution of the twist about the axis (if any)\n * @param {...Object} objects - the geometries to extrude\n * @return {Object|Array} the extruded geometry, or a list of extruded geometry\n * @alias module:modeling/extrusions.extrudeLinear\n *\n * @example\n * let myshape = extrudeLinear({height: 10}, rectangle({size: [20, 25]}))\n */\nconst extrudeLinear = (options, ...objects) => {\n  const defaults = {\n    height: 1,\n    twistAngle: 0,\n    twistSteps: 1,\n    repair: true\n  }\n  const { height, twistAngle, twistSteps, repair } = Object.assign({ }, defaults, options)\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  options = { offset: [0, 0, height], twistAngle, twistSteps, repair }\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return extrudeLinearPath2(options, object)\n    if (geom2.isA(object)) return extrudeLinearGeom2(options, object)\n    // if (geom3.isA(object)) return geom3.extrude(options, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = extrudeLinear\n","const mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst slice = require('./slice')\n\nconst extrudeFromSlices = require('./extrudeFromSlices')\n\n/*\n * Extrude the given geometry using the given options.\n *\n * @param {Object} [options] - options for extrude\n * @param {Array} [options.offset] - the direction of the extrusion as a 3D vector\n * @param {Number} [options.twistAngle] - the final rotation (RADIANS) about the origin\n * @param {Integer} [options.twistSteps] - the number of steps created to produce the twist (if any)\n * @param {Boolean} [options.repair] - repair gaps in the geometry\n * @param {geom2} geometry - the geometry to extrude\n * @returns {geom3} the extruded 3D geometry\n*/\nconst extrudeGeom2 = (options, geometry) => {\n  const defaults = {\n    offset: [0, 0, 1],\n    twistAngle: 0,\n    twistSteps: 12,\n    repair: true\n  }\n  let { offset, twistAngle, twistSteps, repair } = Object.assign({ }, defaults, options)\n\n  if (twistSteps < 1) throw new Error('twistSteps must be 1 or more')\n\n  if (twistAngle === 0) {\n    twistSteps = 1\n  }\n\n  // convert to vector in order to perform transforms\n  const offsetv = vec3.clone(offset)\n\n  const baseSides = geom2.toSides(geometry)\n  if (baseSides.length === 0) throw new Error('the given geometry cannot be empty')\n\n  const baseSlice = slice.fromSides(baseSides)\n  if (offsetv[2] < 0) slice.reverse(baseSlice, baseSlice)\n\n  const matrix = mat4.create()\n  const createTwist = (progress, index, base) => {\n    const Zrotation = index / twistSteps * twistAngle\n    const Zoffset = vec3.scale(vec3.create(), offsetv, index / twistSteps)\n    mat4.multiply(matrix, mat4.fromZRotation(matrix, Zrotation), mat4.fromTranslation(mat4.create(), Zoffset))\n\n    return slice.transform(matrix, base)\n  }\n\n  options = {\n    numberOfSlices: twistSteps + 1,\n    capStart: true,\n    capEnd: true,\n    repair,\n    callback: createTwist\n  }\n  return extrudeFromSlices(options, baseSlice)\n}\n\nmodule.exports = extrudeGeom2\n","const geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\n\n/*\n * Extrude the given geometry using the given options.\n *\n * @param {Object} [options] - options for extrude\n * @param {Array} [options.offset] - the direction of the extrusion as a 3D vector\n * @param {Number} [options.twistAngle] - the final rotation (RADIANS) about the origin\n * @param {Integer} [options.twistSteps] - the number of steps created to produce the twist (if any)\n * @param {path2} geometry - the geometry to extrude\n * @returns {geom3} the extruded 3D geometry\n*/\nconst extrudePath2 = (options, geometry) => {\n  if (!geometry.isClosed) throw new Error('extruded path must be closed')\n  // Convert path2 to geom2\n  const points = path2.toPoints(geometry)\n  const geometry2 = geom2.fromPoints(points)\n  return extrudeLinearGeom2(options, geometry2)\n}\n\nmodule.exports = extrudePath2\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst extrudeRectangularPath2 = require('./extrudeRectangularPath2')\nconst extrudeRectangularGeom2 = require('./extrudeRectangularGeom2')\n\n/**\n * Extrude the given geometry by following the outline(s) with a rectangle.\n * @See expand for addition options\n * @param {Object} options - options for extrusion, if any\n * @param {Number} [options.size=1] - size of the rectangle\n * @param {Number} [options.height=1] - height of the extrusion\n * @param {...Object} objects - the geometries to extrude\n * @return {Object|Array} the extruded object, or a list of extruded objects\n * @alias module:modeling/extrusions.extrudeRectangular\n *\n * @example\n * let mywalls = extrudeRectangular({size: 1, height: 3}, square({size: 20}))\n * let mywalls = extrudeRectangular({size: 1, height: 300, twistAngle: Math.PI}, square({size: 20}))\n */\nconst extrudeRectangular = (options, ...objects) => {\n  const defaults = {\n    size: 1,\n    height: 1\n  }\n  const { size, height } = Object.assign({}, defaults, options)\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  if (size <= 0) throw new Error('size must be positive')\n  if (height <= 0) throw new Error('height must be positive')\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return extrudeRectangularPath2(options, object)\n    if (geom2.isA(object)) return extrudeRectangularGeom2(options, object)\n    // if (geom3.isA(object)) return geom3.transform(matrix, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = extrudeRectangular\n","const { area } = require('../../maths/utils')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst expand = require('../expansions/expand')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\n\n/*\n * Expand and extrude the given geometry (geom2).\n * @see expand for additional options\n * @param {Object} options - options for extrusion, if any\n * @param {Number} [options.size=1] - size of the rectangle\n * @param {Number} [options.height=1] - height of the extrusion\n * @param {geom2} geometry - the geometry to extrude\n * @return {geom3} the extruded geometry\n */\nconst extrudeRectangularGeom2 = (options, geometry) => {\n  const defaults = {\n    size: 1,\n    height: 1\n  }\n  const { size, height } = Object.assign({ }, defaults, options)\n\n  options.delta = size\n  options.offset = [0, 0, height]\n\n  // convert the geometry to outlines\n  const outlines = geom2.toOutlines(geometry)\n  if (outlines.length === 0) throw new Error('the given geometry cannot be empty')\n\n  // expand the outlines\n  const newparts = outlines.map((outline) => {\n    if (area(outline) < 0) outline.reverse() // all outlines must wind counter clockwise\n    return expand(options, path2.fromPoints({ closed: true }, outline))\n  })\n\n  // create a composite geometry\n  const allsides = newparts.reduce((sides, part) => sides.concat(geom2.toSides(part)), [])\n  const newgeometry = geom2.create(allsides)\n\n  return extrudeLinearGeom2(options, newgeometry)\n}\n\nmodule.exports = extrudeRectangularGeom2\n","const path2 = require('../../geometries/path2')\n\nconst expand = require('../expansions/expand')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\n\n/*\n * Expand and extrude the given geometry (path2).\n * @See expand for addition options\n * @param {Object} options - options for extrusion, if any\n * @param {Number} [options.size=1] - size of the rectangle\n * @param {Number} [options.height=1] - height of the extrusion\n * @param {path2} geometry - the geometry to extrude\n * @return {geom3} the extruded geometry\n */\nconst extrudeRectangularPath2 = (options, geometry) => {\n  const defaults = {\n    size: 1,\n    height: 1\n  }\n  const { size, height } = Object.assign({ }, defaults, options)\n\n  options.delta = size\n  options.offset = [0, 0, height]\n\n  const points = path2.toPoints(geometry)\n  if (points.length === 0) throw new Error('the given geometry cannot be empty')\n\n  const newgeometry = expand(options, geometry)\n  return extrudeLinearGeom2(options, newgeometry)\n}\n\nmodule.exports = extrudeRectangularPath2\n","const mat4 = require('../../maths/mat4')\n\nconst { mirrorX } = require('../transforms/mirror')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst slice = require('./slice')\n\nconst extrudeFromSlices = require('./extrudeFromSlices')\n\n/**\n * Rotate extrude the given geometry using the given options.\n *\n * @param {Object} options - options for extrusion\n * @param {Number} [options.angle=PI*2] - angle of the extrusion (RADIANS)\n * @param {Number} [options.startAngle=0] - start angle of the extrusion (RADIANS)\n * @param {String} [options.overflow='cap'] - what to do with points outside of bounds (+ / - x) :\n * defaults to capping those points to 0 (only supported behaviour for now)\n * @param {Number} [options.segments=12] - number of segments of the extrusion\n * @param {geom2} geometry - the geometry to extrude\n * @returns {geom3} the extruded geometry\n * @alias module:modeling/extrusions.extrudeRotate\n *\n * @example\n * const myshape = extrudeRotate({segments: 8, angle: Math.PI}, circle({size: 3, center: [4, 0]}))\n */\nconst extrudeRotate = (options, geometry) => {\n  const defaults = {\n    segments: 12,\n    startAngle: 0,\n    angle: (Math.PI * 2),\n    overflow: 'cap'\n  }\n  let { segments, startAngle, angle, overflow } = Object.assign({}, defaults, options)\n\n  if (segments < 3) throw new Error('segments must be greater then 3')\n\n  startAngle = Math.abs(startAngle) > (Math.PI * 2) ? startAngle % (Math.PI * 2) : startAngle\n  angle = Math.abs(angle) > (Math.PI * 2) ? angle % (Math.PI * 2) : angle\n\n  let endAngle = startAngle + angle\n  endAngle = Math.abs(endAngle) > (Math.PI * 2) ? endAngle % (Math.PI * 2) : endAngle\n\n  if (endAngle < startAngle) {\n    const x = startAngle\n    startAngle = endAngle\n    endAngle = x\n  }\n  let totalRotation = endAngle - startAngle\n  if (totalRotation <= 0.0) totalRotation = (Math.PI * 2)\n\n  if (Math.abs(totalRotation) < (Math.PI * 2)) {\n    // adjust the segments to achieve the total rotation requested\n    const anglePerSegment = (Math.PI * 2) / segments\n    segments = Math.floor(Math.abs(totalRotation) / anglePerSegment)\n    if (Math.abs(totalRotation) > (segments * anglePerSegment)) segments++\n  }\n\n  // console.log('startAngle: '+startAngle)\n  // console.log('endAngle: '+endAngle)\n  // console.log(totalRotation)\n  // console.log(segments)\n\n  // convert geometry to an array of sides, easier to deal with\n  let shapeSides = geom2.toSides(geometry)\n  if (shapeSides.length === 0) throw new Error('the given geometry cannot be empty')\n\n  // determine if the rotate extrude can be computed in the first place\n  // ie all the points have to be either x > 0 or x < 0\n\n  // generic solution to always have a valid solid, even if points go beyond x/ -x\n  // 1. split points up between all those on the 'left' side of the axis (x<0) & those on the 'righ' (x>0)\n  // 2. for each set of points do the extrusion operation IN OPOSITE DIRECTIONS\n  // 3. union the two resulting solids\n\n  // 1. alt : OR : just cap of points at the axis ?\n\n  const pointsWithNegativeX = shapeSides.filter((s) => (s[0][0] < 0))\n  const pointsWithPositiveX = shapeSides.filter((s) => (s[0][0] >= 0))\n  const arePointsWithNegAndPosX = pointsWithNegativeX.length > 0 && pointsWithPositiveX.length > 0\n\n  // FIXME actually there are cases where setting X=0 will change the basic shape\n  // - Alternative #1 : don't allow shapes with both negative and positive X values\n  // - Alternative #2 : remove one half of the shape (costly)\n  if (arePointsWithNegAndPosX && overflow === 'cap') {\n    if (pointsWithNegativeX.length > pointsWithPositiveX.length) {\n      shapeSides = shapeSides.map((side) => {\n        let point0 = side[0]\n        let point1 = side[1]\n        point0 = [Math.min(point0[0], 0), point0[1]]\n        point1 = [Math.min(point1[0], 0), point1[1]]\n        return [point0, point1]\n      })\n      // recreate the geometry from the (-) capped points\n      geometry = geom2.reverse(geom2.create(shapeSides))\n      geometry = mirrorX(geometry)\n    } else if (pointsWithPositiveX.length >= pointsWithNegativeX.length) {\n      shapeSides = shapeSides.map((side) => {\n        let point0 = side[0]\n        let point1 = side[1]\n        point0 = [Math.max(point0[0], 0), point0[1]]\n        point1 = [Math.max(point1[0], 0), point1[1]]\n        return [point0, point1]\n      })\n      // recreate the geometry from the (+) capped points\n      geometry = geom2.create(shapeSides)\n    }\n  }\n\n  const rotationPerSlice = totalRotation / segments\n  const isCapped = Math.abs(totalRotation) < (Math.PI * 2)\n  const baseSlice = slice.fromSides(geom2.toSides(geometry))\n  slice.reverse(baseSlice, baseSlice)\n\n  const matrix = mat4.create()\n  const createSlice = (progress, index, base) => {\n    let Zrotation = rotationPerSlice * index + startAngle\n    // fix rounding error when rotating 2 * PI radians\n    if (totalRotation === Math.PI * 2 && index === segments) {\n      Zrotation = startAngle\n    }\n    mat4.multiply(matrix, mat4.fromZRotation(matrix, Zrotation), mat4.fromXRotation(mat4.create(), Math.PI / 2))\n\n    return slice.transform(matrix, base)\n  }\n\n  options = {\n    numberOfSlices: segments + 1,\n    capStart: isCapped,\n    capEnd: isCapped,\n    close: !isCapped,\n    callback: createSlice\n  }\n  return extrudeFromSlices(options, baseSlice)\n}\n\nmodule.exports = extrudeRotate\n","const { EPS } = require('../../maths/constants')\nconst vec3 = require('../../maths/vec3')\n\nconst poly3 = require('../../geometries/poly3')\n\nconst slice = require('./slice')\n\n// https://en.wikipedia.org/wiki/Greatest_common_divisor#Using_Euclid's_algorithm\nconst gcd = (a, b) => {\n  if (a === b) { return a }\n  if (a < b) { return gcd(b, a) }\n  if (b === 1) { return 1 }\n  if (b === 0) { return a }\n  return gcd(b, a % b)\n}\n\nconst lcm = (a, b) => (a * b) / gcd(a, b)\n\n// Return a set of edges that encloses the same area by splitting\n// the given edges to have newlength total edges.\nconst repartitionEdges = (newlength, edges) => {\n  // NOTE: This implementation splits each edge evenly.\n  const multiple = newlength / edges.length\n  if (multiple === 1) {\n    return edges\n  }\n\n  const divisor = vec3.fromValues(multiple, multiple, multiple)\n\n  const newEdges = []\n  edges.forEach((edge) => {\n    const increment = vec3.subtract(vec3.create(), edge[1], edge[0])\n    vec3.divide(increment, increment, divisor)\n\n    // repartition the edge\n    let prev = edge[0]\n    for (let i = 1; i <= multiple; ++i) {\n      const next = vec3.add(vec3.create(), prev, increment)\n      newEdges.push([prev, next])\n      prev = next\n    }\n  })\n  return newEdges\n}\n\nconst EPSAREA = (EPS * EPS / 2) * Math.sin(Math.PI / 3)\n\n/*\n * Extrude (build) walls between the given slices.\n * Each wall consists of two triangles, which may be invalid if slices are overlapping.\n */\nconst extrudeWalls = (slice0, slice1) => {\n  let edges0 = slice.toEdges(slice0)\n  let edges1 = slice.toEdges(slice1)\n\n  if (edges0.length !== edges1.length) {\n    // different shapes, so adjust one or both to the same number of edges\n    const newlength = lcm(edges0.length, edges1.length)\n    if (newlength !== edges0.length) edges0 = repartitionEdges(newlength, edges0)\n    if (newlength !== edges1.length) edges1 = repartitionEdges(newlength, edges1)\n  }\n\n  const walls = []\n  edges0.forEach((edge0, i) => {\n    const edge1 = edges1[i]\n\n    const poly0 = poly3.create([edge0[0], edge0[1], edge1[1]])\n    const poly0area = poly3.measureArea(poly0)\n    if (Number.isFinite(poly0area) && poly0area > EPSAREA) walls.push(poly0)\n\n    const poly1 = poly3.create([edge0[0], edge1[1], edge1[0]])\n    const poly1area = poly3.measureArea(poly1)\n    if (Number.isFinite(poly1area) && poly1area > EPSAREA) walls.push(poly1)\n  })\n  return walls\n}\n\nmodule.exports = extrudeWalls\n","/**\n * All 2D shapes (primitives or the results of operations) can be extruded in various ways.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/extrusions\n * @example\n * const { extrudeLinear, extrudeRectangular, extrudeRotate } = require('@jscad/modeling').extrusions\n */\nmodule.exports = {\n  extrudeFromSlices: require('./extrudeFromSlices'),\n  extrudeLinear: require('./extrudeLinear'),\n  extrudeRectangular: require('./extrudeRectangular'),\n  extrudeRotate: require('./extrudeRotate'),\n  project: require('./project'),\n  slice: require('./slice')\n}\n","const flatten = require('../../utils/flatten')\n\nconst aboutEqualNormals = require('../../maths/utils/aboutEqualNormals')\nconst plane = require('../../maths/plane')\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst unionGeom2 = require('../booleans/unionGeom2')\n\nconst projectGeom3 = (options, geometry) => {\n  // create a plane from the options, and verify\n  const projplane = plane.fromNormalAndPoint(plane.create(), options.axis, options.origin)\n  if (Number.isNaN(projplane[0]) || Number.isNaN(projplane[1]) || Number.isNaN(projplane[2]) || Number.isNaN(projplane[3])) {\n    throw new Error('project: invalid axis or origin')\n  }\n\n  const epsilon = measureEpsilon(geometry)\n  const epsilonArea = (epsilon * epsilon * Math.sqrt(3) / 4)\n\n  if (epsilon === 0) return geom2.create()\n\n  // project the polygons to the plane\n  const polygons = geom3.toPolygons(geometry)\n  let projpolys = []\n  for (let i = 0; i < polygons.length; i++) {\n    const newpoints = polygons[i].vertices.map((v) => plane.projectionOfPoint(projplane, v))\n    const newpoly = poly3.create(newpoints)\n    // only keep projections that face the same direction as the plane\n    const newplane = poly3.plane(newpoly)\n    if (!aboutEqualNormals(projplane, newplane)) continue\n    // only keep projections that have a measurable area\n    if (poly3.measureArea(newpoly) < epsilonArea) continue\n    projpolys.push(newpoly)\n  }\n\n  // rotate the polygons to lay on X/Y axes if necessary\n  if (!aboutEqualNormals(projplane, [0, 0, 1])) {\n    const rotation = mat4.fromVectorRotation(mat4.create(), projplane, [0, 0, 1])\n    projpolys = projpolys.map((p) => poly3.transform(rotation, p))\n  }\n\n  // sort the polygons to allow the union to ignore small pieces efficiently\n  projpolys = projpolys.sort((a, b) => poly3.measureArea(b) - poly3.measureArea(a))\n\n  // convert polygons to geometry, and union all pieces into a single geometry\n  const projgeoms = projpolys.map((p) => geom2.fromPoints(p.vertices))\n  return unionGeom2(projgeoms)\n}\n\n/**\n * Project the given 3D geometry on to the given plane.\n * @param {Object} options - options for project\n * @param {Array} [options.axis=[0,0,1]] the axis of the plane (default is Z axis)\n * @param {Array} [options.origin=[0,0,0]] the origin of the plane\n * @param {...Object} objects - the list of 3D geometry to project\n * @return {geom2|Array} the projected 2D geometry, or a list of 2D projected geometry\n * @alias module:modeling/extrusions.project\n *\n * @example\n * let myshape = project({}, sphere({radius: 20, segments: 5}))\n */\nconst project = (options, ...objects) => {\n  const defaults = {\n    axis: [0, 0, 1], // Z axis\n    origin: [0, 0, 0]\n  }\n  const { axis, origin } = Object.assign({ }, defaults, options)\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  options = { axis, origin }\n\n  const results = objects.map((object) => {\n    // if (path.isA(object)) return project(options, object)\n    // if (geom2.isA(object)) return project(options, object)\n    if (geom3.isA(object)) return projectGeom3(options, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = project\n","const plane = require('../../../maths/plane')\nconst vec3 = require('../../../maths/vec3')\n\n/**\n * Calculate the plane of the given slice.\n * NOTE: The slice (and all points) are assumed to be planar from the beginning.\n * @param {slice} slice - the slice\n * @returns {plane} the plane of the slice\n * @alias module:modeling/extrusions/slice.calculatePlane\n *\n * @example\n * let myplane = calculatePlane(slice)\n */\nconst calculatePlane = (slice) => {\n  const edges = slice.edges\n  if (edges.length < 3) throw new Error('slices must have 3 or more edges to calculate a plane')\n\n  // find the midpoint of the slice, which will lie on the plane by definition\n  const midpoint = edges.reduce((point, edge) => vec3.add(vec3.create(), point, edge[0]), vec3.create())\n  vec3.scale(midpoint, midpoint, 1 / edges.length)\n\n  // find the farthest edge from the midpoint, which will be on an outside edge\n  let farthestEdge\n  let distance = 0\n  edges.forEach((edge) => {\n    // Make sure that the farthest edge is not a self-edge\n    if (!vec3.equals(edge[0], edge[1])) {\n      const d = vec3.squaredDistance(midpoint, edge[0])\n      if (d > distance) {\n        farthestEdge = edge\n        distance = d\n      }\n    }\n  })\n  // find the before edge\n  const beforeEdge = edges.find((edge) => vec3.equals(edge[1], farthestEdge[0]))\n\n  return plane.fromPoints(plane.create(), beforeEdge[0], farthestEdge[0], farthestEdge[1])\n}\n\nmodule.exports = calculatePlane\n","const create = require('./create')\n\nconst vec3 = require('../../../maths/vec3')\n\n/**\n * Create a deep clone of the given slice.\n *\n * @param {slice} [out] - receiving slice\n * @param {slice} slice - slice to clone\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.clone\n */\nconst clone = (...params) => {\n  let out\n  let slice\n  if (params.length === 1) {\n    out = create()\n    slice = params[0]\n  } else {\n    out = params[0]\n    slice = params[1]\n  }\n  // deep clone of edges\n  out.edges = slice.edges.map((edge) => [vec3.clone(edge[0]), vec3.clone(edge[1])])\n  return out\n}\n\nmodule.exports = clone\n","/**\n * Represents a 3D geometry consisting of a list of edges.\n * @typedef {Object} slice\n * @property {Array} edges - list of edges, each edge containing two points (3D)\n */\n\n/**\n * Creates a new empty slice.\n *\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.create\n */\nconst create = (edges) => {\n  if (!edges) {\n    edges = []\n  }\n  return { edges }\n}\n\nmodule.exports = create\n","const vec3 = require('../../../maths/vec3')\n\n/**\n * Determine if the given slices have the same edges.\n * @param {slice} a - the first slice to compare\n * @param {slice} b - the second slice to compare\n * @returns {Boolean} true if the slices are equal\n * @alias module:modeling/extrusions/slice.equals\n */\nconst equals = (a, b) => {\n  const aedges = a.edges\n  const bedges = b.edges\n\n  if (aedges.length !== bedges.length) {\n    return false\n  }\n\n  const isEqual = aedges.reduce((acc, aedge, i) => {\n    const bedge = bedges[i]\n    const d = vec3.squaredDistance(aedge[0], bedge[0])\n    return acc && (d < Number.EPSILON)\n  }, true)\n\n  return isEqual\n}\n\nmodule.exports = equals\n","const vec3 = require('../../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Create a slice from the given points.\n *\n * @param {Array} points - list of points, where each point is either 2D or 3D\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.fromPoints\n *\n * @example\n * const points = [\n *   [0,  0],\n *   [0, 10],\n *   [0, 10]\n * ]\n * const slice = fromPoints(points)\n */\nconst fromPoints = (points) => {\n  if (!Array.isArray(points)) throw new Error('the given points must be an array')\n  if (points.length < 3) throw new Error('the given points must contain THREE or more points')\n\n  // create a list of edges from the points\n  const edges = []\n  let prevpoint = points[points.length - 1]\n  points.forEach((point) => {\n    if (point.length === 2) edges.push([vec3.fromVec2(vec3.create(), prevpoint), vec3.fromVec2(vec3.create(), point)])\n    if (point.length === 3) edges.push([prevpoint, point])\n    prevpoint = point\n  })\n  return create(edges)\n}\n\nmodule.exports = fromPoints\n","const vec3 = require('../../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Create a slice from the given sides (see geom2).\n *\n * @param {Array} sides - list of sides from geom2\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.fromSides\n *\n * @example\n * const myshape = circle({radius: 10})\n * const slice = fromSides(geom2.toSides(myshape))\n */\nconst fromSides = (sides) => {\n  if (!Array.isArray(sides)) throw new Error('the given sides must be an array')\n\n  // create a list of edges from the sides\n  const edges = []\n  sides.forEach((side) => {\n    edges.push([vec3.fromVec2(vec3.create(), side[0]), vec3.fromVec2(vec3.create(), side[1])])\n  })\n  return create(edges)\n}\n\nmodule.exports = fromSides\n","/**\n * @module modeling/extrusions/slice\n */\nmodule.exports = {\n  calculatePlane: require('./calculatePlane'),\n  clone: require('./clone'),\n  create: require('./create'),\n  equals: require('./equals'),\n  fromPoints: require('./fromPoints'),\n  fromSides: require('./fromSides'),\n  isA: require('./isA'),\n  reverse: require('./reverse'),\n  toEdges: require('./toEdges'),\n  toPolygons: require('./toPolygons'),\n  toString: require('./toString'),\n  transform: require('./transform')\n}\n","/**\n * Determine if the given object is a slice.\n * @param {slice} object - the object to interrogate\n * @returns {Boolean} true if the object matches a slice\n * @alias module:modeling/extrusions/slice.isA\n */\nconst isA = (object) => {\n  if (object && typeof object === 'object') {\n    if ('edges' in object) {\n      if (Array.isArray(object.edges)) {\n        return true\n      }\n    }\n  }\n  return false\n}\n\nmodule.exports = isA\n","const vec3 = require('../../../maths/vec3')\n\n/*\n * Mend gaps in a 2D slice to make it a closed polygon\n */\nconst repairSlice = (slice) => {\n  if (!slice.edges) return slice\n  const vertexMap = {} // string key to vertex map\n  const edgeCount = {} // count of (in - out) edges\n  slice.edges.forEach((edge) => {\n    const inKey = edge[0].toString()\n    const outKey = edge[1].toString()\n    vertexMap[inKey] = edge[0]\n    vertexMap[outKey] = edge[1]\n    edgeCount[inKey] = (edgeCount[inKey] || 0) + 1 // in\n    edgeCount[outKey] = (edgeCount[outKey] || 0) - 1 // out\n  })\n  // find vertices which are missing in or out edges\n  const missingIn = Object.keys(edgeCount).filter((e) => edgeCount[e] < 0)\n  const missingOut = Object.keys(edgeCount).filter((e) => edgeCount[e] > 0)\n  // pairwise distance of bad vertices\n  missingIn.forEach((key1) => {\n    const v1 = vertexMap[key1]\n    // find the closest vertex that is missing an out edge\n    let bestDistance = Infinity\n    let bestReplacement\n    missingOut.forEach((key2) => {\n      const v2 = vertexMap[key2]\n      const distance = Math.hypot(v1[0] - v2[0], v1[1] - v2[1])\n      if (distance < bestDistance) {\n        bestDistance = distance\n        bestReplacement = v2\n      }\n    })\n    console.warn(`repairSlice: repairing vertex gap ${v1} to ${bestReplacement} distance ${bestDistance}`)\n    // merge broken vertices\n    slice.edges.forEach((edge) => {\n      if (edge[0].toString() === key1) edge[0] = bestReplacement\n      if (edge[1].toString() === key1) edge[1] = bestReplacement\n    })\n  })\n  // Remove self-edges\n  slice.edges = slice.edges.filter((e) => !vec3.equals(e[0], e[1]))\n  return slice\n}\n\nmodule.exports = repairSlice\n","const create = require('./create')\n\n/**\n * Reverse the edges of the given slice.\n *\n * @param {slice} [out] - receiving slice\n * @param {slice} slice - slice to reverse\n * @returns {slice} reverse of the slice\n * @alias module:modeling/extrusions/slice.reverse\n */\nconst reverse = (...params) => {\n  let out\n  let slice\n  if (params.length === 1) {\n    out = create()\n    slice = params[0]\n  } else {\n    out = params[0]\n    slice = params[1]\n  }\n  // reverse the edges\n  out.edges = slice.edges.map((edge) => [edge[1], edge[0]])\n  return out\n}\n\nmodule.exports = reverse\n","/**\n * Produces an array of edges from the given slice.\n * The returned array should not be modified as the data is shared with the slice.\n * @param {slice} slice - the slice\n * @returns {Array} an array of edges, each edge contains an array of two points (3D)\n * @alias module:modeling/extrusions/slice.toEdges\n *\n * @example\n * let sharededges = toEdges(slice)\n */\nconst toEdges = (slice) => slice.edges\n\nmodule.exports = toEdges\n","const poly3 = require('../../../geometries/poly3')\nconst earcut = require('../earcut')\nconst PolygonHierarchy = require('../earcut/polygonHierarchy')\n\n/**\n * Return a list of polygons which are enclosed by the slice.\n * @param {slice} slice - the slice\n * @return {Array} a list of polygons (3D)\n * @alias module:modeling/extrusions/slice.toPolygons\n */\nconst toPolygons = (slice) => {\n  const hierarchy = new PolygonHierarchy(slice)\n\n  const polygons = []\n  hierarchy.roots.forEach(({ solid, holes }) => {\n    // hole indices\n    let index = solid.length\n    const holesIndex = []\n    holes.forEach((hole, i) => {\n      holesIndex.push(index)\n      index += hole.length\n    })\n\n    // compute earcut triangulation for each solid\n    const vertices = [solid, ...holes].flat()\n    const data = vertices.flat()\n    // Get original 3D vertex by index\n    const getVertex = (i) => hierarchy.to3D(vertices[i])\n    const indices = earcut(data, holesIndex)\n    for (let i = 0; i < indices.length; i += 3) {\n      // Map back to original vertices\n      const tri = indices.slice(i, i + 3).map(getVertex)\n      polygons.push(poly3.fromPointsAndPlane(tri, hierarchy.plane))\n    }\n  })\n\n  return polygons\n}\n\nmodule.exports = toPolygons\n","const vec3 = require('../../../maths/vec3')\n\nconst edgesToString = (edges) =>\n  edges.reduce((result, edge) => (\n    result += `[${vec3.toString(edge[0])}, ${vec3.toString(edge[1])}], `\n  ), '')\n\n/**\n * @param {slice} slice - the slice\n * @return {String} the string representation\n * @alias module:modeling/extrusions/slice.toString\n */\nconst toString = (slice) => `[${edgesToString(slice.edges)}]`\n\nmodule.exports = toString\n","const vec3 = require('../../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Transform the given slice using the given matrix.\n * @param {mat4} matrix - transform matrix\n * @param {slice} slice - slice to transform\n * @returns {slice} the transformed slice\n * @alias module:modeling/extrusions/slice.transform\n *\n * @example\n * let matrix = mat4.fromTranslation([1, 2, 3])\n * let newslice = transform(matrix, oldslice)\n */\nconst transform = (matrix, slice) => {\n  const edges = slice.edges.map((edge) => [vec3.transform(vec3.create(), edge[0], matrix), vec3.transform(vec3.create(), edge[1], matrix)])\n  return create(edges)\n}\n\nmodule.exports = transform\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst hullPath2 = require('./hullPath2')\nconst hullGeom2 = require('./hullGeom2')\nconst hullGeom3 = require('./hullGeom3')\n\n/**\n * Create a convex hull of the given geometries.\n * The given geometries should be of the same type, either geom2 or geom3 or path2.\n * @param {...Objects} geometries - list of geometries from which to create a hull\n * @returns {geom2|geom3} new geometry\n * @alias module:modeling/hulls.hull\n *\n * @example\n * let myshape = hull(rectangle({center: [-5,-5]}), ellipse({center: [5,5]}))\n *\n * @example\n * +-------+           +-------+\n * |       |           |        \\\n * |   A   |           |         \\\n * |       |           |          \\\n * +-------+           +           \\\n *                  =   \\           \\\n *       +-------+       \\           +\n *       |       |        \\          |\n *       |   B   |         \\         |\n *       |       |          \\        |\n *       +-------+           +-------+\n */\nconst hull = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  if (!areAllShapesTheSameType(geometries)) {\n    throw new Error('only hulls of the same type are supported')\n  }\n\n  const geometry = geometries[0]\n  if (path2.isA(geometry)) return hullPath2(geometries)\n  if (geom2.isA(geometry)) return hullGeom2(geometries)\n  if (geom3.isA(geometry)) return hullGeom3(geometries)\n\n  // FIXME should this throw an error for unknown geometries?\n  return geometry\n}\n\nmodule.exports = hull\n","const flatten = require('../../utils/flatten')\n\nconst union = require('../booleans/union')\n\nconst hull = require('./hull')\n\n/**\n * Create a chain of hulled geometries from the given geometries.\n * Essentially hull A+B, B+C, C+D, etc., then union the results.\n * The given geometries should be of the same type, either geom2 or geom3 or path2.\n *\n * @param {...Objects} geometries - list of geometries from which to create a hull\n * @returns {geom2|geom3} new geometry\n * @alias module:modeling/hulls.hullChain\n *\n * @example\n * let newshape = hullChain(rectangle({center: [-5,-5]}), circle({center: [0,0]}), rectangle({center: [5,5]}))\n *\n * @example\n * +-------+   +-------+     +-------+   +------+\n * |       |   |       |     |        \\ /       |\n * |   A   |   |   C   |     |         |        |\n * |       |   |       |     |                  |\n * +-------+   +-------+     +                  +\n *                       =   \\                 /\n *       +-------+            \\               /\n *       |       |             \\             /\n *       |   B   |              \\           /\n *       |       |               \\         /\n *       +-------+                +-------+\n */\nconst hullChain = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length < 2) throw new Error('wrong number of arguments')\n\n  const hulls = []\n  for (let i = 1; i < geometries.length; i++) {\n    hulls.push(hull(geometries[i - 1], geometries[i]))\n  }\n  return union(hulls)\n}\n\nmodule.exports = hullChain\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst hullPoints2 = require('./hullPoints2')\nconst toUniquePoints = require('./toUniquePoints')\n\n/*\n * Create a convex hull of the given geom2 geometries.\n * @param {...geometries} geometries - list of geom2 geometries\n * @returns {geom2} new geometry\n */\nconst hullGeom2 = (...geometries) => {\n  geometries = flatten(geometries)\n\n  // extract the unique points from the geometries\n  const unique = toUniquePoints(geometries)\n\n  const hullPoints = hullPoints2(unique)\n\n  // NOTE: more than three points are required to create a new geometry\n  if (hullPoints.length < 3) return geom2.create()\n\n  // assemble a new geometry from the list of points\n  return geom2.fromPoints(hullPoints)\n}\n\nmodule.exports = hullGeom2\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst quickhull = require('./quickhull')\nconst toUniquePoints = require('./toUniquePoints')\n\n/*\n * Create a convex hull of the given geometries (geom3).\n * @param {...geometries} geometries - list of geom3 geometries\n * @returns {geom3} new geometry\n */\nconst hullGeom3 = (...geometries) => {\n  geometries = flatten(geometries)\n\n  if (geometries.length === 1) return geometries[0]\n\n  // extract the unique vertices from the geometries\n  const unique = toUniquePoints(geometries)\n\n  const faces = quickhull(unique, { skipTriangulation: true })\n\n  const polygons = faces.map((face) => {\n    const vertices = face.map((index) => unique[index])\n    return poly3.create(vertices)\n  })\n\n  return geom3.create(polygons)\n}\n\nmodule.exports = hullGeom3\n","const flatten = require('../../utils/flatten')\n\nconst path2 = require('../../geometries/path2')\n\nconst hullPoints2 = require('./hullPoints2')\nconst toUniquePoints = require('./toUniquePoints')\n\n/*\n * Create a convex hull of the given geometries (path2).\n * @param {...geometries} geometries - list of path2 geometries\n * @returns {path2} new geometry\n */\nconst hullPath2 = (...geometries) => {\n  geometries = flatten(geometries)\n\n  // extract the unique points from the geometries\n  const unique = toUniquePoints(geometries)\n\n  const hullPoints = hullPoints2(unique)\n\n  // assemble a new geometry from the list of points\n  return path2.fromPoints({ closed: true }, hullPoints)\n}\n\nmodule.exports = hullPath2\n","const vec2 = require('../../maths/vec2')\n\n/*\n * Create a convex hull of the given set of points, where each point is an array of [x,y].\n * Uses https://en.wikipedia.org/wiki/Graham_scan\n * @param {Array} uniquePoints - list of UNIQUE points from which to create a hull\n * @returns {Array} a list of points that form the hull\n */\nconst hullPoints2 = (uniquePoints) => {\n  // find min point\n  let min = vec2.fromValues(Infinity, Infinity)\n  uniquePoints.forEach((point) => {\n    if (point[1] < min[1] || (point[1] === min[1] && point[0] < min[0])) {\n      min = point\n    }\n  })\n\n  // gather information for sorting by polar coordinates (point, angle, distSq)\n  const points = []\n  uniquePoints.forEach((point) => {\n    // use faster fakeAtan2 instead of Math.atan2\n    const angle = fakeAtan2(point[1] - min[1], point[0] - min[0])\n    const distSq = vec2.squaredDistance(point, min)\n    points.push({ point, angle, distSq })\n  })\n\n  // sort by polar coordinates\n  points.sort((pt1, pt2) => pt1.angle < pt2.angle ? -1 : pt1.angle > pt2.angle ? 1 :\n    pt1.distSq < pt2.distSq ? -1 : pt1.distSq > pt2.distSq ? 1 : 0)\n\n  const stack = [] // start with empty stack\n  points.forEach((point) => {\n    let cnt = stack.length\n    while (cnt > 1 && ccw(stack[cnt - 2], stack[cnt - 1], point.point) <= Number.EPSILON) {\n      stack.pop() // get rid of colinear and interior (clockwise) points\n      cnt = stack.length\n    }\n    stack.push(point.point)\n  })\n\n  return stack\n}\n\n// returns: < 0 clockwise, 0 colinear, > 0 counter-clockwise\nconst ccw = (v1, v2, v3) => (v2[0] - v1[0]) * (v3[1] - v1[1]) - (v2[1] - v1[1]) * (v3[0] - v1[0])\n\n// Returned \"angle\" is really 1/tan (inverse of slope) made negative to increase with angle.\n// This function is strictly for sorting in this algorithm.\nconst fakeAtan2 = (y, x) => {\n  // The \"if\" is a special case for when the minimum vector found in loop above is present.\n  // We need to ensure that it sorts as the minimum point. Otherwise, this becomes NaN.\n  if (y === 0 && x === 0) {\n    return -Infinity\n  } else {\n    return -x / y\n  }\n}\n\nmodule.exports = hullPoints2\n","/**\n * All shapes (primitives or the results of operations) can be passed to hull functions\n * to determine the convex hull of all points.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/hulls\n * @example\n * const { hull, hullChain } = require('@jscad/modeling').hulls\n */\nmodule.exports = {\n  hull: require('./hull'),\n  hullChain: require('./hullChain')\n}\n","const add = require('../../../maths/vec3/add')\nconst copy = require('../../../maths/vec3/copy')\nconst cross = require('../../../maths/vec3/cross')\nconst dot = require('../../../maths/vec3/dot')\nconst length = require('../../../maths/vec3/length')\nconst normalize = require('../../../maths/vec3/normalize')\nconst scale = require('../../../maths/vec3/scale')\nconst subtract = require('../../../maths/vec3/subtract')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst HalfEdge = require('./HalfEdge')\n\nconst VISIBLE = 0\nconst NON_CONVEX = 1\nconst DELETED = 2\n\nclass Face {\n  constructor () {\n    this.normal = []\n    this.centroid = []\n    // signed distance from face to the origin\n    this.offset = 0\n    // pointer to the a vertex in a double linked list this face can see\n    this.outside = null\n    this.mark = VISIBLE\n    this.edge = null\n    this.nVertices = 0\n  }\n\n  getEdge (i) {\n    if (typeof i !== 'number') {\n      throw Error('requires a number')\n    }\n    let it = this.edge\n    while (i > 0) {\n      it = it.next\n      i -= 1\n    }\n    while (i < 0) {\n      it = it.prev\n      i += 1\n    }\n    return it\n  }\n\n  computeNormal () {\n    const e0 = this.edge\n    const e1 = e0.next\n    let e2 = e1.next\n    const v2 = subtract([], e1.head().point, e0.head().point)\n    const t = []\n    const v1 = []\n\n    this.nVertices = 2\n    this.normal = [0, 0, 0]\n    while (e2 !== e0) {\n      copy(v1, v2)\n      subtract(v2, e2.head().point, e0.head().point)\n      add(this.normal, this.normal, cross(t, v1, v2))\n      e2 = e2.next\n      this.nVertices += 1\n    }\n    this.area = length(this.normal)\n    // normalize the vector, since we've already calculated the area\n    // it's cheaper to scale the vector using this quantity instead of\n    // doing the same operation again\n    this.normal = scale(this.normal, this.normal, 1 / this.area)\n  }\n\n  computeNormalMinArea (minArea) {\n    this.computeNormal()\n    if (this.area < minArea) {\n      // compute the normal without the longest edge\n      let maxEdge\n      let maxSquaredLength = 0\n      let edge = this.edge\n\n      // find the longest edge (in length) in the chain of edges\n      do {\n        const lengthSquared = edge.lengthSquared()\n        if (lengthSquared > maxSquaredLength) {\n          maxEdge = edge\n          maxSquaredLength = lengthSquared\n        }\n        edge = edge.next\n      } while (edge !== this.edge)\n\n      const p1 = maxEdge.tail().point\n      const p2 = maxEdge.head().point\n      const maxVector = subtract([], p2, p1)\n      const maxLength = Math.sqrt(maxSquaredLength)\n      // maxVector is normalized after this operation\n      scale(maxVector, maxVector, 1 / maxLength)\n      // compute the projection of maxVector over this face normal\n      const maxProjection = dot(this.normal, maxVector)\n      // subtract the quantity maxEdge adds on the normal\n      scale(maxVector, maxVector, -maxProjection)\n      add(this.normal, this.normal, maxVector)\n      // renormalize `this.normal`\n      normalize(this.normal, this.normal)\n    }\n  }\n\n  computeCentroid () {\n    this.centroid = [0, 0, 0]\n    let edge = this.edge\n    do {\n      add(this.centroid, this.centroid, edge.head().point)\n      edge = edge.next\n    } while (edge !== this.edge)\n    scale(this.centroid, this.centroid, 1 / this.nVertices)\n  }\n\n  computeNormalAndCentroid (minArea) {\n    if (typeof minArea !== 'undefined') {\n      this.computeNormalMinArea(minArea)\n    } else {\n      this.computeNormal()\n    }\n    this.computeCentroid()\n    this.offset = dot(this.normal, this.centroid)\n  }\n\n  distanceToPlane (point) {\n    return dot(this.normal, point) - this.offset\n  }\n\n  /**\n   * @private\n   *\n   * Connects two edges assuming that prev.head().point === next.tail().point\n   *\n   * @param {HalfEdge} prev\n   * @param {HalfEdge} next\n   */\n  connectHalfEdges (prev, next) {\n    let discardedFace\n    if (prev.opposite.face === next.opposite.face) {\n      // `prev` is remove a redundant edge\n      const oppositeFace = next.opposite.face\n      let oppositeEdge\n      if (prev === this.edge) {\n        this.edge = next\n      }\n      if (oppositeFace.nVertices === 3) {\n        // case:\n        // remove the face on the right\n        //\n        //       /|\\\n        //      / | \\ the face on the right\n        //     /  |  \\ --> opposite edge\n        //    / a |   \\\n        //   *----*----*\n        //  /     b  |  \\\n        //           ▾\n        //      redundant edge\n        //\n        // Note: the opposite edge is actually in the face to the right\n        // of the face to be destroyed\n        oppositeEdge = next.opposite.prev.opposite\n        oppositeFace.mark = DELETED\n        discardedFace = oppositeFace\n      } else {\n        // case:\n        //          t\n        //        *----\n        //       /| <- right face's redundant edge\n        //      / | opposite edge\n        //     /  |  ▴   /\n        //    / a |  |  /\n        //   *----*----*\n        //  /     b  |  \\\n        //           ▾\n        //      redundant edge\n        oppositeEdge = next.opposite.next\n        // make sure that the link `oppositeFace.edge` points correctly even\n        // after the right face redundant edge is removed\n        if (oppositeFace.edge === oppositeEdge.prev) {\n          oppositeFace.edge = oppositeEdge\n        }\n\n        //       /|   /\n        //      / | t/opposite edge\n        //     /  | / ▴  /\n        //    / a |/  | /\n        //   *----*----*\n        //  /     b     \\\n        oppositeEdge.prev = oppositeEdge.prev.prev\n        oppositeEdge.prev.next = oppositeEdge\n      }\n      //       /|\n      //      / |\n      //     /  |\n      //    / a |\n      //   *----*----*\n      //  /     b  ▴  \\\n      //           |\n      //     redundant edge\n      next.prev = prev.prev\n      next.prev.next = next\n\n      //       / \\  \\\n      //      /   \\->\\\n      //     /     \\<-\\ opposite edge\n      //    / a     \\  \\\n      //   *----*----*\n      //  /     b  ^  \\\n      next.setOpposite(oppositeEdge)\n\n      oppositeFace.computeNormalAndCentroid()\n    } else {\n      // trivial case\n      //        *\n      //       /|\\\n      //      / | \\\n      //     /  |--> next\n      //    / a |   \\\n      //   *----*----*\n      //    \\ b |   /\n      //     \\  |--> prev\n      //      \\ | /\n      //       \\|/\n      //        *\n      prev.next = next\n      next.prev = prev\n    }\n    return discardedFace\n  }\n\n  mergeAdjacentFaces (adjacentEdge, discardedFaces) {\n    const oppositeEdge = adjacentEdge.opposite\n    const oppositeFace = oppositeEdge.face\n\n    discardedFaces.push(oppositeFace)\n    oppositeFace.mark = DELETED\n\n    // find the chain of edges whose opposite face is `oppositeFace`\n    //\n    //                ===>\n    //      \\         face         /\n    //       * ---- * ---- * ---- *\n    //      /     opposite face    \\\n    //                <===\n    //\n    let adjacentEdgePrev = adjacentEdge.prev\n    let adjacentEdgeNext = adjacentEdge.next\n    let oppositeEdgePrev = oppositeEdge.prev\n    let oppositeEdgeNext = oppositeEdge.next\n\n    // left edge\n    while (adjacentEdgePrev.opposite.face === oppositeFace) {\n      adjacentEdgePrev = adjacentEdgePrev.prev\n      oppositeEdgeNext = oppositeEdgeNext.next\n    }\n    // right edge\n    while (adjacentEdgeNext.opposite.face === oppositeFace) {\n      adjacentEdgeNext = adjacentEdgeNext.next\n      oppositeEdgePrev = oppositeEdgePrev.prev\n    }\n    // adjacentEdgePrev  \\         face         / adjacentEdgeNext\n    //                    * ---- * ---- * ---- *\n    // oppositeEdgeNext  /     opposite face    \\ oppositeEdgePrev\n\n    // fix the face reference of all the opposite edges that are not part of\n    // the edges whose opposite face is not `face` i.e. all the edges that\n    // `face` and `oppositeFace` do not have in common\n    let edge\n    for (edge = oppositeEdgeNext; edge !== oppositeEdgePrev.next; edge = edge.next) {\n      edge.face = this\n    }\n\n    // make sure that `face.edge` is not one of the edges to be destroyed\n    // Note: it's important for it to be a `next` edge since `prev` edges\n    // might be destroyed on `connectHalfEdges`\n    this.edge = adjacentEdgeNext\n\n    // connect the extremes\n    // Note: it might be possible that after connecting the edges a triangular\n    // face might be redundant\n    let discardedFace\n    discardedFace = this.connectHalfEdges(oppositeEdgePrev, adjacentEdgeNext)\n    if (discardedFace) {\n      discardedFaces.push(discardedFace)\n    }\n    discardedFace = this.connectHalfEdges(adjacentEdgePrev, oppositeEdgeNext)\n    if (discardedFace) {\n      discardedFaces.push(discardedFace)\n    }\n\n    this.computeNormalAndCentroid()\n    // TODO: additional consistency checks\n    return discardedFaces\n  }\n\n  collectIndices () {\n    const indices = []\n    let edge = this.edge\n    do {\n      indices.push(edge.head().index)\n      edge = edge.next\n    } while (edge !== this.edge)\n    return indices\n  }\n\n  static createTriangle (v0, v1, v2, minArea = 0) {\n    const face = new Face()\n    const e0 = new HalfEdge(v0, face)\n    const e1 = new HalfEdge(v1, face)\n    const e2 = new HalfEdge(v2, face)\n\n    // join edges\n    e0.next = e2.prev = e1\n    e1.next = e0.prev = e2\n    e2.next = e1.prev = e0\n\n    // main half edge reference\n    face.edge = e0\n    face.computeNormalAndCentroid(minArea)\n    return face\n  }\n}\n\nmodule.exports = {\n  VISIBLE,\n  NON_CONVEX,\n  DELETED,\n  Face\n}\n","const distance = require('../../../maths/vec3/distance')\nconst squaredDistance = require('../../../maths/vec3/squaredDistance')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nclass HalfEdge {\n  constructor (vertex, face) {\n    this.vertex = vertex\n    this.face = face\n    this.next = null\n    this.prev = null\n    this.opposite = null\n  }\n\n  head () {\n    return this.vertex\n  }\n\n  tail () {\n    return this.prev\n      ? this.prev.vertex\n      : null\n  }\n\n  length () {\n    if (this.tail()) {\n      return distance(\n        this.tail().point,\n        this.head().point\n      )\n    }\n    return -1\n  }\n\n  lengthSquared () {\n    if (this.tail()) {\n      return squaredDistance(\n        this.tail().point,\n        this.head().point\n      )\n    }\n    return -1\n  }\n\n  setOpposite (edge) {\n    this.opposite = edge\n    edge.opposite = this\n  }\n}\n\nmodule.exports = HalfEdge\n","const dot = require('../../../maths/vec3/dot')\n\nconst pointLineDistance = require('./point-line-distance')\nconst getPlaneNormal = require('./get-plane-normal')\n\nconst VertexList = require('./VertexList')\nconst Vertex = require('./Vertex')\nconst { Face, VISIBLE, NON_CONVEX, DELETED } = require('./Face')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\n// merge types\n// non convex with respect to the large face\nconst MERGE_NON_CONVEX_WRT_LARGER_FACE = 1\nconst MERGE_NON_CONVEX = 2\n\nclass QuickHull {\n  constructor (points) {\n    if (!Array.isArray(points)) {\n      throw TypeError('input is not a valid array')\n    }\n    if (points.length < 4) {\n      throw Error('cannot build a simplex out of <4 points')\n    }\n\n    this.tolerance = -1\n\n    // buffers\n    this.nFaces = 0\n    this.nPoints = points.length\n\n    this.faces = []\n    this.newFaces = []\n    // helpers\n    //\n    // let `a`, `b` be `Face` instances\n    // let `v` be points wrapped as instance of `Vertex`\n    //\n    //     [v, v, ..., v, v, v, ...]\n    //      ^             ^\n    //      |             |\n    //  a.outside     b.outside\n    //\n    this.claimed = new VertexList()\n    this.unclaimed = new VertexList()\n\n    // vertices of the hull(internal representation of points)\n    this.vertices = []\n    for (let i = 0; i < points.length; i += 1) {\n      this.vertices.push(new Vertex(points[i], i))\n    }\n    this.discardedFaces = []\n    this.vertexPointIndices = []\n  }\n\n  addVertexToFace (vertex, face) {\n    vertex.face = face\n    if (!face.outside) {\n      this.claimed.add(vertex)\n    } else {\n      this.claimed.insertBefore(face.outside, vertex)\n    }\n    face.outside = vertex\n  }\n\n  /**\n   * Removes `vertex` for the `claimed` list of vertices, it also makes sure\n   * that the link from `face` to the first vertex it sees in `claimed` is\n   * linked correctly after the removal\n   *\n   * @param {Vertex} vertex\n   * @param {Face} face\n   */\n  removeVertexFromFace (vertex, face) {\n    if (vertex === face.outside) {\n      // fix face.outside link\n      if (vertex.next && vertex.next.face === face) {\n        // face has at least 2 outside vertices, move the `outside` reference\n        face.outside = vertex.next\n      } else {\n        // vertex was the only outside vertex that face had\n        face.outside = null\n      }\n    }\n    this.claimed.remove(vertex)\n  }\n\n  /**\n   * Removes all the visible vertices that `face` is able to see which are\n   * stored in the `claimed` vertext list\n   *\n   * @param {Face} face\n   * @return {Vertex|undefined} If face had visible vertices returns\n   * `face.outside`, otherwise undefined\n   */\n  removeAllVerticesFromFace (face) {\n    if (face.outside) {\n      // pointer to the last vertex of this face\n      // [..., outside, ..., end, outside, ...]\n      //          |           |      |\n      //          a           a      b\n      let end = face.outside\n      while (end.next && end.next.face === face) {\n        end = end.next\n      }\n      this.claimed.removeChain(face.outside, end)\n      //                            b\n      //                       [ outside, ...]\n      //                            |  removes this link\n      //     [ outside, ..., end ] -┘\n      //          |           |\n      //          a           a\n      end.next = null\n      return face.outside\n    }\n  }\n\n  /**\n   * Removes all the visible vertices that `face` is able to see, additionally\n   * checking the following:\n   *\n   * If `absorbingFace` doesn't exist then all the removed vertices will be\n   * added to the `unclaimed` vertex list\n   *\n   * If `absorbingFace` exists then this method will assign all the vertices of\n   * `face` that can see `absorbingFace`, if a vertex cannot see `absorbingFace`\n   * it's added to the `unclaimed` vertex list\n   *\n   * @param {Face} face\n   * @param {Face} [absorbingFace]\n   */\n  deleteFaceVertices (face, absorbingFace) {\n    const faceVertices = this.removeAllVerticesFromFace(face)\n    if (faceVertices) {\n      if (!absorbingFace) {\n        // mark the vertices to be reassigned to some other face\n        this.unclaimed.addAll(faceVertices)\n      } else {\n        // if there's an absorbing face try to assign as many vertices\n        // as possible to it\n\n        // the reference `vertex.next` might be destroyed on\n        // `this.addVertexToFace` (see VertexList#add), nextVertex is a\n        // reference to it\n        let nextVertex\n        for (let vertex = faceVertices; vertex; vertex = nextVertex) {\n          nextVertex = vertex.next\n          const distance = absorbingFace.distanceToPlane(vertex.point)\n\n          // check if `vertex` is able to see `absorbingFace`\n          if (distance > this.tolerance) {\n            this.addVertexToFace(vertex, absorbingFace)\n          } else {\n            this.unclaimed.add(vertex)\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Reassigns as many vertices as possible from the unclaimed list to the new\n   * faces\n   *\n   * @param {Faces[]} newFaces\n   */\n  resolveUnclaimedPoints (newFaces) {\n    // cache next vertex so that if `vertex.next` is destroyed it's still\n    // recoverable\n    let vertexNext = this.unclaimed.first()\n    for (let vertex = vertexNext; vertex; vertex = vertexNext) {\n      vertexNext = vertex.next\n      let maxDistance = this.tolerance\n      let maxFace\n      for (let i = 0; i < newFaces.length; i += 1) {\n        const face = newFaces[i]\n        if (face.mark === VISIBLE) {\n          const dist = face.distanceToPlane(vertex.point)\n          if (dist > maxDistance) {\n            maxDistance = dist\n            maxFace = face\n          }\n          if (maxDistance > 1000 * this.tolerance) {\n            break\n          }\n        }\n      }\n\n      if (maxFace) {\n        this.addVertexToFace(vertex, maxFace)\n      }\n    }\n  }\n\n  /**\n   * Computes the extremes of a tetrahedron which will be the initial hull\n   *\n   * @return {number[]} The min/max vertices in the x,y,z directions\n   */\n  computeExtremes () {\n    const min = []\n    const max = []\n\n    // min vertex on the x,y,z directions\n    const minVertices = []\n    // max vertex on the x,y,z directions\n    const maxVertices = []\n\n    let i, j\n\n    // initially assume that the first vertex is the min/max\n    for (i = 0; i < 3; i += 1) {\n      minVertices[i] = maxVertices[i] = this.vertices[0]\n    }\n    // copy the coordinates of the first vertex to min/max\n    for (i = 0; i < 3; i += 1) {\n      min[i] = max[i] = this.vertices[0].point[i]\n    }\n\n    // compute the min/max vertex on all 6 directions\n    for (i = 1; i < this.vertices.length; i += 1) {\n      const vertex = this.vertices[i]\n      const point = vertex.point\n      // update the min coordinates\n      for (j = 0; j < 3; j += 1) {\n        if (point[j] < min[j]) {\n          min[j] = point[j]\n          minVertices[j] = vertex\n        }\n      }\n      // update the max coordinates\n      for (j = 0; j < 3; j += 1) {\n        if (point[j] > max[j]) {\n          max[j] = point[j]\n          maxVertices[j] = vertex\n        }\n      }\n    }\n\n    // compute epsilon\n    this.tolerance = 3 * Number.EPSILON * (\n      Math.max(Math.abs(min[0]), Math.abs(max[0])) +\n      Math.max(Math.abs(min[1]), Math.abs(max[1])) +\n      Math.max(Math.abs(min[2]), Math.abs(max[2]))\n    )\n    return [minVertices, maxVertices]\n  }\n\n  /**\n   * Compues the initial tetrahedron assigning to its faces all the points that\n   * are candidates to form part of the hull\n   */\n  createInitialSimplex () {\n    const vertices = this.vertices\n    const [min, max] = this.computeExtremes()\n    let v2, v3\n    let i, j\n\n    // Find the two vertices with the greatest 1d separation\n    // (max.x - min.x)\n    // (max.y - min.y)\n    // (max.z - min.z)\n    let maxDistance = 0\n    let indexMax = 0\n    for (i = 0; i < 3; i += 1) {\n      const distance = max[i].point[i] - min[i].point[i]\n      if (distance > maxDistance) {\n        maxDistance = distance\n        indexMax = i\n      }\n    }\n    const v0 = min[indexMax]\n    const v1 = max[indexMax]\n\n    // the next vertex is the one farthest to the line formed by `v0` and `v1`\n    maxDistance = 0\n    for (i = 0; i < this.vertices.length; i += 1) {\n      const vertex = this.vertices[i]\n      if (vertex !== v0 && vertex !== v1) {\n        const distance = pointLineDistance(\n          vertex.point, v0.point, v1.point\n        )\n        if (distance > maxDistance) {\n          maxDistance = distance\n          v2 = vertex\n        }\n      }\n    }\n\n    // the next vertes is the one farthest to the plane `v0`, `v1`, `v2`\n    // normalize((v2 - v1) x (v0 - v1))\n    const normal = getPlaneNormal([], v0.point, v1.point, v2.point)\n    // distance from the origin to the plane\n    const distPO = dot(v0.point, normal)\n    maxDistance = -1\n    for (i = 0; i < this.vertices.length; i += 1) {\n      const vertex = this.vertices[i]\n      if (vertex !== v0 && vertex !== v1 && vertex !== v2) {\n        const distance = Math.abs(dot(normal, vertex.point) - distPO)\n        if (distance > maxDistance) {\n          maxDistance = distance\n          v3 = vertex\n        }\n      }\n    }\n\n    // initial simplex\n    // Taken from http://everything2.com/title/How+to+paint+a+tetrahedron\n    //\n    //                              v2\n    //                             ,|,\n    //                           ,7``\\'VA,\n    //                         ,7`   |, `'VA,\n    //                       ,7`     `\\    `'VA,\n    //                     ,7`        |,      `'VA,\n    //                   ,7`          `\\         `'VA,\n    //                 ,7`             |,           `'VA,\n    //               ,7`               `\\       ,..ooOOTK` v3\n    //             ,7`                  |,.ooOOT''`    AV\n    //           ,7`            ,..ooOOT`\\`           /7\n    //         ,7`      ,..ooOOT''`      |,          AV\n    //        ,T,..ooOOT''`              `\\         /7\n    //     v0 `'TTs.,                     |,       AV\n    //            `'TTs.,                 `\\      /7\n    //                 `'TTs.,             |,    AV\n    //                      `'TTs.,        `\\   /7\n    //                           `'TTs.,    |, AV\n    //                                `'TTs.,\\/7\n    //                                     `'T`\n    //                                       v1\n    //\n    const faces = []\n    if (dot(v3.point, normal) - distPO < 0) {\n      // the face is not able to see the point so `planeNormal`\n      // is pointing outside the tetrahedron\n      faces.push(\n        Face.createTriangle(v0, v1, v2),\n        Face.createTriangle(v3, v1, v0),\n        Face.createTriangle(v3, v2, v1),\n        Face.createTriangle(v3, v0, v2)\n      )\n\n      // set the opposite edge\n      for (i = 0; i < 3; i += 1) {\n        const j = (i + 1) % 3\n        // join face[i] i > 0, with the first face\n        faces[i + 1].getEdge(2).setOpposite(faces[0].getEdge(j))\n        // join face[i] with face[i + 1], 1 <= i <= 3\n        faces[i + 1].getEdge(1).setOpposite(faces[j + 1].getEdge(0))\n      }\n    } else {\n      // the face is able to see the point so `planeNormal`\n      // is pointing inside the tetrahedron\n      faces.push(\n        Face.createTriangle(v0, v2, v1),\n        Face.createTriangle(v3, v0, v1),\n        Face.createTriangle(v3, v1, v2),\n        Face.createTriangle(v3, v2, v0)\n      )\n\n      // set the opposite edge\n      for (i = 0; i < 3; i += 1) {\n        const j = (i + 1) % 3\n        // join face[i] i > 0, with the first face\n        faces[i + 1].getEdge(2).setOpposite(faces[0].getEdge((3 - i) % 3))\n        // join face[i] with face[i + 1]\n        faces[i + 1].getEdge(0).setOpposite(faces[j + 1].getEdge(1))\n      }\n    }\n\n    // the initial hull is the tetrahedron\n    for (i = 0; i < 4; i += 1) {\n      this.faces.push(faces[i])\n    }\n\n    // initial assignment of vertices to the faces of the tetrahedron\n    for (i = 0; i < vertices.length; i += 1) {\n      const vertex = vertices[i]\n      if (vertex !== v0 && vertex !== v1 && vertex !== v2 && vertex !== v3) {\n        maxDistance = this.tolerance\n        let maxFace\n        for (j = 0; j < 4; j += 1) {\n          const distance = faces[j].distanceToPlane(vertex.point)\n          if (distance > maxDistance) {\n            maxDistance = distance\n            maxFace = faces[j]\n          }\n        }\n\n        if (maxFace) {\n          this.addVertexToFace(vertex, maxFace)\n        }\n      }\n    }\n  }\n\n  reindexFaceAndVertices () {\n    // remove inactive faces\n    const activeFaces = []\n    for (let i = 0; i < this.faces.length; i += 1) {\n      const face = this.faces[i]\n      if (face.mark === VISIBLE) {\n        activeFaces.push(face)\n      }\n    }\n    this.faces = activeFaces\n  }\n\n  collectFaces (skipTriangulation) {\n    const faceIndices = []\n    for (let i = 0; i < this.faces.length; i += 1) {\n      if (this.faces[i].mark !== VISIBLE) {\n        throw Error('attempt to include a destroyed face in the hull')\n      }\n      const indices = this.faces[i].collectIndices()\n      if (skipTriangulation) {\n        faceIndices.push(indices)\n      } else {\n        for (let j = 0; j < indices.length - 2; j += 1) {\n          faceIndices.push(\n            [indices[0], indices[j + 1], indices[j + 2]]\n          )\n        }\n      }\n    }\n    return faceIndices\n  }\n\n  /**\n   * Finds the next vertex to make faces with the current hull\n   *\n   * - let `face` be the first face existing in the `claimed` vertex list\n   *  - if `face` doesn't exist then return since there're no vertices left\n   *  - otherwise for each `vertex` that face sees find the one furthest away\n   *  from `face`\n   *\n   * @return {Vertex|undefined} Returns undefined when there're no more\n   * visible vertices\n   */\n  nextVertexToAdd () {\n    if (!this.claimed.isEmpty()) {\n      let eyeVertex, vertex\n      let maxDistance = 0\n      const eyeFace = this.claimed.first().face\n      for (vertex = eyeFace.outside; vertex && vertex.face === eyeFace; vertex = vertex.next) {\n        const distance = eyeFace.distanceToPlane(vertex.point)\n        if (distance > maxDistance) {\n          maxDistance = distance\n          eyeVertex = vertex\n        }\n      }\n      return eyeVertex\n    }\n  }\n\n  /**\n   * Computes a chain of half edges in ccw order called the `horizon`, for an\n   * edge to be part of the horizon it must join a face that can see\n   * `eyePoint` and a face that cannot see `eyePoint`\n   *\n   * @param {number[]} eyePoint - The coordinates of a point\n   * @param {HalfEdge} crossEdge - The edge used to jump to the current `face`\n   * @param {Face} face - The current face being tested\n   * @param {HalfEdge[]} horizon - The edges that form part of the horizon in\n   * ccw order\n   */\n  computeHorizon (eyePoint, crossEdge, face, horizon) {\n    // moves face's vertices to the `unclaimed` vertex list\n    this.deleteFaceVertices(face)\n\n    face.mark = DELETED\n\n    let edge\n    if (!crossEdge) {\n      edge = crossEdge = face.getEdge(0)\n    } else {\n      // start from the next edge since `crossEdge` was already analyzed\n      // (actually `crossEdge.opposite` was the face who called this method\n      // recursively)\n      edge = crossEdge.next\n    }\n\n    // All the faces that are able to see `eyeVertex` are defined as follows\n    //\n    //       v    /\n    //           / <== visible face\n    //          /\n    //         |\n    //         | <== not visible face\n    //\n    //  dot(v, visible face normal) - visible face offset > this.tolerance\n    //\n    do {\n      const oppositeEdge = edge.opposite\n      const oppositeFace = oppositeEdge.face\n      if (oppositeFace.mark === VISIBLE) {\n        if (oppositeFace.distanceToPlane(eyePoint) > this.tolerance) {\n          this.computeHorizon(eyePoint, oppositeEdge, oppositeFace, horizon)\n        } else {\n          horizon.push(edge)\n        }\n      }\n      edge = edge.next\n    } while (edge !== crossEdge)\n  }\n\n  /**\n   * Creates a face with the points `eyeVertex.point`, `horizonEdge.tail` and\n   * `horizonEdge.tail` in ccw order\n   *\n   * @param {Vertex} eyeVertex\n   * @param {HalfEdge} horizonEdge\n   * @return {HalfEdge} The half edge whose vertex is the eyeVertex\n   */\n  addAdjoiningFace (eyeVertex, horizonEdge) {\n    // all the half edges are created in ccw order thus the face is always\n    // pointing outside the hull\n    // edges:\n    //\n    //                  eyeVertex.point\n    //                       / \\\n    //                      /   \\\n    //                  1  /     \\  0\n    //                    /       \\\n    //                   /         \\\n    //                  /           \\\n    //          horizon.tail --- horizon.head\n    //                        2\n    //\n    const face = Face.createTriangle(\n      eyeVertex,\n      horizonEdge.tail(),\n      horizonEdge.head()\n    )\n    this.faces.push(face)\n    // join face.getEdge(-1) with the horizon's opposite edge\n    // face.getEdge(-1) = face.getEdge(2)\n    face.getEdge(-1).setOpposite(horizonEdge.opposite)\n    return face.getEdge(0)\n  }\n\n  /**\n   * Adds horizon.length faces to the hull, each face will be 'linked' with the\n   * horizon opposite face and the face on the left/right\n   *\n   * @param {Vertex} eyeVertex\n   * @param {HalfEdge[]} horizon - A chain of half edges in ccw order\n   */\n  addNewFaces (eyeVertex, horizon) {\n    this.newFaces = []\n    let firstSideEdge, previousSideEdge\n    for (let i = 0; i < horizon.length; i += 1) {\n      const horizonEdge = horizon[i]\n      // returns the right side edge\n      const sideEdge = this.addAdjoiningFace(eyeVertex, horizonEdge)\n      if (!firstSideEdge) {\n        firstSideEdge = sideEdge\n      } else {\n        // joins face.getEdge(1) with previousFace.getEdge(0)\n        sideEdge.next.setOpposite(previousSideEdge)\n      }\n      this.newFaces.push(sideEdge.face)\n      previousSideEdge = sideEdge\n    }\n    firstSideEdge.next.setOpposite(previousSideEdge)\n  }\n\n  /**\n   * Computes the distance from `edge` opposite face's centroid to\n   * `edge.face`\n   *\n   * @param {HalfEdge} edge\n   * @return {number}\n   * - A positive number when the centroid of the opposite face is above the\n   *   face i.e. when the faces are concave\n   * - A negative number when the centroid of the opposite face is below the\n   *   face i.e. when the faces are convex\n   */\n  oppositeFaceDistance (edge) {\n    return edge.face.distanceToPlane(edge.opposite.face.centroid)\n  }\n\n  /**\n   * Merges a face with none/any/all its neighbors according to the strategy\n   * used\n   *\n   * if `mergeType` is MERGE_NON_CONVEX_WRT_LARGER_FACE then the merge will be\n   * decided based on the face with the larger area, the centroid of the face\n   * with the smaller area will be checked against the one with the larger area\n   * to see if it's in the merge range [tolerance, -tolerance] i.e.\n   *\n   *    dot(centroid smaller face, larger face normal) - larger face offset > -tolerance\n   *\n   * Note that the first check (with +tolerance) was done on `computeHorizon`\n   *\n   * If the above is not true then the check is done with respect to the smaller\n   * face i.e.\n   *\n   *    dot(centroid larger face, smaller face normal) - smaller face offset > -tolerance\n   *\n   * If true then it means that two faces are non convex (concave), even if the\n   * dot(...) - offset value is > 0 (that's the point of doing the merge in the\n   * first place)\n   *\n   * If two faces are concave then the check must also be done on the other face\n   * but this is done in another merge pass, for this to happen the face is\n   * marked in a temporal NON_CONVEX state\n   *\n   * if `mergeType` is MERGE_NON_CONVEX then two faces will be merged only if\n   * they pass the following conditions\n   *\n   *    dot(centroid smaller face, larger face normal) - larger face offset > -tolerance\n   *    dot(centroid larger face, smaller face normal) - smaller face offset > -tolerance\n   *\n   * @param {Face} face\n   * @param {number} mergeType - Either MERGE_NON_CONVEX_WRT_LARGER_FACE or\n   * MERGE_NON_CONVEX\n   */\n  doAdjacentMerge (face, mergeType) {\n    let edge = face.edge\n    let convex = true\n    let it = 0\n    do {\n      if (it >= face.nVertices) {\n        throw Error('merge recursion limit exceeded')\n      }\n      const oppositeFace = edge.opposite.face\n      let merge = false\n\n      // Important notes about the algorithm to merge faces\n      //\n      // - Given a vertex `eyeVertex` that will be added to the hull\n      //   all the faces that cannot see `eyeVertex` are defined as follows\n      //\n      //      dot(v, not visible face normal) - not visible offset < tolerance\n      //\n      // - Two faces can be merged when the centroid of one of these faces\n      // projected to the normal of the other face minus the other face offset\n      // is in the range [tolerance, -tolerance]\n      // - Since `face` (given in the input for this method) has passed the\n      // check above we only have to check the lower bound e.g.\n      //\n      //      dot(v, not visible face normal) - not visible offset > -tolerance\n      //\n      if (mergeType === MERGE_NON_CONVEX) {\n        if (this.oppositeFaceDistance(edge) > -this.tolerance ||\n            this.oppositeFaceDistance(edge.opposite) > -this.tolerance) {\n          merge = true\n        }\n      } else {\n        if (face.area > oppositeFace.area) {\n          if (this.oppositeFaceDistance(edge) > -this.tolerance) {\n            merge = true\n          } else if (this.oppositeFaceDistance(edge.opposite) > -this.tolerance) {\n            convex = false\n          }\n        } else {\n          if (this.oppositeFaceDistance(edge.opposite) > -this.tolerance) {\n            merge = true\n          } else if (this.oppositeFaceDistance(edge) > -this.tolerance) {\n            convex = false\n          }\n        }\n      }\n\n      if (merge) {\n        // when two faces are merged it might be possible that redundant faces\n        // are destroyed, in that case move all the visible vertices from the\n        // destroyed faces to the `unclaimed` vertex list\n        const discardedFaces = face.mergeAdjacentFaces(edge, [])\n        for (let i = 0; i < discardedFaces.length; i += 1) {\n          this.deleteFaceVertices(discardedFaces[i], face)\n        }\n        return true\n      }\n\n      edge = edge.next\n      it += 1\n    } while (edge !== face.edge)\n    if (!convex) {\n      face.mark = NON_CONVEX\n    }\n    return false\n  }\n\n  /**\n   * Adds a vertex to the hull with the following algorithm\n   *\n   * - Compute the `horizon` which is a chain of half edges, for an edge to\n   *   belong to this group it must be the edge connecting a face that can\n   *   see `eyeVertex` and a face which cannot see `eyeVertex`\n   * - All the faces that can see `eyeVertex` have its visible vertices removed\n   *   from the claimed VertexList\n   * - A new set of faces is created with each edge of the `horizon` and\n   *   `eyeVertex`, each face is connected with the opposite horizon face and\n   *   the face on the left/right\n   * - The new faces are merged if possible with the opposite horizon face first\n   *   and then the faces on the right/left\n   * - The vertices removed from all the visible faces are assigned to the new\n   *   faces if possible\n   *\n   * @param {Vertex} eyeVertex\n   */\n  addVertexToHull (eyeVertex) {\n    const horizon = []\n\n    this.unclaimed.clear()\n\n    // remove `eyeVertex` from `eyeVertex.face` so that it can't be added to the\n    // `unclaimed` vertex list\n    this.removeVertexFromFace(eyeVertex, eyeVertex.face)\n    this.computeHorizon(eyeVertex.point, null, eyeVertex.face, horizon)\n    this.addNewFaces(eyeVertex, horizon)\n\n    // first merge pass\n    // Do the merge with respect to the larger face\n    for (let i = 0; i < this.newFaces.length; i += 1) {\n      const face = this.newFaces[i]\n      if (face.mark === VISIBLE) {\n        while (this.doAdjacentMerge(face, MERGE_NON_CONVEX_WRT_LARGER_FACE)) {} // eslint-disable-line no-empty\n      }\n    }\n\n    // second merge pass\n    // Do the merge on non convex faces (a face is marked as non convex in the\n    // first pass)\n    for (let i = 0; i < this.newFaces.length; i += 1) {\n      const face = this.newFaces[i]\n      if (face.mark === NON_CONVEX) {\n        face.mark = VISIBLE\n        while (this.doAdjacentMerge(face, MERGE_NON_CONVEX)) {} // eslint-disable-line no-empty\n      }\n    }\n\n    // reassign `unclaimed` vertices to the new faces\n    this.resolveUnclaimedPoints(this.newFaces)\n  }\n\n  build () {\n    let eyeVertex\n    this.createInitialSimplex()\n    while ((eyeVertex = this.nextVertexToAdd())) {\n      this.addVertexToHull(eyeVertex)\n    }\n    this.reindexFaceAndVertices()\n  }\n}\n\nmodule.exports = QuickHull\n","/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nclass Vertex {\n  constructor (point, index) {\n    this.point = point\n    // index in the input array\n    this.index = index\n    // vertex is a double linked list node\n    this.next = null\n    this.prev = null\n    // the face that is able to see this point\n    this.face = null\n  }\n}\n\nmodule.exports = Vertex\n","/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nclass VertexList {\n  constructor () {\n    this.head = null\n    this.tail = null\n  }\n\n  clear () {\n    this.head = this.tail = null\n  }\n\n  /**\n   * Inserts a `node` before `target`, it's assumed that\n   * `target` belongs to this doubly linked list\n   *\n   * @param {*} target\n   * @param {*} node\n   */\n  insertBefore (target, node) {\n    node.prev = target.prev\n    node.next = target\n    if (!node.prev) {\n      this.head = node\n    } else {\n      node.prev.next = node\n    }\n    target.prev = node\n  }\n\n  /**\n   * Inserts a `node` after `target`, it's assumed that\n   * `target` belongs to this doubly linked list\n   *\n   * @param {Vertex} target\n   * @param {Vertex} node\n   */\n  insertAfter (target, node) {\n    node.prev = target\n    node.next = target.next\n    if (!node.next) {\n      this.tail = node\n    } else {\n      node.next.prev = node\n    }\n    target.next = node\n  }\n\n  /**\n   * Appends a `node` to the end of this doubly linked list\n   * Note: `node.next` will be unlinked from `node`\n   * Note: if `node` is part of another linked list call `addAll` instead\n   *\n   * @param {*} node\n   */\n  add (node) {\n    if (!this.head) {\n      this.head = node\n    } else {\n      this.tail.next = node\n    }\n    node.prev = this.tail\n    // since node is the new end it doesn't have a next node\n    node.next = null\n    this.tail = node\n  }\n\n  /**\n   * Appends a chain of nodes where `node` is the head,\n   * the difference with `add` is that it correctly sets the position\n   * of the node list `tail` property\n   *\n   * @param {*} node\n   */\n  addAll (node) {\n    if (!this.head) {\n      this.head = node\n    } else {\n      this.tail.next = node\n    }\n    node.prev = this.tail\n\n    // find the end of the list\n    while (node.next) {\n      node = node.next\n    }\n    this.tail = node\n  }\n\n  /**\n   * Deletes a `node` from this linked list, it's assumed that `node` is a\n   * member of this linked list\n   *\n   * @param {*} node\n   */\n  remove (node) {\n    if (!node.prev) {\n      this.head = node.next\n    } else {\n      node.prev.next = node.next\n    }\n\n    if (!node.next) {\n      this.tail = node.prev\n    } else {\n      node.next.prev = node.prev\n    }\n  }\n\n  /**\n   * Removes a chain of nodes whose head is `a` and whose tail is `b`,\n   * it's assumed that `a` and `b` belong to this list and also that `a`\n   * comes before `b` in the linked list\n   *\n   * @param {*} a\n   * @param {*} b\n   */\n  removeChain (a, b) {\n    if (!a.prev) {\n      this.head = b.next\n    } else {\n      a.prev.next = b.next\n    }\n\n    if (!b.next) {\n      this.tail = a.prev\n    } else {\n      b.next.prev = a.prev\n    }\n  }\n\n  first () {\n    return this.head\n  }\n\n  isEmpty () {\n    return !this.head\n  }\n}\n\nmodule.exports = VertexList\n","const cross = require('../../../maths/vec3/cross')\nconst normalize = require('../../../maths/vec3/normalize')\nconst subtract = require('../../../maths/vec3/subtract')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst planeNormal = (out, point1, point2, point3) => {\n  const tmp = [0, 0, 0]\n  subtract(out, point1, point2)\n  subtract(tmp, point2, point3)\n  cross(out, out, tmp)\n  return normalize(out, out)\n}\n\nmodule.exports = planeNormal\n","const QuickHull = require('./QuickHull')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst runner = (points, options = {}) => {\n  const instance = new QuickHull(points)\n  instance.build()\n  return instance.collectFaces(options.skipTriangulation)\n}\n\nmodule.exports = runner\n","const cross = require('../../../maths/vec3/cross')\nconst subtract = require('../../../maths/vec3/subtract')\nconst squaredLength = require('../../../maths/vec3/squaredLength')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst distanceSquared = (p, a, b) => {\n  // == parallelogram solution\n  //\n  //            s\n  //      __a________b__\n  //       /   |    /\n  //      /   h|   /\n  //     /_____|__/\n  //    p\n  //\n  //  s = b - a\n  //  area = s * h\n  //  |ap x s| = s * h\n  //  h = |ap x s| / s\n  //\n  const ab = []\n  const ap = []\n  const cr = []\n  subtract(ab, b, a)\n  subtract(ap, p, a)\n  const area = squaredLength(cross(cr, ap, ab))\n  const s = squaredLength(ab)\n  if (s === 0) {\n    throw Error('a and b are the same point')\n  }\n  return area / s\n}\n\nconst pointLineDistance = (point, a, b) => Math.sqrt(distanceSquared(point, a, b))\n\nmodule.exports = pointLineDistance\n","const geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/*\n * Return the unique vertices of a geometry\n */\nconst toUniquePoints = (geometries) => {\n  const found = new Set()\n  const uniquePoints = []\n\n  const addPoint = (point) => {\n    const key = point.toString()\n    if (!found.has(key)) {\n      uniquePoints.push(point)\n      found.add(key)\n    }\n  }\n\n  geometries.forEach((geometry) => {\n    if (geom2.isA(geometry)) {\n      geom2.toPoints(geometry).forEach(addPoint)\n    } else if (geom3.isA(geometry)) {\n      // points are grouped by polygon\n      geom3.toPoints(geometry).forEach((points) => points.forEach(addPoint))\n    } else if (path2.isA(geometry)) {\n      path2.toPoints(geometry).forEach(addPoint)\n    }\n  })\n\n  return uniquePoints\n}\n\nmodule.exports = toUniquePoints\n","const flatten = require('../../utils/flatten')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst snapPolygons = require('./snapPolygons')\nconst mergePolygons = require('./mergePolygons')\nconst insertTjunctions = require('./insertTjunctions')\nconst triangulatePolygons = require('./triangulatePolygons')\n\n/*\n */\nconst generalizePath2 = (options, geometry) => geometry\n\n/*\n */\nconst generalizeGeom2 = (options, geometry) => geometry\n\n/*\n */\nconst generalizeGeom3 = (options, geometry) => {\n  const defaults = {\n    snap: false,\n    simplify: false,\n    triangulate: false\n  }\n  const { snap, simplify, triangulate } = Object.assign({}, defaults, options)\n\n  const epsilon = measureEpsilon(geometry)\n  let polygons = geom3.toPolygons(geometry)\n\n  // snap the given geometry if requested\n  if (snap) {\n    polygons = snapPolygons(epsilon, polygons)\n  }\n\n  // simplify the polygons if requested\n  if (simplify) {\n    // TODO implement some mesh decimations\n    polygons = mergePolygons(epsilon, polygons)\n  }\n\n  // triangulate the polygons if requested\n  if (triangulate) {\n    polygons = insertTjunctions(polygons)\n    polygons = triangulatePolygons(epsilon, polygons)\n  }\n\n  // FIXME replace with geom3.cloneShallow() when available\n  const clone = Object.assign({}, geometry)\n  clone.polygons = polygons\n\n  return clone\n}\n\n/**\n * Apply various modifications in proper order to produce a generalized geometry.\n * @param {Object} options - options for modifications\n * @param {Boolean} [options.snap=false] the geometries should be snapped to epsilons\n * @param {Boolean} [options.simplify=false] the geometries should be simplified\n * @param {Boolean} [options.triangulate=false] the geometries should be triangulated\n * @param {...Object} geometries - the geometries to generalize\n * @return {Object|Array} the modified geometry, or a list of modified geometries\n * @alias module:modeling/modifiers.generalize\n */\nconst generalize = (options, ...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  const results = geometries.map((geometry) => {\n    if (path2.isA(geometry)) return generalizePath2(options, geometry)\n    if (geom2.isA(geometry)) return generalizeGeom2(options, geometry)\n    if (geom3.isA(geometry)) return generalizeGeom3(options, geometry)\n    throw new Error('invalid geometry')\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = generalize\n","/**\n * All shapes (primitives or the results of operations) can be modified to correct issues, etc.\n * In all cases, these functions returns the results, and never changes the original geometry.\n * @module modeling/modifiers\n * @example\n * const { snap } = require('@jscad/modeling').modifiers\n */\nmodule.exports = {\n  generalize: require('./generalize'),\n  snap: require('./snap')\n}\n","const constants = require('../../maths/constants')\nconst vec3 = require('../../maths/vec3')\nconst poly3 = require('../../geometries/poly3')\n\nconst assert = false\n\nconst getTag = (vertex) => `${vertex}`\n\nconst addSide = (sidemap, vertextag2sidestart, vertextag2sideend, vertex0, vertex1, polygonindex) => {\n  const starttag = getTag(vertex0)\n  const endtag = getTag(vertex1)\n  if (assert && starttag === endtag) throw new Error('assert failed')\n  const newsidetag = `${starttag}/${endtag}`\n  const reversesidetag = `${endtag}/${starttag}`\n  if (sidemap.has(reversesidetag)) {\n    // remove the opposing side from mappings\n    deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, vertex1, vertex0, null)\n    return null\n  }\n  // add the side to the mappings\n  const newsideobj = {\n    vertex0: vertex0,\n    vertex1: vertex1,\n    polygonindex: polygonindex\n  }\n  if (!(sidemap.has(newsidetag))) {\n    sidemap.set(newsidetag, [newsideobj])\n  } else {\n    sidemap.get(newsidetag).push(newsideobj)\n  }\n  if (starttag in vertextag2sidestart) {\n    vertextag2sidestart[starttag].push(newsidetag)\n  } else {\n    vertextag2sidestart[starttag] = [newsidetag]\n  }\n  if (endtag in vertextag2sideend) {\n    vertextag2sideend[endtag].push(newsidetag)\n  } else {\n    vertextag2sideend[endtag] = [newsidetag]\n  }\n  return newsidetag\n}\n\nconst deleteSide = (sidemap, vertextag2sidestart, vertextag2sideend, vertex0, vertex1, polygonindex) => {\n  const starttag = getTag(vertex0)\n  const endtag = getTag(vertex1)\n  const sidetag = `${starttag}/${endtag}`\n  if (assert && !(sidemap.has(sidetag))) throw new Error('assert failed')\n  let idx = -1\n  const sideobjs = sidemap.get(sidetag)\n  for (let i = 0; i < sideobjs.length; i++) {\n    const sideobj = sideobjs[i]\n    let sidetag = getTag(sideobj.vertex0)\n    if (sidetag !== starttag) continue\n    sidetag = getTag(sideobj.vertex1)\n    if (sidetag !== endtag) continue\n    if (polygonindex !== null) {\n      if (sideobj.polygonindex !== polygonindex) continue\n    }\n    idx = i\n    break\n  }\n  if (assert && idx < 0) throw new Error('assert failed')\n  sideobjs.splice(idx, 1)\n  if (sideobjs.length === 0) {\n    sidemap.delete(sidetag)\n  }\n\n  // adjust start and end lists\n  idx = vertextag2sidestart[starttag].indexOf(sidetag)\n  if (assert && idx < 0) throw new Error('assert failed')\n  vertextag2sidestart[starttag].splice(idx, 1)\n  if (vertextag2sidestart[starttag].length === 0) {\n    delete vertextag2sidestart[starttag]\n  }\n\n  idx = vertextag2sideend[endtag].indexOf(sidetag)\n  if (assert && idx < 0) throw new Error('assert failed')\n  vertextag2sideend[endtag].splice(idx, 1)\n  if (vertextag2sideend[endtag].length === 0) {\n    delete vertextag2sideend[endtag]\n  }\n}\n\n/*\n  Suppose we have two polygons ACDB and EDGF:\n\n   A-----B\n   |     |\n   |     E--F\n   |     |  |\n   C-----D--G\n\n  Note that vertex E forms a T-junction on the side BD. In this case some STL slicers will complain\n  that the solid is not watertight. This is because the watertightness check is done by checking if\n  each side DE is matched by another side ED.\n\n  This function will return a new solid with ACDB replaced by ACDEB\n\n  Note that this can create polygons that are slightly non-convex (due to rounding errors). Therefore the result should\n  not be used for further CSG operations!\n\n  Note this function is meant to be used to preprocess geometries when triangulation is required, i.e. AMF, STL, etc.\n  Do not use the results in other operations.\n*/\n\n/*\n * Insert missing vertices for T junctions, which creates polygons that can be triangulated.\n * @param {Array} polygons - the original polygons which may or may not have T junctions\n * @return original polygons (if no T junctions found) or new polygons with updated vertices\n */\nconst insertTjunctions = (polygons) => {\n  // STEP 1 : build a map of 'unmatched' sides from the polygons\n  // i.e. side AB in one polygon does not have a matching side BA in another polygon\n  const sidemap = new Map()\n  for (let polygonindex = 0; polygonindex < polygons.length; polygonindex++) {\n    const polygon = polygons[polygonindex]\n    const numvertices = polygon.vertices.length\n    if (numvertices >= 3) {\n      let vertex = polygon.vertices[0]\n      let vertextag = getTag(vertex)\n      for (let vertexindex = 0; vertexindex < numvertices; vertexindex++) {\n        let nextvertexindex = vertexindex + 1\n        if (nextvertexindex === numvertices) nextvertexindex = 0\n\n        const nextvertex = polygon.vertices[nextvertexindex]\n        const nextvertextag = getTag(nextvertex)\n\n        const sidetag = `${vertextag}/${nextvertextag}`\n        const reversesidetag = `${nextvertextag}/${vertextag}`\n        if (sidemap.has(reversesidetag)) {\n          // this side matches the same side in another polygon. Remove from sidemap\n          // FIXME is this check necessary? there should only be ONE(1) opposing side\n          // FIXME assert ?\n          const ar = sidemap.get(reversesidetag)\n          ar.splice(-1, 1)\n          if (ar.length === 0) {\n            sidemap.delete(reversesidetag)\n          }\n        } else {\n          const sideobj = {\n            vertex0: vertex,\n            vertex1: nextvertex,\n            polygonindex: polygonindex\n          }\n          if (!(sidemap.has(sidetag))) {\n            sidemap.set(sidetag, [sideobj])\n          } else {\n            sidemap.get(sidetag).push(sideobj)\n          }\n        }\n        vertex = nextvertex\n        vertextag = nextvertextag\n      }\n    } else {\n      console.warn('warning: invalid polygon found during insertTjunctions')\n    }\n  }\n\n  if (sidemap.size > 0) {\n    // console.log('insertTjunctions',sidemap.size)\n    // STEP 2 : create a list of starting sides and ending sides\n    const vertextag2sidestart = {}\n    const vertextag2sideend = {}\n    const sidestocheck = {}\n    for (const [sidetag, sideobjs] of sidemap) {\n      sidestocheck[sidetag] = true\n      sideobjs.forEach((sideobj) => {\n        const starttag = getTag(sideobj.vertex0)\n        const endtag = getTag(sideobj.vertex1)\n        if (starttag in vertextag2sidestart) {\n          vertextag2sidestart[starttag].push(sidetag)\n        } else {\n          vertextag2sidestart[starttag] = [sidetag]\n        }\n        if (endtag in vertextag2sideend) {\n          vertextag2sideend[endtag].push(sidetag)\n        } else {\n          vertextag2sideend[endtag] = [sidetag]\n        }\n      })\n    }\n\n    // STEP 3 : if sidemap is not empty\n    const newpolygons = polygons.slice(0) // make a copy in order to replace polygons inline\n    while (true) {\n      if (sidemap.size === 0) break\n\n      for (const sidetag of sidemap.keys()) {\n        sidestocheck[sidetag] = true\n      }\n\n      let donesomething = false\n      while (true) {\n        const sidetags = Object.keys(sidestocheck)\n        if (sidetags.length === 0) break // sidestocheck is empty, we're done!\n        const sidetagtocheck = sidetags[0]\n        let donewithside = true\n        if (sidemap.has(sidetagtocheck)) {\n          const sideobjs = sidemap.get(sidetagtocheck)\n          if (assert && sideobjs.length === 0) throw new Error('assert failed')\n          const sideobj = sideobjs[0]\n          for (let directionindex = 0; directionindex < 2; directionindex++) {\n            const startvertex = (directionindex === 0) ? sideobj.vertex0 : sideobj.vertex1\n            const endvertex = (directionindex === 0) ? sideobj.vertex1 : sideobj.vertex0\n            const startvertextag = getTag(startvertex)\n            const endvertextag = getTag(endvertex)\n            let matchingsides = []\n            if (directionindex === 0) {\n              if (startvertextag in vertextag2sideend) {\n                matchingsides = vertextag2sideend[startvertextag]\n              }\n            } else {\n              if (startvertextag in vertextag2sidestart) {\n                matchingsides = vertextag2sidestart[startvertextag]\n              }\n            }\n            for (let matchingsideindex = 0; matchingsideindex < matchingsides.length; matchingsideindex++) {\n              const matchingsidetag = matchingsides[matchingsideindex]\n              const matchingside = sidemap.get(matchingsidetag)[0]\n              const matchingsidestartvertex = (directionindex === 0) ? matchingside.vertex0 : matchingside.vertex1\n              const matchingsideendvertex = (directionindex === 0) ? matchingside.vertex1 : matchingside.vertex0\n              const matchingsidestartvertextag = getTag(matchingsidestartvertex)\n              const matchingsideendvertextag = getTag(matchingsideendvertex)\n              if (assert && matchingsideendvertextag !== startvertextag) throw new Error('assert failed')\n              if (matchingsidestartvertextag === endvertextag) {\n                // matchingside cancels sidetagtocheck\n                deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, startvertex, endvertex, null)\n                deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, endvertex, startvertex, null)\n                donewithside = false\n                directionindex = 2 // skip reverse direction check\n                donesomething = true\n                break\n              } else {\n                const startpos = startvertex\n                const endpos = endvertex\n                const checkpos = matchingsidestartvertex\n                const direction = vec3.subtract(vec3.create(), checkpos, startpos)\n                // Now we need to check if endpos is on the line startpos-checkpos:\n                const t = vec3.dot(vec3.subtract(vec3.create(), endpos, startpos), direction) / vec3.dot(direction, direction)\n                if ((t > 0) && (t < 1)) {\n                  const closestpoint = vec3.scale(vec3.create(), direction, t)\n                  vec3.add(closestpoint, closestpoint, startpos)\n                  const distancesquared = vec3.squaredDistance(closestpoint, endpos)\n                  if (distancesquared < (constants.EPS * constants.EPS)) {\n                    // Yes it's a t-junction! We need to split matchingside in two:\n                    const polygonindex = matchingside.polygonindex\n                    const polygon = newpolygons[polygonindex]\n                    // find the index of startvertextag in polygon:\n                    const insertionvertextag = getTag(matchingside.vertex1)\n                    let insertionvertextagindex = -1\n                    for (let i = 0; i < polygon.vertices.length; i++) {\n                      if (getTag(polygon.vertices[i]) === insertionvertextag) {\n                        insertionvertextagindex = i\n                        break\n                      }\n                    }\n                    if (assert && insertionvertextagindex < 0) throw new Error('assert failed')\n                    // split the side by inserting the vertex:\n                    const newvertices = polygon.vertices.slice(0)\n                    newvertices.splice(insertionvertextagindex, 0, endvertex)\n                    const newpolygon = poly3.create(newvertices)\n\n                    newpolygons[polygonindex] = newpolygon\n\n                    // remove the original sides from our maps\n                    deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, matchingside.vertex0, matchingside.vertex1, polygonindex)\n                    const newsidetag1 = addSide(sidemap, vertextag2sidestart, vertextag2sideend, matchingside.vertex0, endvertex, polygonindex)\n                    const newsidetag2 = addSide(sidemap, vertextag2sidestart, vertextag2sideend, endvertex, matchingside.vertex1, polygonindex)\n                    if (newsidetag1 !== null) sidestocheck[newsidetag1] = true\n                    if (newsidetag2 !== null) sidestocheck[newsidetag2] = true\n                    donewithside = false\n                    directionindex = 2 // skip reverse direction check\n                    donesomething = true\n                    break\n                  } // if(distancesquared < 1e-10)\n                } // if( (t > 0) && (t < 1) )\n              } // if(endingstidestartvertextag === endvertextag)\n            } // for matchingsideindex\n          } // for directionindex\n        } // if(sidetagtocheck in sidemap)\n        if (donewithside) {\n          delete sidestocheck[sidetagtocheck]\n        }\n      }\n      if (!donesomething) break\n    }\n    polygons = newpolygons\n  }\n  sidemap.clear()\n\n  return polygons\n}\n\nmodule.exports = insertTjunctions\n","const aboutEqualNormals = require('../../maths/utils/aboutEqualNormals')\nconst vec3 = require('../../maths/vec3')\n\nconst poly3 = require('../../geometries/poly3')\n\n// create a set of edges from the given polygon, and link the edges as well\nconst createEdges = (polygon) => {\n  const points = poly3.toPoints(polygon)\n  const edges = []\n  for (let i = 0; i < points.length; i++) {\n    const j = (i + 1) % points.length\n    const edge = {\n      v1: points[i],\n      v2: points[j]\n    }\n    edges.push(edge)\n  }\n  // link the edges together\n  for (let i = 0; i < edges.length; i++) {\n    const j = (i + 1) % points.length\n    edges[i].next = edges[j]\n    edges[j].prev = edges[i]\n  }\n  return edges\n}\n\nconst insertEdge = (edges, edge) => {\n  const key = `${edge.v1}:${edge.v2}`\n  edges.set(key, edge)\n}\n\nconst deleteEdge = (edges, edge) => {\n  const key = `${edge.v1}:${edge.v2}`\n  edges.delete(key)\n}\n\nconst findOppositeEdge = (edges, edge) => {\n  const key = `${edge.v2}:${edge.v1}` // NOTE: OPPOSITE OF INSERT KEY\n  return edges.get(key)\n}\n\n// calculate the two adjoining angles between the opposing edges\nconst calculateAnglesBetween = (current, opposite, normal) => {\n  let v0 = current.prev.v1\n  let v1 = current.prev.v2\n  let v2 = opposite.next.v2\n  const angle1 = calculateAngle(v0, v1, v2, normal)\n\n  v0 = opposite.prev.v1\n  v1 = opposite.prev.v2\n  v2 = current.next.v2\n  const angle2 = calculateAngle(v0, v1, v2, normal)\n\n  return [angle1, angle2]\n}\n\nconst v1 = vec3.create()\nconst v2 = vec3.create()\n\nconst calculateAngle = (prevpoint, point, nextpoint, normal) => {\n  const d0 = vec3.subtract(v1, point, prevpoint)\n  const d1 = vec3.subtract(v2, nextpoint, point)\n  vec3.cross(d0, d0, d1)\n  return vec3.dot(d0, normal)\n}\n\n// create a polygon starting from the given edge (if possible)\nconst createPolygonAnd = (edge) => {\n  let polygon\n  const points = []\n  while (edge.next) {\n    const next = edge.next\n\n    points.push(edge.v1)\n\n    edge.v1 = null\n    edge.v2 = null\n    edge.next = null\n    edge.prev = null\n\n    edge = next\n  }\n  if (points.length > 0) polygon = poly3.create(points)\n  return polygon\n}\n\n/*\n * Merge COPLANAR polygons that share common edges.\n * @param {poly3[]} sourcepolygons - list of polygons\n * @returns {poly3[]} new set of polygons\n */\nconst mergeCoplanarPolygons = (sourcepolygons) => {\n  if (sourcepolygons.length < 2) return sourcepolygons\n\n  const normal = sourcepolygons[0].plane\n  const polygons = sourcepolygons.slice()\n  const edgeList = new Map()\n\n  while (polygons.length > 0) { // NOTE: the length of polygons WILL change\n    const polygon = polygons.shift()\n    const edges = createEdges(polygon)\n    for (let i = 0; i < edges.length; i++) {\n      const current = edges[i]\n      const opposite = findOppositeEdge(edgeList, current)\n      if (opposite) {\n        const angles = calculateAnglesBetween(current, opposite, normal)\n        if (angles[0] >= 0 && angles[1] >= 0) {\n          const edge1 = opposite.next\n          const edge2 = current.next\n          // adjust the edges, linking together opposing polygons\n          current.prev.next = opposite.next\n          current.next.prev = opposite.prev\n\n          opposite.prev.next = current.next\n          opposite.next.prev = current.prev\n\n          // remove the opposing edges\n          current.v1 = null\n          current.v2 = null\n          current.next = null\n          current.prev = null\n\n          deleteEdge(edgeList, opposite)\n\n          opposite.v1 = null\n          opposite.v2 = null\n          opposite.next = null\n          opposite.prev = null\n\n          const mergeEdges = (list, e1, e2) => {\n            const newedge = {\n              v1: e2.v1,\n              v2: e1.v2,\n              next: e1.next,\n              prev: e2.prev\n            }\n            // link in newedge\n            e2.prev.next = newedge\n            e1.next.prev = newedge\n            // remove old edges\n            deleteEdge(list, e1)\n            e1.v1 = null\n            e1.v2 = null\n            e1.next = null\n            e1.prev = null\n\n            deleteEdge(list, e2)\n            e2.v1 = null\n            e2.v2 = null\n            e2.next = null\n            e2.prev = null\n          }\n\n          if (angles[0] === 0.0) {\n            mergeEdges(edgeList, edge1, edge1.prev)\n          }\n          if (angles[1] === 0.0) {\n            mergeEdges(edgeList, edge2, edge2.prev)\n          }\n        }\n      } else {\n        if (current.next) insertEdge(edgeList, current)\n      }\n    }\n  }\n\n  // build a set of polygons from the remaining edges\n  const destpolygons = []\n  edgeList.forEach((edge) => {\n    const polygon = createPolygonAnd(edge)\n    if (polygon) destpolygons.push(polygon)\n  })\n\n  edgeList.clear()\n\n  return destpolygons\n}\n\nconst coplanar = (plane1, plane2) => {\n  // expect the same distance from the origin, within tolerance\n  if (Math.abs(plane1[3] - plane2[3]) < 0.00000015) {\n    return aboutEqualNormals(plane1, plane2)\n  }\n  return false\n}\n\nconst mergePolygons = (epsilon, polygons) => {\n  const polygonsPerPlane = [] // elements: [plane, [poly3...]]\n  polygons.forEach((polygon) => {\n    const mapping = polygonsPerPlane.find((element) => coplanar(element[0], poly3.plane(polygon)))\n    if (mapping) {\n      const polygons = mapping[1]\n      polygons.push(polygon)\n    } else {\n      polygonsPerPlane.push([poly3.plane(polygon), [polygon]])\n    }\n  })\n\n  let destpolygons = []\n  polygonsPerPlane.forEach((mapping) => {\n    const sourcepolygons = mapping[1]\n    const retesselayedpolygons = mergeCoplanarPolygons(sourcepolygons)\n    destpolygons = destpolygons.concat(retesselayedpolygons)\n  })\n  return destpolygons\n}\n\nmodule.exports = mergePolygons\n","const { EPS } = require('../../maths/constants')\n\nconst line2 = require('../../maths/line2')\nconst vec2 = require('../../maths/vec2')\nconst OrthoNormalBasis = require('../../maths/OrthoNormalBasis')\nconst interpolateBetween2DPointsForY = require('../../maths/utils/interpolateBetween2DPointsForY')\n\nconst { insertSorted, fnNumberSort } = require('../../utils')\n\nconst poly3 = require('../../geometries/poly3')\n\n/*\n * Retesselation for a set of COPLANAR polygons.\n * @param {poly3[]} sourcepolygons - list of polygons\n * @returns {poly3[]} new set of polygons\n */\nconst reTesselateCoplanarPolygons = (sourcepolygons) => {\n  if (sourcepolygons.length < 2) return sourcepolygons\n\n  const destpolygons = []\n  const numpolygons = sourcepolygons.length\n  const plane = poly3.plane(sourcepolygons[0])\n  const orthobasis = new OrthoNormalBasis(plane)\n  const polygonvertices2d = [] // array of array of Vector2D\n  const polygontopvertexindexes = [] // array of indexes of topmost vertex per polygon\n  const topy2polygonindexes = {}\n  const ycoordinatetopolygonindexes = {}\n\n  const ycoordinatebins = {}\n\n  // convert all polygon vertices to 2D\n  // Make a list of all encountered y coordinates\n  // And build a map of all polygons that have a vertex at a certain y coordinate:\n  const ycoordinateBinningFactor = 10 / EPS\n  for (let polygonindex = 0; polygonindex < numpolygons; polygonindex++) {\n    const poly3d = sourcepolygons[polygonindex]\n    let vertices2d = []\n    let numvertices = poly3d.vertices.length\n    let minindex = -1\n    if (numvertices > 0) {\n      let miny\n      let maxy\n      for (let i = 0; i < numvertices; i++) {\n        let pos2d = orthobasis.to2D(poly3d.vertices[i])\n        // perform binning of y coordinates: If we have multiple vertices very\n        // close to each other, give them the same y coordinate:\n        const ycoordinatebin = Math.floor(pos2d[1] * ycoordinateBinningFactor)\n        let newy\n        if (ycoordinatebin in ycoordinatebins) {\n          newy = ycoordinatebins[ycoordinatebin]\n        } else if (ycoordinatebin + 1 in ycoordinatebins) {\n          newy = ycoordinatebins[ycoordinatebin + 1]\n        } else if (ycoordinatebin - 1 in ycoordinatebins) {\n          newy = ycoordinatebins[ycoordinatebin - 1]\n        } else {\n          newy = pos2d[1]\n          ycoordinatebins[ycoordinatebin] = pos2d[1]\n        }\n        pos2d = vec2.fromValues(pos2d[0], newy)\n        vertices2d.push(pos2d)\n        const y = pos2d[1]\n        if ((i === 0) || (y < miny)) {\n          miny = y\n          minindex = i\n        }\n        if ((i === 0) || (y > maxy)) {\n          maxy = y\n        }\n        if (!(y in ycoordinatetopolygonindexes)) {\n          ycoordinatetopolygonindexes[y] = {}\n        }\n        ycoordinatetopolygonindexes[y][polygonindex] = true\n      }\n      if (miny >= maxy) {\n        // degenerate polygon, all vertices have same y coordinate. Just ignore it from now:\n        vertices2d = []\n        numvertices = 0\n        minindex = -1\n      } else {\n        if (!(miny in topy2polygonindexes)) {\n          topy2polygonindexes[miny] = []\n        }\n        topy2polygonindexes[miny].push(polygonindex)\n      }\n    } // if(numvertices > 0)\n    // reverse the vertex order:\n    vertices2d.reverse()\n    minindex = numvertices - minindex - 1\n    polygonvertices2d.push(vertices2d)\n    polygontopvertexindexes.push(minindex)\n  }\n  const ycoordinates = []\n  for (const ycoordinate in ycoordinatetopolygonindexes) ycoordinates.push(ycoordinate)\n  ycoordinates.sort(fnNumberSort)\n\n  // Now we will iterate over all y coordinates, from lowest to highest y coordinate\n  // activepolygons: source polygons that are 'active', i.e. intersect with our y coordinate\n  //   Is sorted so the polygons are in left to right order\n  // Each element in activepolygons has these properties:\n  //        polygonindex: the index of the source polygon (i.e. an index into the sourcepolygons\n  //                      and polygonvertices2d arrays)\n  //        leftvertexindex: the index of the vertex at the left side of the polygon (lowest x)\n  //                         that is at or just above the current y coordinate\n  //        rightvertexindex: dito at right hand side of polygon\n  //        topleft, bottomleft: coordinates of the left side of the polygon crossing the current y coordinate\n  //        topright, bottomright: coordinates of the right hand side of the polygon crossing the current y coordinate\n  let activepolygons = []\n  let prevoutpolygonrow = []\n  for (let yindex = 0; yindex < ycoordinates.length; yindex++) {\n    const newoutpolygonrow = []\n    const ycoordinateasstring = ycoordinates[yindex]\n    const ycoordinate = Number(ycoordinateasstring)\n\n    // update activepolygons for this y coordinate:\n    // - Remove any polygons that end at this y coordinate\n    // - update leftvertexindex and rightvertexindex (which point to the current vertex index\n    //   at the the left and right side of the polygon\n    // Iterate over all polygons that have a corner at this y coordinate:\n    const polygonindexeswithcorner = ycoordinatetopolygonindexes[ycoordinateasstring]\n    for (let activepolygonindex = 0; activepolygonindex < activepolygons.length; ++activepolygonindex) {\n      const activepolygon = activepolygons[activepolygonindex]\n      const polygonindex = activepolygon.polygonindex\n      if (polygonindexeswithcorner[polygonindex]) {\n        // this active polygon has a corner at this y coordinate:\n        const vertices2d = polygonvertices2d[polygonindex]\n        const numvertices = vertices2d.length\n        let newleftvertexindex = activepolygon.leftvertexindex\n        let newrightvertexindex = activepolygon.rightvertexindex\n        // See if we need to increase leftvertexindex or decrease rightvertexindex:\n        while (true) {\n          let nextleftvertexindex = newleftvertexindex + 1\n          if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0\n          if (vertices2d[nextleftvertexindex][1] !== ycoordinate) break\n          newleftvertexindex = nextleftvertexindex\n        }\n        let nextrightvertexindex = newrightvertexindex - 1\n        if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1\n        if (vertices2d[nextrightvertexindex][1] === ycoordinate) {\n          newrightvertexindex = nextrightvertexindex\n        }\n        if ((newleftvertexindex !== activepolygon.leftvertexindex) && (newleftvertexindex === newrightvertexindex)) {\n          // We have increased leftvertexindex or decreased rightvertexindex, and now they point to the same vertex\n          // This means that this is the bottom point of the polygon. We'll remove it:\n          activepolygons.splice(activepolygonindex, 1)\n          --activepolygonindex\n        } else {\n          activepolygon.leftvertexindex = newleftvertexindex\n          activepolygon.rightvertexindex = newrightvertexindex\n          activepolygon.topleft = vertices2d[newleftvertexindex]\n          activepolygon.topright = vertices2d[newrightvertexindex]\n          let nextleftvertexindex = newleftvertexindex + 1\n          if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0\n          activepolygon.bottomleft = vertices2d[nextleftvertexindex]\n          let nextrightvertexindex = newrightvertexindex - 1\n          if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1\n          activepolygon.bottomright = vertices2d[nextrightvertexindex]\n        }\n      } // if polygon has corner here\n    } // for activepolygonindex\n    let nextycoordinate\n    if (yindex >= ycoordinates.length - 1) {\n      // last row, all polygons must be finished here:\n      activepolygons = []\n      nextycoordinate = null\n    } else { // yindex < ycoordinates.length-1\n      nextycoordinate = Number(ycoordinates[yindex + 1])\n      const middleycoordinate = 0.5 * (ycoordinate + nextycoordinate)\n      // update activepolygons by adding any polygons that start here:\n      const startingpolygonindexes = topy2polygonindexes[ycoordinateasstring]\n      for (const polygonindexKey in startingpolygonindexes) {\n        const polygonindex = startingpolygonindexes[polygonindexKey]\n        const vertices2d = polygonvertices2d[polygonindex]\n        const numvertices = vertices2d.length\n        const topvertexindex = polygontopvertexindexes[polygonindex]\n        // the top of the polygon may be a horizontal line. In that case topvertexindex can point to any point on this line.\n        // Find the left and right topmost vertices which have the current y coordinate:\n        let topleftvertexindex = topvertexindex\n        while (true) {\n          let i = topleftvertexindex + 1\n          if (i >= numvertices) i = 0\n          if (vertices2d[i][1] !== ycoordinate) break\n          if (i === topvertexindex) break // should not happen, but just to prevent endless loops\n          topleftvertexindex = i\n        }\n        let toprightvertexindex = topvertexindex\n        while (true) {\n          let i = toprightvertexindex - 1\n          if (i < 0) i = numvertices - 1\n          if (vertices2d[i][1] !== ycoordinate) break\n          if (i === topleftvertexindex) break // should not happen, but just to prevent endless loops\n          toprightvertexindex = i\n        }\n        let nextleftvertexindex = topleftvertexindex + 1\n        if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0\n        let nextrightvertexindex = toprightvertexindex - 1\n        if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1\n        const newactivepolygon = {\n          polygonindex: polygonindex,\n          leftvertexindex: topleftvertexindex,\n          rightvertexindex: toprightvertexindex,\n          topleft: vertices2d[topleftvertexindex],\n          topright: vertices2d[toprightvertexindex],\n          bottomleft: vertices2d[nextleftvertexindex],\n          bottomright: vertices2d[nextrightvertexindex]\n        }\n        insertSorted(activepolygons, newactivepolygon, (el1, el2) => {\n          const x1 = interpolateBetween2DPointsForY(el1.topleft, el1.bottomleft, middleycoordinate)\n          const x2 = interpolateBetween2DPointsForY(el2.topleft, el2.bottomleft, middleycoordinate)\n          if (x1 > x2) return 1\n          if (x1 < x2) return -1\n          return 0\n        })\n      } // for(let polygonindex in startingpolygonindexes)\n    } //  yindex < ycoordinates.length-1\n    // if( (yindex === ycoordinates.length-1) || (nextycoordinate - ycoordinate > EPS) )\n    // FIXME : what ???\n\n    // Now activepolygons is up to date\n    // Build the output polygons for the next row in newoutpolygonrow:\n    for (const activepolygonKey in activepolygons) {\n      const activepolygon = activepolygons[activepolygonKey]\n\n      let x = interpolateBetween2DPointsForY(activepolygon.topleft, activepolygon.bottomleft, ycoordinate)\n      const topleft = vec2.fromValues(x, ycoordinate)\n      x = interpolateBetween2DPointsForY(activepolygon.topright, activepolygon.bottomright, ycoordinate)\n      const topright = vec2.fromValues(x, ycoordinate)\n      x = interpolateBetween2DPointsForY(activepolygon.topleft, activepolygon.bottomleft, nextycoordinate)\n      const bottomleft = vec2.fromValues(x, nextycoordinate)\n      x = interpolateBetween2DPointsForY(activepolygon.topright, activepolygon.bottomright, nextycoordinate)\n      const bottomright = vec2.fromValues(x, nextycoordinate)\n      const outpolygon = {\n        topleft: topleft,\n        topright: topright,\n        bottomleft: bottomleft,\n        bottomright: bottomright,\n        leftline: line2.fromPoints(line2.create(), topleft, bottomleft),\n        rightline: line2.fromPoints(line2.create(), bottomright, topright)\n      }\n      if (newoutpolygonrow.length > 0) {\n        const prevoutpolygon = newoutpolygonrow[newoutpolygonrow.length - 1]\n        const d1 = vec2.distance(outpolygon.topleft, prevoutpolygon.topright)\n        const d2 = vec2.distance(outpolygon.bottomleft, prevoutpolygon.bottomright)\n        if ((d1 < EPS) && (d2 < EPS)) {\n          // we can join this polygon with the one to the left:\n          outpolygon.topleft = prevoutpolygon.topleft\n          outpolygon.leftline = prevoutpolygon.leftline\n          outpolygon.bottomleft = prevoutpolygon.bottomleft\n          newoutpolygonrow.splice(newoutpolygonrow.length - 1, 1)\n        }\n      }\n      newoutpolygonrow.push(outpolygon)\n    } // for(activepolygon in activepolygons)\n    if (yindex > 0) {\n      // try to match the new polygons against the previous row:\n      const prevcontinuedindexes = {}\n      const matchedindexes = {}\n      for (let i = 0; i < newoutpolygonrow.length; i++) {\n        const thispolygon = newoutpolygonrow[i]\n        for (let ii = 0; ii < prevoutpolygonrow.length; ii++) {\n          if (!matchedindexes[ii]) { // not already processed?\n            // We have a match if the sidelines are equal or if the top coordinates\n            // are on the sidelines of the previous polygon\n            const prevpolygon = prevoutpolygonrow[ii]\n            if (vec2.distance(prevpolygon.bottomleft, thispolygon.topleft) < EPS) {\n              if (vec2.distance(prevpolygon.bottomright, thispolygon.topright) < EPS) {\n                // Yes, the top of this polygon matches the bottom of the previous:\n                matchedindexes[ii] = true\n                // Now check if the joined polygon would remain convex:\n                const v1 = line2.direction(thispolygon.leftline)\n                const v2 = line2.direction(prevpolygon.leftline)\n                const d1 = v1[0] - v2[0]\n\n                const v3 = line2.direction(thispolygon.rightline)\n                const v4 = line2.direction(prevpolygon.rightline)\n                const d2 = v3[0] - v4[0]\n\n                const leftlinecontinues = Math.abs(d1) < EPS\n                const rightlinecontinues = Math.abs(d2) < EPS\n                const leftlineisconvex = leftlinecontinues || (d1 >= 0)\n                const rightlineisconvex = rightlinecontinues || (d2 >= 0)\n                if (leftlineisconvex && rightlineisconvex) {\n                  // yes, both sides have convex corners:\n                  // This polygon will continue the previous polygon\n                  thispolygon.outpolygon = prevpolygon.outpolygon\n                  thispolygon.leftlinecontinues = leftlinecontinues\n                  thispolygon.rightlinecontinues = rightlinecontinues\n                  prevcontinuedindexes[ii] = true\n                }\n                break\n              }\n            }\n          } // if(!prevcontinuedindexes[ii])\n        } // for ii\n      } // for i\n      for (let ii = 0; ii < prevoutpolygonrow.length; ii++) {\n        if (!prevcontinuedindexes[ii]) {\n          // polygon ends here\n          // Finish the polygon with the last point(s):\n          const prevpolygon = prevoutpolygonrow[ii]\n          prevpolygon.outpolygon.rightpoints.push(prevpolygon.bottomright)\n          if (vec2.distance(prevpolygon.bottomright, prevpolygon.bottomleft) > EPS) {\n            // polygon ends with a horizontal line:\n            prevpolygon.outpolygon.leftpoints.push(prevpolygon.bottomleft)\n          }\n          // reverse the left half so we get a counterclockwise circle:\n          prevpolygon.outpolygon.leftpoints.reverse()\n          const points2d = prevpolygon.outpolygon.rightpoints.concat(prevpolygon.outpolygon.leftpoints)\n          const vertices3d = points2d.map((point2d) => orthobasis.to3D(point2d))\n          const polygon = poly3.fromPointsAndPlane(vertices3d, plane) // TODO support shared\n\n          // if we let empty polygon out, next retesselate will crash\n          if (polygon.vertices.length) destpolygons.push(polygon)\n        }\n      }\n    } // if(yindex > 0)\n    for (let i = 0; i < newoutpolygonrow.length; i++) {\n      const thispolygon = newoutpolygonrow[i]\n      if (!thispolygon.outpolygon) {\n        // polygon starts here:\n        thispolygon.outpolygon = {\n          leftpoints: [],\n          rightpoints: []\n        }\n        thispolygon.outpolygon.leftpoints.push(thispolygon.topleft)\n        if (vec2.distance(thispolygon.topleft, thispolygon.topright) > EPS) {\n          // we have a horizontal line at the top:\n          thispolygon.outpolygon.rightpoints.push(thispolygon.topright)\n        }\n      } else {\n        // continuation of a previous row\n        if (!thispolygon.leftlinecontinues) {\n          thispolygon.outpolygon.leftpoints.push(thispolygon.topleft)\n        }\n        if (!thispolygon.rightlinecontinues) {\n          thispolygon.outpolygon.rightpoints.push(thispolygon.topright)\n        }\n      }\n    }\n    prevoutpolygonrow = newoutpolygonrow\n  } // for yindex\n  return destpolygons\n}\n\nmodule.exports = reTesselateCoplanarPolygons\n","const geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst aboutEqualNormals = require('../../maths/utils/aboutEqualNormals')\n\nconst reTesselateCoplanarPolygons = require('./reTesselateCoplanarPolygons')\n\nconst coplanar = (plane1, plane2) => {\n  // expect the same distance from the origin, within tolerance\n  if (Math.abs(plane1[3] - plane2[3]) < 0.00000015) {\n    return aboutEqualNormals(plane1, plane2)\n  }\n  return false\n}\n\n/*\n  After boolean operations all coplanar polygon fragments are joined by a retesselating\n  operation. geom3.reTesselate(geom).\n  Retesselation is done through a linear sweep over the polygon surface.\n  The sweep line passes over the y coordinates of all vertices in the polygon.\n  Polygons are split at each sweep line, and the fragments are joined horizontally and vertically into larger polygons\n  (making sure that we will end up with convex polygons).\n*/\nconst retessellate = (geometry) => {\n  if (geometry.isRetesselated) {\n    return geometry\n  }\n\n  const polygons = geom3.toPolygons(geometry)\n  const polygonsPerPlane = [] // elements: [plane, [poly3...]]\n  polygons.forEach((polygon) => {\n    const mapping = polygonsPerPlane.find((element) => coplanar(element[0], poly3.plane(polygon)))\n    if (mapping) {\n      const polygons = mapping[1]\n      polygons.push(polygon)\n    } else {\n      polygonsPerPlane.push([poly3.plane(polygon), [polygon]])\n    }\n  })\n\n  let destpolygons = []\n  polygonsPerPlane.forEach((mapping) => {\n    const sourcepolygons = mapping[1]\n    const retesselayedpolygons = reTesselateCoplanarPolygons(sourcepolygons)\n    destpolygons = destpolygons.concat(retesselayedpolygons)\n  })\n\n  const result = geom3.create(destpolygons)\n  result.isRetesselated = true\n\n  return result\n}\n\nmodule.exports = retessellate\n","const flatten = require('../../utils/flatten')\n\nconst vec2 = require('../../maths/vec2')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst snapPolygons = require('./snapPolygons')\n\nconst snapPath2 = (geometry) => {\n  const epsilon = measureEpsilon(geometry)\n  const points = path2.toPoints(geometry)\n  const newpoints = points.map((point) => vec2.snap(vec2.create(), point, epsilon))\n  // snap can produce duplicate points, remove those\n  return path2.create(newpoints)\n}\n\nconst snapGeom2 = (geometry) => {\n  const epsilon = measureEpsilon(geometry)\n  const sides = geom2.toSides(geometry)\n  let newsides = sides.map((side) => [vec2.snap(vec2.create(), side[0], epsilon), vec2.snap(vec2.create(), side[1], epsilon)])\n  // snap can produce sides with zero (0) length, remove those\n  newsides = newsides.filter((side) => !vec2.equals(side[0], side[1]))\n  return geom2.create(newsides)\n}\n\nconst snapGeom3 = (geometry) => {\n  const epsilon = measureEpsilon(geometry)\n  const polygons = geom3.toPolygons(geometry)\n  const newpolygons = snapPolygons(epsilon, polygons)\n  return geom3.create(newpolygons)\n}\n\n/**\n * Snap the given geometries to the overall precision (epsilon) of the geometry.\n * @see measurements.measureEpsilon()\n * @param {...Object} geometries - the geometries to snap\n * @return {Object|Array} the snapped geometry, or a list of snapped geometries\n * @alias module:modeling/modifiers.snap\n */\nconst snap = (...geometries) => {\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n  const results = geometries.map((geometry) => {\n    if (path2.isA(geometry)) return snapPath2(geometry)\n    if (geom2.isA(geometry)) return snapGeom2(geometry)\n    if (geom3.isA(geometry)) return snapGeom3(geometry)\n    return geometry\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = snap\n","const vec3 = require('../../maths/vec3')\n\nconst poly3 = require('../../geometries/poly3')\n\nconst isValidPoly3 = (epsilon, polygon) => {\n  const area = Math.abs(poly3.measureArea(polygon))\n  return (Number.isFinite(area) && area > epsilon)\n}\n\n/*\n * Snap the given list of polygons to the epsilon.\n */\nconst snapPolygons = (epsilon, polygons) => {\n  let newpolygons = polygons.map((polygon) => {\n    const snapvertices = polygon.vertices.map((vertice) => vec3.snap(vec3.create(), vertice, epsilon))\n    // only retain unique vertices\n    const newvertices = []\n    for (let i = 0; i < snapvertices.length; i++) {\n      const j = (i + 1) % snapvertices.length\n      if (!vec3.equals(snapvertices[i], snapvertices[j])) newvertices.push(snapvertices[i])\n    }\n    const newpolygon = poly3.create(newvertices)\n    if (polygon.color) newpolygon.color = polygon.color\n    return newpolygon\n  })\n  // snap can produce polygons with zero (0) area, remove those\n  const epsilonArea = (epsilon * epsilon * Math.sqrt(3) / 4)\n  newpolygons = newpolygons.filter((polygon) => isValidPoly3(epsilonArea, polygon))\n  return newpolygons\n}\n\nmodule.exports = snapPolygons\n","const vec3 = require('../../maths/vec3')\nconst poly3 = require('../../geometries/poly3')\n\nconst triangulatePolygon = (epsilon, polygon, triangles) => {\n  const nv = polygon.vertices.length\n  if (nv > 3) {\n    if (nv > 4) {\n      // split the polygon using a midpoint\n      const midpoint = [0, 0, 0]\n      polygon.vertices.forEach((vertice) => vec3.add(midpoint, midpoint, vertice))\n      vec3.snap(midpoint, vec3.divide(midpoint, midpoint, [nv, nv, nv]), epsilon)\n      for (let i = 0; i < nv; i++) {\n        const poly = poly3.create([midpoint, polygon.vertices[i], polygon.vertices[(i + 1) % nv]])\n        if (polygon.color) poly.color = polygon.color\n        triangles.push(poly)\n      }\n      return\n    }\n    // exactly 4 vertices, use simple triangulation\n    const poly0 = poly3.create([polygon.vertices[0], polygon.vertices[1], polygon.vertices[2]])\n    const poly1 = poly3.create([polygon.vertices[0], polygon.vertices[2], polygon.vertices[3]])\n    if (polygon.color) {\n      poly0.color = polygon.color\n      poly1.color = polygon.color\n    }\n    triangles.push(poly0, poly1)\n    return\n  }\n  // exactly 3 vertices, so return the original\n  triangles.push(polygon)\n}\n\n/*\n * Convert the given polygons into a list of triangles (polygons with 3 vertices).\n * NOTE: this is possible because poly3 is CONVEX by definition\n */\nconst triangulatePolygons = (epsilon, polygons) => {\n  const triangles = []\n  polygons.forEach((polygon) => {\n    triangulatePolygon(epsilon, polygon, triangles)\n  })\n  return triangles\n}\n\nmodule.exports = triangulatePolygons\n","const flatten = require('../../utils/flatten')\nconst padArrayToLength = require('../../utils/padArrayToLength')\nconst measureAggregateBoundingBox = require('../../measurements/measureAggregateBoundingBox')\nconst { translate } = require('./translate')\n\nconst validateOptions = (options) => {\n  if (!Array.isArray(options.modes) || options.modes.length > 3) throw new Error('align(): modes must be an array of length <= 3')\n  options.modes = padArrayToLength(options.modes, 'none', 3)\n  if (options.modes.filter((mode) => ['center', 'max', 'min', 'none'].includes(mode)).length !== 3) throw new Error('align(): all modes must be one of \"center\", \"max\" or \"min\"')\n\n  if (!Array.isArray(options.relativeTo) || options.relativeTo.length > 3) throw new Error('align(): relativeTo must be an array of length <= 3')\n  options.relativeTo = padArrayToLength(options.relativeTo, 0, 3)\n  if (options.relativeTo.filter((alignVal) => (Number.isFinite(alignVal) || alignVal == null)).length !== 3) throw new Error('align(): all relativeTo values must be a number, or null.')\n\n  if (typeof options.grouped !== 'boolean') throw new Error('align(): grouped must be a boolean value.')\n\n  return options\n}\n\nconst populateRelativeToFromBounds = (relativeTo, modes, bounds) => {\n  for (let i = 0; i < 3; i++) {\n    if (relativeTo[i] == null) {\n      if (modes[i] === 'center') {\n        relativeTo[i] = (bounds[0][i] + bounds[1][i]) / 2\n      } else if (modes[i] === 'max') {\n        relativeTo[i] = bounds[1][i]\n      } else if (modes[i] === 'min') {\n        relativeTo[i] = bounds[0][i]\n      }\n    }\n  }\n  return relativeTo\n}\n\nconst alignGeometries = (geometry, modes, relativeTo) => {\n  const bounds = measureAggregateBoundingBox(geometry)\n  const translation = [0, 0, 0]\n  for (let i = 0; i < 3; i++) {\n    if (modes[i] === 'center') {\n      translation[i] = relativeTo[i] - (bounds[0][i] + bounds[1][i]) / 2\n    } else if (modes[i] === 'max') {\n      translation[i] = relativeTo[i] - bounds[1][i]\n    } else if (modes[i] === 'min') {\n      translation[i] = relativeTo[i] - bounds[0][i]\n    }\n  }\n\n  return translate(translation, geometry)\n}\n\n/**\n * Align the boundaries of the given geometries using the given options.\n * @param {Object} options - options for aligning\n * @param {Array} [options.modes = ['center', 'center', 'min']] - the point on the geometries to align to for each axis. Valid options are \"center\", \"max\", \"min\", and \"none\".\n * @param {Array} [options.relativeTo = [0,0,0]] - The point one each axis on which to align the geometries upon.  If the value is null, then the corresponding value from the group's bounding box is used.\n * @param {Boolean} [options.grouped = false] - if true, transform all geometries by the same amount, maintaining the relative positions to each other.\n * @param {...Object} geometries - the geometries to align\n * @return {Object|Array} the aligned geometry, or a list of aligned geometries\n * @alias module:modeling/transforms.align\n *\n * @example\n * let alignedGeometries = align({modes: ['min', 'center', 'none'], relativeTo: [10, null, 10], grouped: true }, geometries)\n */\nconst align = (options, ...geometries) => {\n  const defaults = {\n    modes: ['center', 'center', 'min'],\n    relativeTo: [0, 0, 0],\n    grouped: false\n  }\n  options = Object.assign({}, defaults, options)\n\n  options = validateOptions(options)\n  let { modes, relativeTo, grouped } = options\n  geometries = flatten(geometries)\n  if (geometries.length === 0) throw new Error('align(): No geometries were provided to act upon')\n\n  if (relativeTo.filter((val) => val == null).length) {\n    const bounds = measureAggregateBoundingBox(geometries)\n    relativeTo = populateRelativeToFromBounds(relativeTo, modes, bounds)\n  }\n  if (grouped) {\n    geometries = alignGeometries(geometries, modes, relativeTo)\n  } else {\n    geometries = geometries.map((geometry) => alignGeometries(geometry, modes, relativeTo))\n  }\n  return geometries.length === 1 ? geometries[0] : geometries\n}\n\nmodule.exports = align\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst measureBoundingBox = require('../../measurements/measureBoundingBox')\n\nconst { translate } = require('./translate')\n\nconst centerGeometry = (options, object) => {\n  const defaults = {\n    axes: [true, true, true],\n    relativeTo: [0, 0, 0]\n  }\n  const { axes, relativeTo } = Object.assign({}, defaults, options)\n\n  const bounds = measureBoundingBox(object)\n  const offset = [0, 0, 0]\n  if (axes[0]) offset[0] = relativeTo[0] - (bounds[0][0] + ((bounds[1][0] - bounds[0][0]) / 2))\n  if (axes[1]) offset[1] = relativeTo[1] - (bounds[0][1] + ((bounds[1][1] - bounds[0][1]) / 2))\n  if (axes[2]) offset[2] = relativeTo[2] - (bounds[0][2] + ((bounds[1][2] - bounds[0][2]) / 2))\n  return translate(offset, object)\n}\n\n/**\n * Center the given objects using the given options.\n * @param {Object} options - options for centering\n * @param {Array} [options.axes=[true,true,true]] - axis of which to center, true or false\n * @param {Array} [options.relativeTo=[0,0,0]] - relative point of which to center the objects\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.center\n *\n * @example\n * let myshape = center({axes: [true,false,false]}, sphere()) // center about the X axis\n */\nconst center = (options, ...objects) => {\n  const defaults = {\n    axes: [true, true, true],\n    relativeTo: [0, 0, 0]\n  // TODO: Add additional 'methods' of centering: midpoint, centroid\n  }\n  const { axes, relativeTo } = Object.assign({}, defaults, options)\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n  if (relativeTo.length !== 3) throw new Error('relativeTo must be an array of length 3')\n\n  options = { axes, relativeTo }\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return centerGeometry(options, object)\n    if (geom2.isA(object)) return centerGeometry(options, object)\n    if (geom3.isA(object)) return centerGeometry(options, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\n/**\n * Center the given objects about the X axis.\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.centerX\n */\nconst centerX = (...objects) => center({ axes: [true, false, false] }, objects)\n\n/**\n * Center the given objects about the Y axis.\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.centerY\n */\nconst centerY = (...objects) => center({ axes: [false, true, false] }, objects)\n\n/**\n * Center the given objects about the Z axis.\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.centerZ\n */\nconst centerZ = (...objects) => center({ axes: [false, false, true] }, objects)\n\nmodule.exports = {\n  center,\n  centerX,\n  centerY,\n  centerZ\n}\n","/**\n * All shapes (primitives or the results of operations) can be transformed, such as scaled or rotated.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/transforms\n * @example\n * const { center, rotateX, translate } = require('@jscad/modeling').transforms\n */\nmodule.exports = {\n  align: require('./align'),\n\n  center: require('./center').center,\n  centerX: require('./center').centerX,\n  centerY: require('./center').centerY,\n  centerZ: require('./center').centerZ,\n\n  mirror: require('./mirror').mirror,\n  mirrorX: require('./mirror').mirrorX,\n  mirrorY: require('./mirror').mirrorY,\n  mirrorZ: require('./mirror').mirrorZ,\n\n  rotate: require('./rotate').rotate,\n  rotateX: require('./rotate').rotateX,\n  rotateY: require('./rotate').rotateY,\n  rotateZ: require('./rotate').rotateZ,\n\n  scale: require('./scale').scale,\n  scaleX: require('./scale').scaleX,\n  scaleY: require('./scale').scaleY,\n  scaleZ: require('./scale').scaleZ,\n\n  transform: require('./transform'),\n\n  translate: require('./translate').translate,\n  translateX: require('./translate').translateX,\n  translateY: require('./translate').translateY,\n  translateZ: require('./translate').translateZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\nconst plane = require('../../maths/plane')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Mirror the given objects using the given options.\n * @param {Object} options - options for mirror\n * @param {Array} [options.origin=[0,0,0]] - the origin of the plane\n * @param {Array} [options.normal=[0,0,1]] - the normal vector of the plane\n * @param {...Object} objects - the objects to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirror\n *\n * @example\n * let myshape = mirror({normal: [0,0,10]}, cube({center: [0,0,15], radius: [20, 25, 5]}))\n */\nconst mirror = (options, ...objects) => {\n  const defaults = {\n    origin: [0, 0, 0],\n    normal: [0, 0, 1] // Z axis\n  }\n  const { origin, normal } = Object.assign({}, defaults, options)\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  const planeOfMirror = plane.fromNormalAndPoint(plane.create(), normal, origin)\n  // verify the plane, i.e. check that the given normal was valid\n  if (Number.isNaN(planeOfMirror[0])) {\n    throw new Error('the given origin and normal do not define a proper plane')\n  }\n\n  const matrix = mat4.mirrorByPlane(mat4.create(), planeOfMirror)\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return path2.transform(matrix, object)\n    if (geom2.isA(object)) return geom2.transform(matrix, object)\n    if (geom3.isA(object)) return geom3.transform(matrix, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\n/**\n * Mirror the given objects about the X axis.\n * @param {...Object} objects - the objects to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirrorX\n */\nconst mirrorX = (...objects) => mirror({ normal: [1, 0, 0] }, objects)\n\n/**\n * Mirror the given objects about the Y axis.\n * @param {...Object} objects - the geometries to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirrorY\n */\nconst mirrorY = (...objects) => mirror({ normal: [0, 1, 0] }, objects)\n\n/**\n * Mirror the given objects about the Z axis.\n * @param {...Object} objects - the geometries to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirrorZ\n */\nconst mirrorZ = (...objects) => mirror({ normal: [0, 0, 1] }, objects)\n\nmodule.exports = {\n  mirror,\n  mirrorX,\n  mirrorY,\n  mirrorZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Rotate the given objects using the given options.\n * @param {Array} angles - angle (RADIANS) of rotations about X, Y, and Z axis\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotate\n *\n * @example\n * const newsphere = rotate([Math.PI / 4, 0, 0], sphere())\n */\nconst rotate = (angles, ...objects) => {\n  if (!Array.isArray(angles)) throw new Error('angles must be an array')\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  // adjust the angles if necessary\n  angles = angles.slice() // don't modify the original\n  while (angles.length < 3) angles.push(0)\n\n  const yaw = angles[2]\n  const pitch = angles[1]\n  const roll = angles[0]\n\n  const matrix = mat4.fromTaitBryanRotation(mat4.create(), yaw, pitch, roll)\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return path2.transform(matrix, object)\n    if (geom2.isA(object)) return geom2.transform(matrix, object)\n    if (geom3.isA(object)) return geom3.transform(matrix, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\n/**\n * Rotate the given objects about the X axis, using the given options.\n * @param {Number} angle - angle (RADIANS) of rotations about X\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotateX\n */\nconst rotateX = (angle, ...objects) => rotate([angle, 0, 0], objects)\n\n/**\n * Rotate the given objects about the Y axis, using the given options.\n * @param {Number} angle - angle (RADIANS) of rotations about Y\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotateY\n */\nconst rotateY = (angle, ...objects) => rotate([0, angle, 0], objects)\n\n/**\n * Rotate the given objects about the Z axis, using the given options.\n * @param {Number} angle - angle (RADIANS) of rotations about Z\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotateZ\n */\nconst rotateZ = (angle, ...objects) => rotate([0, 0, angle], objects)\n\nmodule.exports = {\n  rotate,\n  rotateX,\n  rotateY,\n  rotateZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Scale the given objects using the given options.\n * @param {Array} factors - X, Y, Z factors by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scale\n *\n * @example\n * let myshape = scale([5, 0, 10], sphere())\n */\nconst scale = (factors, ...objects) => {\n  if (!Array.isArray(factors)) throw new Error('factors must be an array')\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  // adjust the factors if necessary\n  factors = factors.slice() // don't modify the original\n  while (factors.length < 3) factors.push(1)\n\n  if (factors[0] <= 0 || factors[1] <= 0 || factors[2] <= 0) throw new Error('factors must be positive')\n\n  const matrix = mat4.fromScaling(mat4.create(), factors)\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return path2.transform(matrix, object)\n    if (geom2.isA(object)) return geom2.transform(matrix, object)\n    if (geom3.isA(object)) return geom3.transform(matrix, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\n/**\n * Scale the given objects about the X axis using the given options.\n * @param {Number} factor - X factor by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scaleX\n */\nconst scaleX = (factor, ...objects) => scale([factor, 1, 1], objects)\n\n/**\n * Scale the given objects about the Y axis using the given options.\n * @param {Number} factor - Y factor by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scaleY\n */\nconst scaleY = (factor, ...objects) => scale([1, factor, 1], objects)\n\n/**\n * Scale the given objects about the Z axis using the given options.\n * @param {Number} factor - Z factor by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scaleZ\n */\nconst scaleZ = (factor, ...objects) => scale([1, 1, factor], objects)\n\nmodule.exports = {\n  scale,\n  scaleX,\n  scaleY,\n  scaleZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Transform the given objects using the given matrix.\n * @param {mat4} matrix - a transformation matrix\n * @param {...Object} objects - the objects to transform\n * @return {Object|Array} the transformed object, or a list of transformed objects\n * @alias module:modeling/transforms.transform\n *\n * @example\n * const newsphere = transform(mat4.rotateX(Math.PI/4), sphere())\n */\nconst transform = (matrix, ...objects) => {\n  // TODO how to check that the matrix is REAL?\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return path2.transform(matrix, object)\n    if (geom2.isA(object)) return geom2.transform(matrix, object)\n    if (geom3.isA(object)) return geom3.transform(matrix, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = transform\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Translate the given objects using the given options.\n * @param {Array} offset - offset (vector) of which to translate the objects\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translate\n *\n * @example\n * const newsphere = translate([5, 0, 10], sphere())\n */\nconst translate = (offset, ...objects) => {\n  if (!Array.isArray(offset)) throw new Error('offset must be an array')\n\n  objects = flatten(objects)\n  if (objects.length === 0) throw new Error('wrong number of arguments')\n\n  // adjust the offset if necessary\n  offset = offset.slice() // don't modify the original\n  while (offset.length < 3) offset.push(0)\n\n  const matrix = mat4.fromTranslation(mat4.create(), offset)\n\n  const results = objects.map((object) => {\n    if (path2.isA(object)) return path2.transform(matrix, object)\n    if (geom2.isA(object)) return geom2.transform(matrix, object)\n    if (geom3.isA(object)) return geom3.transform(matrix, object)\n    return object\n  })\n  return results.length === 1 ? results[0] : results\n}\n\n/**\n * Translate the given objects along the X axis using the given options.\n * @param {Number} offset - X offset of which to translate the objects\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translateX\n */\nconst translateX = (offset, ...objects) => translate([offset, 0, 0], objects)\n\n/**\n * Translate the given objects along the Y axis using the given options.\n * @param {Number} offset - Y offset of which to translate the geometries\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translateY\n */\nconst translateY = (offset, ...objects) => translate([0, offset, 0], objects)\n\n/**\n * Translate the given objects along the Z axis using the given options.\n * @param {Number} offset - Z offset of which to translate the geometries\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translateZ\n */\nconst translateZ = (offset, ...objects) => translate([0, 0, offset], objects)\n\nmodule.exports = {\n  translate,\n  translateX,\n  translateY,\n  translateZ\n}\n","const { EPS } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\n\nconst path2 = require('../geometries/path2')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an arc in two dimensional space where all points are at the same distance from the center.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of arc\n * @param {Number} [options.radius=1] - radius of arc\n * @param {Number} [options.startAngle=0] - starting angle of the arc, in radians\n * @param {Number} [options.endAngle=Math.PI*2] - ending angle of the arc, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @param {Boolean} [options.makeTangent=false] - adds line segments at both ends of the arc to ensure that the gradients at the edges are tangent\n * @returns {path2} new 2D path\n * @alias module:modeling/primitives.arc\n */\nconst arc = (options) => {\n  const defaults = {\n    center: [0, 0],\n    radius: 1,\n    startAngle: 0,\n    endAngle: (Math.PI * 2),\n    makeTangent: false,\n    segments: 32\n  }\n  let { center, radius, startAngle, endAngle, makeTangent, segments } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n  if (!isGT(radius, 0)) throw new Error('radius must be greater than zero')\n  if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n  if (!isGTE(endAngle, 0)) throw new Error('endAngle must be positive')\n  if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n  startAngle = startAngle % (Math.PI * 2)\n  endAngle = endAngle % (Math.PI * 2)\n\n  let rotation = (Math.PI * 2)\n  if (startAngle < endAngle) {\n    rotation = endAngle - startAngle\n  }\n  if (startAngle > endAngle) {\n    rotation = endAngle + ((Math.PI * 2) - startAngle)\n  }\n\n  const minangle = Math.acos(((radius * radius) + (radius * radius) - (EPS * EPS)) / (2 * radius * radius))\n\n  const centerv = vec2.clone(center)\n  let point\n  const pointArray = []\n  if (rotation < minangle) {\n    // there is no rotation, just a single point\n    point = vec2.fromAngleRadians(vec2.create(), startAngle)\n    vec2.scale(point, point, radius)\n    vec2.add(point, point, centerv)\n    pointArray.push(point)\n  } else {\n    // note: add one additional step to acheive full rotation\n    const numsteps = Math.max(1, Math.floor(segments * (rotation / (Math.PI * 2)))) + 1\n    let edgestepsize = numsteps * 0.5 / rotation // step size for half a degree\n    if (edgestepsize > 0.25) edgestepsize = 0.25\n\n    const totalsteps = makeTangent ? (numsteps + 2) : numsteps\n    for (let i = 0; i <= totalsteps; i++) {\n      let step = i\n      if (makeTangent) {\n        step = (i - 1) * (numsteps - 2 * edgestepsize) / numsteps + edgestepsize\n        if (step < 0) step = 0\n        if (step > numsteps) step = numsteps\n      }\n      const angle = startAngle + (step * (rotation / numsteps))\n      point = vec2.fromAngleRadians(vec2.create(), angle)\n      vec2.scale(point, point, radius)\n      vec2.add(point, point, centerv)\n      pointArray.push(point)\n    }\n  }\n  return path2.fromPoints({ closed: false }, pointArray)\n}\n\nmodule.exports = arc\n","const ellipse = require('./ellipse')\n\nconst { isGT } = require('./commonChecks')\n\n/**\n * Construct a circle in two dimensional space where all points are at the same distance from the center.\n * @see [ellipse]{@link module:modeling/primitives.ellipse} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of circle\n * @param {Number} [options.radius=1] - radius of circle\n * @param {Number} [options.startAngle=0] - start angle of circle, in radians\n * @param {Number} [options.endAngle=(Math.PI * 2)] - end angle of circle, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.circle\n * @example\n * let myshape = circle({radius: 10})\n */\nconst circle = (options) => {\n  const defaults = {\n    center: [0, 0],\n    radius: 1,\n    startAngle: 0,\n    endAngle: (Math.PI * 2),\n    segments: 32\n  }\n  let { center, radius, startAngle, endAngle, segments } = Object.assign({}, defaults, options)\n\n  if (!isGT(radius, 0)) throw new Error('radius must be greater than zero')\n\n  radius = [radius, radius]\n\n  return ellipse({ center, radius, startAngle, endAngle, segments })\n}\n\nmodule.exports = circle\n","// verify that the array has the given dimension, and contains Number values\nconst isNumberArray = (array, dimension) => {\n  if (Array.isArray(array) && array.length >= dimension) {\n    return array.every((n) => Number.isFinite(n))\n  }\n  return false\n}\n\n// verify that the value is a Number greater than the constant\nconst isGT = (value, constant) => (Number.isFinite(value) && value > constant)\n\n// verify that the value is a Number greater than or equal to the constant\nconst isGTE = (value, constant) => (Number.isFinite(value) && value >= constant)\n\nmodule.exports = {\n  isNumberArray,\n  isGT,\n  isGTE\n}\n","const cuboid = require('./cuboid')\n\nconst { isGT } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned solid cube in three dimensional space with six square faces.\n * @see [cuboid]{@link module:modeling/primitives.cuboid} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cube\n * @param {Number} [options.size=2] - dimension of cube\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.cube\n * @example\n * let myshape = cube({size: 10})\n */\nconst cube = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    size: 2\n  }\n  let { center, size } = Object.assign({}, defaults, options)\n\n  if (!isGT(size, 0)) throw new Error('size must be greater than zero')\n\n  size = [size, size, size]\n\n  return cuboid({ center, size })\n}\n\nmodule.exports = cube\n","const geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned solid cuboid in three dimensional space.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cuboid\n * @param {Array} [options.size=[2,2,2]] - dimensions of cuboid; width, depth, height\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.cuboid\n *\n * @example\n * let myshape = cuboid(size: [5, 10, 5]})\n */\nconst cuboid = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    size: [2, 2, 2]\n  }\n  const { center, size } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n  if (!isNumberArray(size, 3)) throw new Error('size must be an array of width, depth and height values')\n  if (!size.every((n) => n > 0)) throw new Error('size values must be greater than zero')\n\n  const result = geom3.create(\n    // adjust a basic shape to size\n    [\n      [[0, 4, 6, 2], [-1, 0, 0]],\n      [[1, 3, 7, 5], [+1, 0, 0]],\n      [[0, 1, 5, 4], [0, -1, 0]],\n      [[2, 6, 7, 3], [0, +1, 0]],\n      [[0, 2, 3, 1], [0, 0, -1]],\n      [[4, 5, 7, 6], [0, 0, +1]]\n    ].map((info) => {\n      const points = info[0].map((i) => {\n        const pos = [\n          center[0] + (size[0] / 2) * (2 * !!(i & 1) - 1),\n          center[1] + (size[1] / 2) * (2 * !!(i & 2) - 1),\n          center[2] + (size[2] / 2) * (2 * !!(i & 4) - 1)\n        ]\n        return pos\n      })\n      return poly3.create(points)\n    })\n  )\n  return result\n}\n\nmodule.exports = cuboid\n","const cylinderElliptic = require('./cylinderElliptic')\n\nconst { isGT } = require('./commonChecks')\n\n/**\n * Construct a Z axis-aligned cylinder in three dimensional space.\n * @see [cylinderElliptic]{@link module:modeling/primitives.cylinderElliptic} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cylinder\n * @param {Number} [options.height=2] - height of cylinder\n * @param {Number} [options.radius=1] - radius of cylinder (at both start and end)\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new geometry\n * @alias module:modeling/primitives.cylinder\n *\n * @example\n * let myshape = cylinder({height: 2, radius: 10})\n */\nconst cylinder = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    height: 2,\n    radius: 1,\n    segments: 32\n  }\n  const { center, height, radius, segments } = Object.assign({}, defaults, options)\n\n  if (!isGT(radius, 0)) throw new Error('radius must be greater than zero')\n\n  const newoptions = {\n    center,\n    height,\n    startRadius: [radius, radius],\n    endRadius: [radius, radius],\n    segments\n  }\n\n  return cylinderElliptic(newoptions)\n}\n\nmodule.exports = cylinder\n","const { EPS } = require('../maths/constants')\n\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { sin, cos } = require('../utils/trigonometry')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct a Z axis-aligned elliptic cylinder in three dimensional space.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cylinder\n * @param {Number} [options.height=2] - height of cylinder\n * @param {Array} [options.startRadius=[1,1]] - radius of rounded start, must be two dimensional array\n * @param {Number} [options.startAngle=0] - start angle of cylinder, in radians\n * @param {Array} [options.endRadius=[1,1]] - radius of rounded end, must be two dimensional array\n * @param {Number} [options.endAngle=(Math.PI * 2)] - end angle of cylinder, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new geometry\n * @alias module:modeling/primitives.cylinderElliptic\n *\n * @example\n * let myshape = cylinderElliptic({height: 2, startRadius: [10,5], endRadius: [8,3]})\n */\nconst cylinderElliptic = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    height: 2,\n    startRadius: [1, 1],\n    startAngle: 0,\n    endRadius: [1, 1],\n    endAngle: (Math.PI * 2),\n    segments: 32\n  }\n  let { center, height, startRadius, startAngle, endRadius, endAngle, segments } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n  if (!isGT(height, 0)) throw new Error('height must be greater then zero')\n  if (!isNumberArray(startRadius, 2)) throw new Error('startRadius must be an array of X and Y values')\n  if (!startRadius.every((n) => n >= 0)) throw new Error('startRadius values must be positive')\n  if (!isNumberArray(endRadius, 2)) throw new Error('endRadius must be an array of X and Y values')\n  if (!endRadius.every((n) => n >= 0)) throw new Error('endRadius values must be positive')\n  if (endRadius.every((n) => n === 0) && startRadius.every((n) => n === 0)) throw new Error('at least one radius must be positive')\n  if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n  if (!isGTE(endAngle, 0)) throw new Error('endAngle must be positive')\n  if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n  startAngle = startAngle % (Math.PI * 2)\n  endAngle = endAngle % (Math.PI * 2)\n\n  let rotation = (Math.PI * 2)\n  if (startAngle < endAngle) {\n    rotation = endAngle - startAngle\n  }\n  if (startAngle > endAngle) {\n    rotation = endAngle + ((Math.PI * 2) - startAngle)\n  }\n\n  const minradius = Math.min(startRadius[0], startRadius[1], endRadius[0], endRadius[1])\n  const minangle = Math.acos(((minradius * minradius) + (minradius * minradius) - (EPS * EPS)) /\n                            (2 * minradius * minradius))\n  if (rotation < minangle) throw new Error('startAngle and endAngle do not define a significant rotation')\n\n  const slices = Math.floor(segments * (rotation / (Math.PI * 2)))\n\n  const start = vec3.fromValues(0, 0, -(height / 2))\n  const end = vec3.fromValues(0, 0, height / 2)\n  const ray = vec3.subtract(vec3.create(), end, start)\n\n  const axisX = vec3.fromValues(1, 0, 0)\n  const axisY = vec3.fromValues(0, 1, 0)\n\n  const v1 = vec3.create()\n  const v2 = vec3.create()\n  const v3 = vec3.create()\n  const point = (stack, slice, radius) => {\n    const angle = slice * rotation + startAngle\n    vec3.scale(v1, axisX, radius[0] * cos(angle))\n    vec3.scale(v2, axisY, radius[1] * sin(angle))\n    vec3.add(v1, v1, v2)\n\n    vec3.scale(v3, ray, stack)\n    vec3.add(v3, v3, start)\n    return vec3.add(vec3.create(), v1, v3)\n  }\n\n  // adjust the points to center\n  const fromPoints = (...points) => {\n    const newpoints = points.map((point) => vec3.add(vec3.create(), point, center))\n    return poly3.create(newpoints)\n  }\n\n  const polygons = []\n  for (let i = 0; i < slices; i++) {\n    const t0 = i / slices\n    const t1 = (i + 1) / slices\n\n    if (endRadius[0] === startRadius[0] && endRadius[1] === startRadius[1]) {\n      polygons.push(fromPoints(start, point(0, t1, endRadius), point(0, t0, endRadius)))\n      polygons.push(fromPoints(point(0, t1, endRadius), point(1, t1, endRadius), point(1, t0, endRadius), point(0, t0, endRadius)))\n      polygons.push(fromPoints(end, point(1, t0, endRadius), point(1, t1, endRadius)))\n    } else {\n      if (startRadius[0] > 0 && startRadius[1] > 0) {\n        polygons.push(fromPoints(start, point(0, t1, startRadius), point(0, t0, startRadius)))\n      }\n      if (startRadius[0] > 0 || startRadius[1] > 0) {\n        polygons.push(fromPoints(point(0, t0, startRadius), point(0, t1, startRadius), point(1, t0, endRadius)))\n      }\n      if (endRadius[0] > 0 && endRadius[1] > 0) {\n        polygons.push(fromPoints(end, point(1, t0, endRadius), point(1, t1, endRadius)))\n      }\n      if (endRadius[0] > 0 || endRadius[1] > 0) {\n        polygons.push(fromPoints(point(1, t0, endRadius), point(0, t1, startRadius), point(1, t1, endRadius)))\n      }\n    }\n  }\n  if (rotation < (Math.PI * 2)) {\n    polygons.push(fromPoints(start, point(0, 0, startRadius), end))\n    polygons.push(fromPoints(point(0, 0, startRadius), point(1, 0, endRadius), end))\n    polygons.push(fromPoints(start, end, point(0, 1, startRadius)))\n    polygons.push(fromPoints(point(0, 1, startRadius), end, point(1, 1, endRadius)))\n  }\n  const result = geom3.create(polygons)\n  return result\n}\n\nmodule.exports = cylinderElliptic\n","const { EPS } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { sin, cos } = require('../utils/trigonometry')\n\nconst { isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned ellipse in two dimensional space.\n * @see https://en.wikipedia.org/wiki/Ellipse\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of ellipse\n * @param {Array} [options.radius=[1,1]] - radius of ellipse, along X and Y\n * @param {Number} [options.startAngle=0] - start angle of ellipse, in radians\n * @param {Number} [options.endAngle=(Math.PI * 2)] - end angle of ellipse, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.ellipse\n * @example\n * let myshape = ellipse({radius: [5,10]})\n */\nconst ellipse = (options) => {\n  const defaults = {\n    center: [0, 0],\n    radius: [1, 1],\n    startAngle: 0,\n    endAngle: (Math.PI * 2),\n    segments: 32\n  }\n  let { center, radius, startAngle, endAngle, segments } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n  if (!isNumberArray(radius, 2)) throw new Error('radius must be an array of X and Y values')\n  if (!radius.every((n) => n > 0)) throw new Error('radius values must be greater than zero')\n  if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n  if (!isGTE(endAngle, 0)) throw new Error('endAngle must be positive')\n  if (!isGTE(segments, 3)) throw new Error('segments must be three or more')\n\n  startAngle = startAngle % (Math.PI * 2)\n  endAngle = endAngle % (Math.PI * 2)\n\n  let rotation = (Math.PI * 2)\n  if (startAngle < endAngle) {\n    rotation = endAngle - startAngle\n  }\n  if (startAngle > endAngle) {\n    rotation = endAngle + ((Math.PI * 2) - startAngle)\n  }\n\n  const minradius = Math.min(radius[0], radius[1])\n  const minangle = Math.acos(((minradius * minradius) + (minradius * minradius) - (EPS * EPS)) /\n                            (2 * minradius * minradius))\n  if (rotation < minangle) throw new Error('startAngle and endAngle do not define a significant rotation')\n\n  segments = Math.floor(segments * (rotation / (Math.PI * 2)))\n\n  const centerv = vec2.clone(center)\n  const step = rotation / segments // radians per segment\n\n  const points = []\n  segments = (rotation < Math.PI * 2) ? segments + 1 : segments\n  for (let i = 0; i < segments; i++) {\n    const angle = (step * i) + startAngle\n    const point = vec2.fromValues(radius[0] * cos(angle), radius[1] * sin(angle))\n    vec2.add(point, centerv, point)\n    points.push(point)\n  }\n  if (rotation < Math.PI * 2) points.push(centerv)\n  return geom2.fromPoints(points)\n}\n\nmodule.exports = ellipse\n","const vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { sin, cos } = require('../utils/trigonometry')\n\nconst { isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned ellipsoid in three dimensional space.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of ellipsoid\n * @param {Array} [options.radius=[1,1,1]] - radius of ellipsoid, along X, Y and Z\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @param {Array} [options.axes] -  an array with three vectors for the x, y and z base vectors\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.ellipsoid\n *\n * @example\n * let myshape = ellipsoid({radius: [5, 10, 20]})\n*/\nconst ellipsoid = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    radius: [1, 1, 1],\n    segments: 32,\n    axes: [[1, 0, 0], [0, -1, 0], [0, 0, 1]]\n  }\n  const { center, radius, segments, axes } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n  if (!isNumberArray(radius, 3)) throw new Error('radius must be an array of X, Y and Z values')\n  if (!radius.every((n) => n > 0)) throw new Error('radius values must be greater than zero')\n  if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n  const xvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[0]), radius[0])\n  const yvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[1]), radius[1])\n  const zvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[2]), radius[2])\n\n  const qsegments = Math.round(segments / 4)\n  let prevcylinderpoint\n  const polygons = []\n  const p1 = vec3.create()\n  const p2 = vec3.create()\n  for (let slice1 = 0; slice1 <= segments; slice1++) {\n    const angle = 2 * Math.PI * slice1 / segments\n    const cylinderpoint = vec3.add(vec3.create(), vec3.scale(p1, xvector, cos(angle)), vec3.scale(p2, yvector, sin(angle)))\n    if (slice1 > 0) {\n      let prevcospitch, prevsinpitch\n      for (let slice2 = 0; slice2 <= qsegments; slice2++) {\n        const pitch = 0.5 * Math.PI * slice2 / qsegments\n        const cospitch = cos(pitch)\n        const sinpitch = sin(pitch)\n        if (slice2 > 0) {\n          let points = []\n          let point\n          point = vec3.subtract(vec3.create(), vec3.scale(p1, prevcylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n          points.push(vec3.add(point, point, center))\n          point = vec3.subtract(vec3.create(), vec3.scale(p1, cylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n          points.push(vec3.add(point, point, center))\n          if (slice2 < qsegments) {\n            point = vec3.subtract(vec3.create(), vec3.scale(p1, cylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n            points.push(vec3.add(point, point, center))\n          }\n          point = vec3.subtract(vec3.create(), vec3.scale(p1, prevcylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n          points.push(vec3.add(point, point, center))\n\n          polygons.push(poly3.create(points))\n\n          points = []\n          point = vec3.add(vec3.create(), vec3.scale(p1, prevcylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n          points.push(vec3.add(vec3.create(), center, point))\n          point = vec3.add(point, vec3.scale(p1, cylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n          points.push(vec3.add(vec3.create(), center, point))\n          if (slice2 < qsegments) {\n            point = vec3.add(point, vec3.scale(p1, cylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n            points.push(vec3.add(vec3.create(), center, point))\n          }\n          point = vec3.add(point, vec3.scale(p1, prevcylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n          points.push(vec3.add(vec3.create(), center, point))\n          points.reverse()\n\n          polygons.push(poly3.create(points))\n        }\n        prevcospitch = cospitch\n        prevsinpitch = sinpitch\n      }\n    }\n    prevcylinderpoint = cylinderpoint\n  }\n  return geom3.create(polygons)\n}\n\nmodule.exports = ellipsoid\n","const mat4 = require('../maths/mat4')\n\nconst geom3 = require('../geometries/geom3')\n\nconst polyhedron = require('./polyhedron')\n\nconst { isGT, isGTE } = require('./commonChecks')\n\n/**\n * Construct a geodesic sphere based on icosahedron symmetry.\n * @param {Object} [options] - options for construction\n * @param {Number} [options.radius=1] - target radius of sphere\n * @param {Number} [options.frequency=6] - subdivision frequency per face, multiples of 6\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.geodesicSphere\n *\n * @example\n * let myshape = geodesicSphere({radius: 15, frequency: 18})\n */\nconst geodesicSphere = (options) => {\n  const defaults = {\n    radius: 1,\n    frequency: 6\n  }\n  let { radius, frequency } = Object.assign({}, defaults, options)\n\n  if (!isGT(radius, 0)) throw new Error('radius must be greater than zero')\n  if (!isGTE(frequency, 6)) throw new Error('frequency must be six or more')\n\n  // adjust the frequency to base 6\n  frequency = Math.floor(frequency / 6)\n\n  const ci = [ // hard-coded data of icosahedron (20 faces, all triangles)\n    [0.850651, 0.000000, -0.525731],\n    [0.850651, -0.000000, 0.525731],\n    [-0.850651, -0.000000, 0.525731],\n    [-0.850651, 0.000000, -0.525731],\n    [0.000000, -0.525731, 0.850651],\n    [0.000000, 0.525731, 0.850651],\n    [0.000000, 0.525731, -0.850651],\n    [0.000000, -0.525731, -0.850651],\n    [-0.525731, -0.850651, -0.000000],\n    [0.525731, -0.850651, -0.000000],\n    [0.525731, 0.850651, 0.000000],\n    [-0.525731, 0.850651, 0.000000]]\n\n  const ti = [[0, 9, 1], [1, 10, 0], [6, 7, 0], [10, 6, 0], [7, 9, 0], [5, 1, 4], [4, 1, 9], [5, 10, 1], [2, 8, 3], [3, 11, 2], [2, 5, 4],\n    [4, 8, 2], [2, 11, 5], [3, 7, 6], [6, 11, 3], [8, 7, 3], [9, 8, 4], [11, 10, 5], [10, 11, 6], [8, 9, 7]]\n\n  const geodesicSubDivide = (p, frequency, offset) => {\n    const p1 = p[0]\n    const p2 = p[1]\n    const p3 = p[2]\n    let n = offset\n    const c = []\n    const f = []\n\n    //           p3\n    //           /\\\n    //          /__\\     frequency = 3\n    //      i  /\\  /\\\n    //        /__\\/__\\       total triangles = 9 (frequency*frequency)\n    //       /\\  /\\  /\\\n    //     0/__\\/__\\/__\\\n    //    p1 0   j      p2\n\n    for (let i = 0; i < frequency; i++) {\n      for (let j = 0; j < frequency - i; j++) {\n        const t0 = i / frequency\n        const t1 = (i + 1) / frequency\n        const s0 = j / (frequency - i)\n        const s1 = (j + 1) / (frequency - i)\n        const s2 = frequency - i - 1 ? j / (frequency - i - 1) : 1\n        const q = []\n\n        q[0] = mix3(mix3(p1, p2, s0), p3, t0)\n        q[1] = mix3(mix3(p1, p2, s1), p3, t0)\n        q[2] = mix3(mix3(p1, p2, s2), p3, t1)\n\n        // -- normalize\n        for (let k = 0; k < 3; k++) {\n          const r = Math.hypot(q[k][0], q[k][1], q[k][2])\n          for (let l = 0; l < 3; l++) {\n            q[k][l] /= r\n          }\n        }\n        c.push(q[0], q[1], q[2])\n        f.push([n, n + 1, n + 2]); n += 3\n\n        if (j < frequency - i - 1) {\n          const s3 = frequency - i - 1 ? (j + 1) / (frequency - i - 1) : 1\n          q[0] = mix3(mix3(p1, p2, s1), p3, t0)\n          q[1] = mix3(mix3(p1, p2, s3), p3, t1)\n          q[2] = mix3(mix3(p1, p2, s2), p3, t1)\n\n          // -- normalize\n          for (let k = 0; k < 3; k++) {\n            const r = Math.hypot(q[k][0], q[k][1], q[k][2])\n            for (let l = 0; l < 3; l++) {\n              q[k][l] /= r\n            }\n          }\n          c.push(q[0], q[1], q[2])\n          f.push([n, n + 1, n + 2]); n += 3\n        }\n      }\n    }\n    return { points: c, triangles: f, offset: n }\n  }\n\n  const mix3 = (a, b, f) => {\n    const _f = 1 - f\n    const c = []\n    for (let i = 0; i < 3; i++) {\n      c[i] = a[i] * _f + b[i] * f\n    }\n    return c\n  }\n\n  let points = []\n  let faces = []\n  let offset = 0\n\n  for (let i = 0; i < ti.length; i++) {\n    const g = geodesicSubDivide([ci[ti[i][0]], ci[ti[i][1]], ci[ti[i][2]]], frequency, offset)\n    points = points.concat(g.points)\n    faces = faces.concat(g.triangles)\n    offset = g.offset\n  }\n\n  let geometry = polyhedron({ points: points, faces: faces, orientation: 'inward' })\n  if (radius !== 1) geometry = geom3.transform(mat4.fromScaling(mat4.create(), [radius, radius, radius]), geometry)\n  return geometry\n}\n\nmodule.exports = geodesicSphere\n","/**\n * Primitives provide the building blocks for complex parts.\n * Each primitive is a geometrical object that can be described mathematically, and therefore precise.\n * Primitives can be logically combined, transformed, extruded, etc.\n * @module modeling/primitives\n * @example\n * const { cube, ellipse, star } = require('@jscad/modeling').primitives\n */\nmodule.exports = {\n  arc: require('./arc'),\n  circle: require('./circle'),\n  cube: require('./cube'),\n  cuboid: require('./cuboid'),\n  cylinder: require('./cylinder'),\n  cylinderElliptic: require('./cylinderElliptic'),\n  ellipse: require('./ellipse'),\n  ellipsoid: require('./ellipsoid'),\n  geodesicSphere: require('./geodesicSphere'),\n  line: require('./line'),\n  polygon: require('./polygon'),\n  polyhedron: require('./polyhedron'),\n  rectangle: require('./rectangle'),\n  roundedCuboid: require('./roundedCuboid'),\n  roundedCylinder: require('./roundedCylinder'),\n  roundedRectangle: require('./roundedRectangle'),\n  sphere: require('./sphere'),\n  square: require('./square'),\n  star: require('./star'),\n  torus: require('./torus'),\n  triangle: require('./triangle')\n}\n","const path2 = require('../geometries/path2')\n\n/**\n * Construct a new line in two dimensional space from the given points.\n * The points must be provided as an array, where each element is a 2D point.\n * @param {Array} points - array of points from which to create the path\n * @returns {path2} new 2D path\n * @alias module:modeling/primitives.line\n *\n * @example\n * let myshape = line([[10, 10], [-10, 10]])\n */\nconst line = (points) => {\n  if (!Array.isArray(points)) throw new Error('points must be an array')\n\n  return path2.fromPoints({}, points)\n}\n\nmodule.exports = line\n","const geom2 = require('../geometries/geom2')\n\n/**\n * Construct a polygon in two dimensional space from a list of points, or a list of points and paths.\n * NOTE: The ordering of points is VERY IMPORTANT.\n * @param {Object} options - options for construction\n * @param {Array} options.points - points of the polygon : either flat or nested array of 2D points\n * @param {Array} [options.paths] - paths of the polygon : either flat or nested array of point indexes\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.polygon\n *\n * @example\n * let roof = [[10,11], [0,11], [5,20]]\n * let wall = [[0,0], [10,0], [10,10], [0,10]]\n *\n * let poly = polygon({ points: roof })\n * or\n * let poly = polygon({ points: [roof, wall] })\n * or\n * let poly = polygon({ points: roof, paths: [0, 1, 2] })\n * or\n * let poly = polygon({ points: [roof, wall], paths: [[0, 1, 2], [3, 4, 5, 6]] })\n */\nconst polygon = (options) => {\n  const defaults = {\n    points: [],\n    paths: []\n  }\n  const { points, paths } = Object.assign({}, defaults, options)\n\n  if (!(Array.isArray(points) && Array.isArray(paths))) throw new Error('points and paths must be arrays')\n\n  let listofpolys = points\n  if (Array.isArray(points[0])) {\n    if (!Array.isArray(points[0][0])) {\n      // points is an array of something... convert to list\n      listofpolys = [points]\n    }\n  }\n\n  listofpolys.forEach((list, i) => {\n    if (!Array.isArray(list)) throw new Error('list of points ' + i + ' must be an array')\n    if (list.length < 3) throw new Error('list of points ' + i + ' must contain three or more points')\n    list.forEach((point, j) => {\n      if (!Array.isArray(point)) throw new Error('list of points ' + i + ', point ' + j + ' must be an array')\n      if (point.length < 2) throw new Error('list of points ' + i + ', point ' + j + ' must contain by X and Y values')\n    })\n  })\n\n  let listofpaths = paths\n  if (paths.length === 0) {\n    // create a list of paths based on the points\n    let count = 0\n    listofpaths = listofpolys.map((list) => list.map((point) => count++))\n  }\n\n  // flatten the listofpoints for indexed access\n  const allpoints = []\n  listofpolys.forEach((list) => list.forEach((point) => allpoints.push(point)))\n\n  let sides = []\n  listofpaths.forEach((path) => {\n    const setofpoints = path.map((index) => allpoints[index])\n    const geometry = geom2.fromPoints(setofpoints)\n    sides = sides.concat(geom2.toSides(geometry))\n  })\n  return geom2.create(sides)\n}\n\nmodule.exports = polygon\n","const geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { isNumberArray } = require('./commonChecks')\n\n/**\n * Construct a polyhedron in three dimensional space from the given set of 3D points and faces.\n * The faces can define outward or inward facing polygons (orientation).\n * However, each face must define a counter clockwise rotation of points which follows the right hand rule.\n * @param {Object} options - options for construction\n * @param {Array} options.points - list of points in 3D space\n * @param {Array} options.faces - list of faces, where each face is a set of indexes into the points\n * @param {Array} [options.colors=undefined] - list of RGBA colors to apply to each face\n * @param {String} [options.orientation='outward'] - orientation of faces\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.polyhedron\n *\n * @example\n * let mypoints = [ [10, 10, 0], [10, -10, 0], [-10, -10, 0], [-10, 10, 0], [0, 0, 10] ]\n * let myfaces = [ [0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4], [1, 0, 3], [2, 1, 3] ]\n * let myshape = polyhedron({points: mypoint, faces: myfaces, orientation: 'inward'})\n */\nconst polyhedron = (options) => {\n  const defaults = {\n    points: [],\n    faces: [],\n    colors: undefined,\n    orientation: 'outward'\n  }\n  const { points, faces, colors, orientation } = Object.assign({}, defaults, options)\n\n  if (!(Array.isArray(points) && Array.isArray(faces))) {\n    throw new Error('points and faces must be arrays')\n  }\n  if (points.length < 3) {\n    throw new Error('three or more points are required')\n  }\n  if (faces.length < 1) {\n    throw new Error('one or more faces are required')\n  }\n  if (colors) {\n    if (!Array.isArray(colors)) {\n      throw new Error('colors must be an array')\n    }\n    if (colors.length !== faces.length) {\n      throw new Error('faces and colors must have the same length')\n    }\n  }\n  points.forEach((point, i) => {\n    if (!isNumberArray(point, 3)) throw new Error(`point ${i} must be an array of X, Y, Z values`)\n  })\n  faces.forEach((face, i) => {\n    if (face.length < 3) throw new Error(`face ${i} must contain 3 or more indexes`)\n    if (!isNumberArray(face, face.length)) throw new Error(`face ${i} must be an array of numbers`)\n  })\n\n  // invert the faces if orientation is inwards, as all internals expect outwarding facing polygons\n  if (orientation !== 'outward') {\n    faces.forEach((face) => face.reverse())\n  }\n\n  const polygons = faces.map((face, findex) => {\n    const polygon = poly3.create(face.map((pindex) => points[pindex]))\n    if (colors && colors[findex]) polygon.color = colors[findex]\n    return polygon\n  })\n\n  return geom3.create(polygons)\n}\n\nmodule.exports = polyhedron\n","const vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned rectangle in two dimensional space with four sides at right angles.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of rectangle\n * @param {Array} [options.size=[2,2]] - dimension of rectangle, width and length\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.rectangle\n *\n * @example\n * let myshape = rectangle({size: [10, 20]})\n */\nconst rectangle = (options) => {\n  const defaults = {\n    center: [0, 0],\n    size: [2, 2]\n  }\n  const { center, size } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n  if (!isNumberArray(size, 2)) throw new Error('size must be an array of X and Y values')\n  if (!size.every((n) => n > 0)) throw new Error('size values must be greater than zero')\n\n  const point = [size[0] / 2, size[1] / 2]\n  const pswap = [point[0], -point[1]]\n\n  const points = [\n    vec2.subtract(vec2.create(), center, point),\n    vec2.add(vec2.create(), center, pswap),\n    vec2.add(vec2.create(), center, point),\n    vec2.subtract(vec2.create(), center, pswap)\n  ]\n  return geom2.fromPoints(points)\n}\n\nmodule.exports = rectangle\n","const { EPS } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\nconst createCorners = (center, size, radius, segments, slice, positive) => {\n  const pitch = (Math.PI / 2) * slice / segments\n  const cospitch = Math.cos(pitch)\n  const sinpitch = Math.sin(pitch)\n\n  const layersegments = segments - slice\n  let layerradius = radius * cospitch\n  let layeroffset = size[2] - (radius - (radius * sinpitch))\n  if (!positive) layeroffset = (radius - (radius * sinpitch)) - size[2]\n\n  layerradius = layerradius > EPS ? layerradius : 0\n\n  const corner0 = vec3.add(vec3.create(), center, [size[0] - radius, size[1] - radius, layeroffset])\n  const corner1 = vec3.add(vec3.create(), center, [radius - size[0], size[1] - radius, layeroffset])\n  const corner2 = vec3.add(vec3.create(), center, [radius - size[0], radius - size[1], layeroffset])\n  const corner3 = vec3.add(vec3.create(), center, [size[0] - radius, radius - size[1], layeroffset])\n  const corner0Points = []\n  const corner1Points = []\n  const corner2Points = []\n  const corner3Points = []\n  for (let i = 0; i <= layersegments; i++) {\n    const radians = layersegments > 0 ? Math.PI / 2 * i / layersegments : 0\n    const point2d = vec2.fromAngleRadians(vec2.create(), radians)\n    vec2.scale(point2d, point2d, layerradius)\n    const point3d = vec3.fromVec2(vec3.create(), point2d)\n    corner0Points.push(vec3.add(vec3.create(), corner0, point3d))\n    vec3.rotateZ(point3d, point3d, [0, 0, 0], Math.PI / 2)\n    corner1Points.push(vec3.add(vec3.create(), corner1, point3d))\n    vec3.rotateZ(point3d, point3d, [0, 0, 0], Math.PI / 2)\n    corner2Points.push(vec3.add(vec3.create(), corner2, point3d))\n    vec3.rotateZ(point3d, point3d, [0, 0, 0], Math.PI / 2)\n    corner3Points.push(vec3.add(vec3.create(), corner3, point3d))\n  }\n  if (!positive) {\n    corner0Points.reverse()\n    corner1Points.reverse()\n    corner2Points.reverse()\n    corner3Points.reverse()\n    return [corner3Points, corner2Points, corner1Points, corner0Points]\n  }\n  return [corner0Points, corner1Points, corner2Points, corner3Points]\n}\n\nconst stitchCorners = (previousCorners, currentCorners) => {\n  const polygons = []\n  for (let i = 0; i < previousCorners.length; i++) {\n    const previous = previousCorners[i]\n    const current = currentCorners[i]\n    for (let j = 0; j < (previous.length - 1); j++) {\n      polygons.push(poly3.create([previous[j], previous[j + 1], current[j]]))\n\n      if (j < (current.length - 1)) {\n        polygons.push(poly3.create([current[j], previous[j + 1], current[j + 1]]))\n      }\n    }\n  }\n  return polygons\n}\n\nconst stitchWalls = (previousCorners, currentCorners) => {\n  const polygons = []\n  for (let i = 0; i < previousCorners.length; i++) {\n    let previous = previousCorners[i]\n    let current = currentCorners[i]\n    const p0 = previous[previous.length - 1]\n    const c0 = current[current.length - 1]\n\n    const j = (i + 1) % previousCorners.length\n    previous = previousCorners[j]\n    current = currentCorners[j]\n    const p1 = previous[0]\n    const c1 = current[0]\n\n    polygons.push(poly3.create([p0, p1, c1, c0]))\n  }\n  return polygons\n}\n\nconst stitchSides = (bottomCorners, topCorners) => {\n  // make a copy and reverse the bottom corners\n  bottomCorners = [bottomCorners[3], bottomCorners[2], bottomCorners[1], bottomCorners[0]]\n  bottomCorners = bottomCorners.map((corner) => corner.slice().reverse())\n\n  const bottomPoints = []\n  bottomCorners.forEach((corner) => {\n    corner.forEach((point) => bottomPoints.push(point))\n  })\n\n  const topPoints = []\n  topCorners.forEach((corner) => {\n    corner.forEach((point) => topPoints.push(point))\n  })\n\n  const polygons = []\n  for (let i = 0; i < topPoints.length; i++) {\n    const j = (i + 1) % topPoints.length\n    polygons.push(poly3.create([bottomPoints[i], bottomPoints[j], topPoints[j], topPoints[i]]))\n  }\n  return polygons\n}\n\n/**\n * Construct an axis-aligned solid cuboid in three dimensional space with rounded corners.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of rounded cube\n * @param {Array} [options.size=[2,2,2]] - dimension of rounded cube; width, depth, height\n * @param {Number} [options.roundRadius=0.2] - radius of rounded edges\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.roundedCuboid\n *\n * @example\n * let mycube = roundedCuboid({size: [10, 20, 10], roundRadius: 2, segments: 16})\n */\nconst roundedCuboid = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    size: [2, 2, 2],\n    roundRadius: 0.2,\n    segments: 32\n  }\n  let { center, size, roundRadius, segments } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n  if (!isNumberArray(size, 3)) throw new Error('size must be an array of X, Y and Z values')\n  if (!size.every((n) => n > 0)) throw new Error('size values must be greater than zero')\n  if (!isGT(roundRadius, 0)) throw new Error('roundRadius must be greater than zero')\n  if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n  size = size.map((v) => v / 2) // convert to radius\n\n  if (roundRadius > (size[0] - EPS) ||\n      roundRadius > (size[1] - EPS) ||\n      roundRadius > (size[2] - EPS)) throw new Error('roundRadius must be smaller then the radius of all dimensions')\n\n  segments = Math.floor(segments / 4)\n\n  let prevCornersPos = null\n  let prevCornersNeg = null\n  let polygons = []\n  for (let slice = 0; slice <= segments; slice++) {\n    const cornersPos = createCorners(center, size, roundRadius, segments, slice, true)\n    const cornersNeg = createCorners(center, size, roundRadius, segments, slice, false)\n\n    if (slice === 0) {\n      polygons = polygons.concat(stitchSides(cornersNeg, cornersPos))\n    }\n\n    if (prevCornersPos) {\n      polygons = polygons.concat(stitchCorners(prevCornersPos, cornersPos),\n        stitchWalls(prevCornersPos, cornersPos))\n    }\n    if (prevCornersNeg) {\n      polygons = polygons.concat(stitchCorners(prevCornersNeg, cornersNeg),\n        stitchWalls(prevCornersNeg, cornersNeg))\n    }\n\n    if (slice === segments) {\n      // add the top\n      let points = cornersPos.map((corner) => corner[0])\n      polygons.push(poly3.create(points))\n      // add the bottom\n      points = cornersNeg.map((corner) => corner[0])\n      polygons.push(poly3.create(points))\n    }\n\n    prevCornersPos = cornersPos\n    prevCornersNeg = cornersNeg\n  }\n\n  return geom3.create(polygons)\n}\n\nmodule.exports = roundedCuboid\n","const { EPS } = require('../maths/constants')\n\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { sin, cos } = require('../utils/trigonometry')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct a Z axis-aligned solid cylinder in three dimensional space with rounded ends.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cylinder\n * @param {Number} [options.height=2] - height of cylinder\n * @param {Number} [options.radius=1] - radius of cylinder\n * @param {Number} [options.roundRadius=0.2] - radius of rounded edges\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.roundedCylinder\n *\n * @example\n * let myshape = roundedCylinder({ height: 10, radius: 2, roundRadius: 0.5 })\n */\nconst roundedCylinder = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    height: 2,\n    radius: 1,\n    roundRadius: 0.2,\n    segments: 32\n  }\n  const { center, height, radius, roundRadius, segments } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n  if (!isGT(height, 0)) throw new Error('height must be greater then zero')\n  if (!isGT(radius, 0)) throw new Error('radius must be greater then zero')\n  if (!isGT(roundRadius, 0)) throw new Error('roundRadius must be greater then zero')\n  if (roundRadius > (radius - EPS)) throw new Error('roundRadius must be smaller then the radius')\n  if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n  const start = [0, 0, -(height / 2)]\n  const end = [0, 0, height / 2]\n  const direction = vec3.subtract(vec3.create(), end, start)\n  const length = vec3.length(direction)\n\n  if ((2 * roundRadius) > (length - EPS)) throw new Error('height must be larger than twice roundRadius')\n\n  let defaultnormal\n  if (Math.abs(direction[0]) > Math.abs(direction[1])) {\n    defaultnormal = vec3.fromValues(0, 1, 0)\n  } else {\n    defaultnormal = vec3.fromValues(1, 0, 0)\n  }\n\n  const zvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), direction), roundRadius)\n  const xvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), vec3.cross(vec3.create(), zvector, defaultnormal)), radius)\n  const yvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), vec3.cross(vec3.create(), xvector, zvector)), radius)\n\n  vec3.add(start, start, zvector)\n  vec3.subtract(end, end, zvector)\n\n  const qsegments = Math.floor(0.25 * segments)\n\n  const fromPoints = (points) => {\n    // adjust the points to center\n    const newpoints = points.map((point) => vec3.add(point, point, center))\n    return poly3.create(newpoints)\n  }\n\n  const polygons = []\n  const v1 = vec3.create()\n  const v2 = vec3.create()\n  let prevcylinderpoint\n  for (let slice1 = 0; slice1 <= segments; slice1++) {\n    const angle = 2 * Math.PI * slice1 / segments\n    const cylinderpoint = vec3.add(vec3.create(), vec3.scale(v1, xvector, cos(angle)), vec3.scale(v2, yvector, sin(angle)))\n    if (slice1 > 0) {\n      // cylinder wall\n      let points = []\n      points.push(vec3.add(vec3.create(), start, cylinderpoint))\n      points.push(vec3.add(vec3.create(), start, prevcylinderpoint))\n      points.push(vec3.add(vec3.create(), end, prevcylinderpoint))\n      points.push(vec3.add(vec3.create(), end, cylinderpoint))\n      polygons.push(fromPoints(points))\n\n      let prevcospitch, prevsinpitch\n      for (let slice2 = 0; slice2 <= qsegments; slice2++) {\n        const pitch = 0.5 * Math.PI * slice2 / qsegments\n        const cospitch = cos(pitch)\n        const sinpitch = sin(pitch)\n        if (slice2 > 0) {\n          // cylinder rounding, start\n          points = []\n          let point\n          point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, prevcylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch)))\n          points.push(point)\n          point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, cylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch)))\n          points.push(point)\n          if (slice2 < qsegments) {\n            point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, cylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch)))\n            points.push(point)\n          }\n          point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, prevcylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch)))\n          points.push(point)\n\n          polygons.push(fromPoints(points))\n\n          // cylinder rounding, end\n          points = []\n          point = vec3.add(vec3.create(), vec3.scale(v1, prevcylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch))\n          vec3.add(point, point, end)\n          points.push(point)\n          point = vec3.add(vec3.create(), vec3.scale(v1, cylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch))\n          vec3.add(point, point, end)\n          points.push(point)\n          if (slice2 < qsegments) {\n            point = vec3.add(vec3.create(), vec3.scale(v1, cylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch))\n            vec3.add(point, point, end)\n            points.push(point)\n          }\n          point = vec3.add(vec3.create(), vec3.scale(v1, prevcylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch))\n          vec3.add(point, point, end)\n          points.push(point)\n          points.reverse()\n\n          polygons.push(fromPoints(points))\n        }\n        prevcospitch = cospitch\n        prevsinpitch = sinpitch\n      }\n    }\n    prevcylinderpoint = cylinderpoint\n  }\n  const result = geom3.create(polygons)\n  return result\n}\n\nmodule.exports = roundedCylinder\n","const { EPS } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned rectangle in two dimensional space with rounded corners.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of rounded rectangle\n * @param {Array} [options.size=[2,2]] - dimension of rounded rectangle; width and length\n * @param {Number} [options.roundRadius=0.2] - round radius of corners\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.roundedRectangle\n *\n * @example\n * let myshape = roundedRectangle({size: [10, 20], roundRadius: 2})\n */\nconst roundedRectangle = (options) => {\n  const defaults = {\n    center: [0, 0],\n    size: [2, 2],\n    roundRadius: 0.2,\n    segments: 32\n  }\n  let { center, size, roundRadius, segments } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n  if (!isNumberArray(size, 2)) throw new Error('size must be an array of X and Y values')\n  if (!size.every((n) => n > 0)) throw new Error('size values must be greater than zero')\n  if (!isGT(roundRadius, 0)) throw new Error('roundRadius must be greater than zero')\n  if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n  size = size.map((v) => v / 2) // convert to radius\n\n  if (roundRadius > (size[0] - EPS) ||\n      roundRadius > (size[1] - EPS)) throw new Error('roundRadius must be smaller then the radius of all dimensions')\n\n  const cornersegments = Math.floor(segments / 4)\n\n  // create sets of points that define the corners\n  const corner0 = vec2.add(vec2.create(), center, [size[0] - roundRadius, size[1] - roundRadius])\n  const corner1 = vec2.add(vec2.create(), center, [roundRadius - size[0], size[1] - roundRadius])\n  const corner2 = vec2.add(vec2.create(), center, [roundRadius - size[0], roundRadius - size[1]])\n  const corner3 = vec2.add(vec2.create(), center, [size[0] - roundRadius, roundRadius - size[1]])\n  const corner0Points = []\n  const corner1Points = []\n  const corner2Points = []\n  const corner3Points = []\n  for (let i = 0; i <= cornersegments; i++) {\n    const radians = Math.PI / 2 * i / cornersegments\n    const point = vec2.fromAngleRadians(vec2.create(), radians)\n    vec2.scale(point, point, roundRadius)\n    corner0Points.push(vec2.add(vec2.create(), corner0, point))\n    vec2.rotate(point, point, vec2.create(), Math.PI / 2)\n    corner1Points.push(vec2.add(vec2.create(), corner1, point))\n    vec2.rotate(point, point, vec2.create(), Math.PI / 2)\n    corner2Points.push(vec2.add(vec2.create(), corner2, point))\n    vec2.rotate(point, point, vec2.create(), Math.PI / 2)\n    corner3Points.push(vec2.add(vec2.create(), corner3, point))\n  }\n\n  return geom2.fromPoints(corner0Points.concat(corner1Points, corner2Points, corner3Points))\n}\n\nmodule.exports = roundedRectangle\n","const ellipsoid = require('./ellipsoid')\n\nconst { isGT } = require('./commonChecks')\n\n/**\n * Construct a sphere in three dimensional space where all points are at the same distance from the center.\n * @see [ellipsoid]{@link module:modeling/primitives.ellipsoid} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of sphere\n * @param {Number} [options.radius=1] - radius of sphere\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @param {Array} [options.axes] -  an array with three vectors for the x, y and z base vectors\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.sphere\n *\n * @example\n * let myshape = sphere({radius: 5})\n */\nconst sphere = (options) => {\n  const defaults = {\n    center: [0, 0, 0],\n    radius: 1,\n    segments: 32,\n    axes: [[1, 0, 0], [0, -1, 0], [0, 0, 1]]\n  }\n  let { center, radius, segments, axes } = Object.assign({}, defaults, options)\n\n  if (!isGT(radius, 0)) throw new Error('radius must be greater than zero')\n\n  radius = [radius, radius, radius]\n\n  return ellipsoid({ center, radius, segments, axes })\n}\n\nmodule.exports = sphere\n","const rectangle = require('./rectangle')\n\nconst { isGT } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned square in two dimensional space with four equal sides at right angles.\n * @see [rectangle]{@link module:modeling/primitives.rectangle} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of square\n * @param {Number} [options.size=2] - dimension of square\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.square\n *\n * @example\n * let myshape = square({size: 10})\n */\nconst square = (options) => {\n  const defaults = {\n    center: [0, 0],\n    size: 2\n  }\n  let { center, size } = Object.assign({}, defaults, options)\n\n  if (!isGT(size, 0)) throw new Error('size must be greater than zero')\n\n  size = [size, size]\n\n  return rectangle({ center, size })\n}\n\nmodule.exports = square\n","const vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n// @see http://www.jdawiseman.com/papers/easymath/surds_star_inner_radius.html\nconst getRadiusRatio = (vertices, density) => {\n  if (vertices > 0 && density > 1 && density < vertices / 2) {\n    return Math.cos(Math.PI * density / vertices) / Math.cos(Math.PI * (density - 1) / vertices)\n  }\n  return 0\n}\n\nconst getPoints = (vertices, radius, startAngle, center) => {\n  const a = (Math.PI * 2) / vertices\n\n  const points = []\n  for (let i = 0; i < vertices; i++) {\n    const point = vec2.fromAngleRadians(vec2.create(), a * i + startAngle)\n    vec2.scale(point, point, radius)\n    vec2.add(point, center, point)\n    points.push(point)\n  }\n  return points\n}\n\n/**\n * Construct a star in two dimensional space.\n * @see https://en.wikipedia.org/wiki/Star_polygon\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of star\n * @param {Number} [options.vertices=5] - number of vertices (P) on the star\n * @param {Number} [options.density=2] - density (Q) of star\n * @param {Number} [options.outerRadius=1] - outer radius of vertices\n * @param {Number} [options.innerRadius=0] - inner radius of vertices, or zero to calculate\n * @param {Number} [options.startAngle=0] - starting angle for first vertice, in radians\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.star\n *\n * @example\n * let star1 = star({vertices: 8, outerRadius: 10}) // star with 8/2 density\n * let star2 = star({vertices: 12, outerRadius: 40, innerRadius: 20}) // star with given radius\n */\nconst star = (options) => {\n  const defaults = {\n    center: [0, 0],\n    vertices: 5,\n    outerRadius: 1,\n    innerRadius: 0,\n    density: 2,\n    startAngle: 0\n  }\n  let { center, vertices, outerRadius, innerRadius, density, startAngle } = Object.assign({}, defaults, options)\n\n  if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n  if (!isGTE(vertices, 2)) throw new Error('vertices must be two or more')\n  if (!isGT(outerRadius, 0)) throw new Error('outerRadius must be greater than zero')\n  if (!isGTE(innerRadius, 0)) throw new Error('innerRadius must be greater than zero')\n  if (!isGTE(startAngle, 0)) throw new Error('startAngle must be greater than zero')\n\n  // force integers\n  vertices = Math.floor(vertices)\n  density = Math.floor(density)\n\n  startAngle = startAngle % (Math.PI * 2)\n\n  if (innerRadius === 0) {\n    if (!isGTE(density, 2)) throw new Error('density must be two or more')\n    innerRadius = outerRadius * getRadiusRatio(vertices, density)\n  }\n\n  const centerv = vec2.clone(center)\n\n  const outerPoints = getPoints(vertices, outerRadius, startAngle, centerv)\n  const innerPoints = getPoints(vertices, innerRadius, startAngle + Math.PI / vertices, centerv)\n\n  const allPoints = []\n  for (let i = 0; i < vertices; i++) {\n    allPoints.push(outerPoints[i])\n    allPoints.push(innerPoints[i])\n  }\n\n  return geom2.fromPoints(allPoints)\n}\n\nmodule.exports = star\n","const extrudeRotate = require('../operations/extrusions/extrudeRotate')\nconst { rotate } = require('../operations/transforms/rotate')\nconst { translate } = require('../operations/transforms/translate')\n\nconst circle = require('./circle')\n\nconst { isGT, isGTE } = require('./commonChecks')\n\n/**\n * Construct a torus by revolving a small circle (inner) about the circumference of a large (outer) circle.\n * @param {Object} [options] - options for construction\n * @param {Number} [options.innerRadius=1] - radius of small (inner) circle\n * @param {Number} [options.outerRadius=4] - radius of large (outer) circle\n * @param {Integer} [options.innerSegments=32] - number of segments to create per rotation\n * @param {Integer} [options.outerSegments=32] - number of segments to create per rotation\n * @param {Integer} [options.innerRotation=0] - rotation of small (inner) circle in radians\n * @param {Number} [options.outerRotation=(PI * 2)] - rotation (outer) of the torus (RADIANS)\n * @param {Number} [options.startAngle=0] - start angle of the torus (RADIANS)\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.torus\n *\n * @example\n * let myshape = torus({ innerRadius: 10, outerRadius: 100 })\n */\nconst torus = (options) => {\n  const defaults = {\n    innerRadius: 1,\n    innerSegments: 32,\n    outerRadius: 4,\n    outerSegments: 32,\n    innerRotation: 0,\n    startAngle: 0,\n    outerRotation: Math.PI * 2\n  }\n  const { innerRadius, innerSegments, outerRadius, outerSegments, innerRotation, startAngle, outerRotation } = Object.assign({}, defaults, options)\n\n  if (!isGT(innerRadius, 0)) throw new Error('innerRadius must be greater than zero')\n  if (!isGTE(innerSegments, 3)) throw new Error('innerSegments must be three or more')\n  if (!isGT(outerRadius, 0)) throw new Error('outerRadius must be greater than zero')\n  if (!isGTE(outerSegments, 3)) throw new Error('outerSegments must be three or more')\n  if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n  if (!isGT(outerRotation, 0)) throw new Error('outerRotation must be greater than zero')\n\n  if (innerRadius >= outerRadius) throw new Error('inner circle is two large to rotate about the outer circle')\n\n  let innerCircle = circle({ radius: innerRadius, segments: innerSegments })\n\n  if (innerRotation !== 0) {\n    innerCircle = rotate([0, 0, innerRotation], innerCircle)\n  }\n\n  innerCircle = translate([outerRadius, 0], innerCircle)\n\n  const extrudeOptions = {\n    startAngle: startAngle,\n    angle: outerRotation,\n    segments: outerSegments\n  }\n  return extrudeRotate(extrudeOptions, innerCircle)\n}\n\nmodule.exports = torus\n","const { NEPS } = require('../maths/constants')\nconst vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isNumberArray } = require('./commonChecks')\n\n// returns angle C\nconst solveAngleFromSSS = (a, b, c) => Math.acos(((a * a) + (b * b) - (c * c)) / (2 * a * b))\n\n// returns side c\nconst solveSideFromSAS = (a, C, b) => {\n  if (C > NEPS) {\n    return Math.sqrt(a * a + b * b - 2 * a * b * Math.cos(C))\n  }\n\n  // Explained in https://www.nayuki.io/page/numerically-stable-law-of-cosines\n  return Math.sqrt((a - b) * (a - b) + a * b * C * C * (1 - C * C / 12))\n}\n\n// AAA is when three angles of a triangle, but no sides\nconst solveAAA = (angles) => {\n  const eps = Math.abs(angles[0] + angles[1] + angles[2] - Math.PI)\n  if (eps > NEPS) throw new Error('AAA triangles require angles that sum to PI')\n\n  const A = angles[0]\n  const B = angles[1]\n  const C = Math.PI - A - B\n\n  // Note: This is not 100% proper but...\n  // default the side c length to 1\n  // solve the other lengths\n  const c = 1\n  const a = (c / Math.sin(C)) * Math.sin(A)\n  const b = (c / Math.sin(C)) * Math.sin(B)\n  return createTriangle(A, B, C, a, b, c)\n}\n\n// AAS is when two angles and one side are known, and the side is not between the angles\nconst solveAAS = (values) => {\n  const A = values[0]\n  const B = values[1]\n  const C = Math.PI + NEPS - A - B\n\n  if (C < NEPS) throw new Error('AAS triangles require angles that sum to PI')\n\n  const a = values[2]\n  const b = (a / Math.sin(A)) * Math.sin(B)\n  const c = (a / Math.sin(A)) * Math.sin(C)\n  return createTriangle(A, B, C, a, b, c)\n}\n\n// ASA is when two angles and the side between the angles are known\nconst solveASA = (values) => {\n  const A = values[0]\n  const B = values[2]\n  const C = Math.PI + NEPS - A - B\n\n  if (C < NEPS) throw new Error('ASA triangles require angles that sum to PI')\n\n  const c = values[1]\n  const a = (c / Math.sin(C)) * Math.sin(A)\n  const b = (c / Math.sin(C)) * Math.sin(B)\n  return createTriangle(A, B, C, a, b, c)\n}\n\n// SAS is when two sides and the angle between them are known\nconst solveSAS = (values) => {\n  const c = values[0]\n  const B = values[1]\n  const a = values[2]\n\n  const b = solveSideFromSAS(c, B, a)\n\n  const A = solveAngleFromSSS(b, c, a) // solve for A\n  const C = Math.PI - A - B\n  return createTriangle(A, B, C, a, b, c)\n}\n\n// SSA is when two sides and an angle that is not the angle between the sides are known\nconst solveSSA = (values) => {\n  const c = values[0]\n  const a = values[1]\n  const C = values[2]\n\n  const A = Math.asin(a * Math.sin(C) / c)\n  const B = Math.PI - A - C\n\n  const b = (c / Math.sin(C)) * Math.sin(B)\n  return createTriangle(A, B, C, a, b, c)\n}\n\n// SSS is when we know three sides of the triangle\nconst solveSSS = (lengths) => {\n  const a = lengths[1]\n  const b = lengths[2]\n  const c = lengths[0]\n  if (((a + b) <= c) || ((b + c) <= a) || ((c + a) <= b)) {\n    throw new Error('SSS triangle is incorrect, as the longest side is longer than the sum of the other sides')\n  }\n\n  const A = solveAngleFromSSS(b, c, a) // solve for A\n  const B = solveAngleFromSSS(c, a, b) // solve for B\n  const C = Math.PI - A - B\n  return createTriangle(A, B, C, a, b, c)\n}\n\nconst createTriangle = (A, B, C, a, b, c) => {\n  const p0 = vec2.fromValues(0, 0) // everything starts from 0, 0\n  const p1 = vec2.fromValues(c, 0)\n  const p2 = vec2.fromValues(a, 0)\n  vec2.add(p2, vec2.rotate(p2, p2, [0, 0], Math.PI - B), p1)\n  return geom2.fromPoints([p0, p1, p2])\n}\n\n/**\n * Construct a triangle in two dimensional space from the given options.\n * The triangle is always constructed CCW from the origin, [0, 0, 0].\n * @see https://www.mathsisfun.com/algebra/trig-solving-triangles.html\n * @param {Object} [options] - options for construction\n * @param {String} [options.type='SSS'] - type of triangle to construct; A ~ angle, S ~ side\n * @param {Array} [options.values=[1,1,1]] - angle (radians) of corners or length of sides\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.triangle\n *\n * @example\n * let myshape = triangle({type: 'AAS', values: [degToRad(62), degToRad(35), 7]})\n */\nconst triangle = (options) => {\n  const defaults = {\n    type: 'SSS',\n    values: [1, 1, 1]\n  }\n  let { type, values } = Object.assign({}, defaults, options)\n\n  if (typeof (type) !== 'string') throw new Error('triangle type must be a string')\n  type = type.toUpperCase()\n  if (!((type[0] === 'A' || type[0] === 'S') &&\n        (type[1] === 'A' || type[1] === 'S') &&\n        (type[2] === 'A' || type[2] === 'S'))) throw new Error('triangle type must contain three letters; A or S')\n\n  if (!isNumberArray(values, 3)) throw new Error('triangle values must contain three values')\n  if (!values.every((n) => n > 0)) throw new Error('triangle values must be greater than zero')\n\n  switch (type) {\n    case 'AAA':\n      return solveAAA(values)\n    case 'AAS':\n      return solveAAS(values)\n    case 'ASA':\n      return solveASA(values)\n    case 'SAS':\n      return solveSAS(values)\n    case 'SSA':\n      return solveSSA(values)\n    case 'SSS':\n      return solveSSS(values)\n    default:\n      throw new Error('invalid triangle type, try again')\n  }\n}\n\nmodule.exports = triangle\n","// -- data source from from http://paulbourke.net/dataformats/hershey/\n// -- reduced to save some bytes...\n// { [ascii code]: [width, x, y, ...] } - undefined value as path separator\nmodule.exports = {\n  height: 14,\n  32: [16],\n  33: [10, 5, 21, 5, 7, undefined, 5, 2, 4, 1, 5, 0, 6, 1, 5, 2],\n  34: [16, 4, 21, 4, 14, undefined, 12, 21, 12, 14],\n  35: [21, 11, 25, 4, -7, undefined, 17, 25, 10, -7, undefined, 4, 12, 18, 12, undefined, 3, 6, 17, 6],\n  36: [20, 8, 25, 8, -4, undefined, 12, 25, 12, -4, undefined, 17, 18, 15, 20, 12, 21, 8, 21, 5, 20, 3, 18, 3, 16, 4, 14, 5, 13, 7, 12, 13, 10, 15, 9, 16, 8, 17, 6, 17, 3, 15, 1, 12, 0, 8, 0, 5, 1, 3, 3],\n  37: [24, 21, 21, 3, 0, undefined, 8, 21, 10, 19, 10, 17, 9, 15, 7, 14, 5, 14, 3, 16, 3, 18, 4, 20, 6, 21, 8, 21, 10, 20, 13, 19, 16, 19, 19, 20, 21, 21, undefined, 17, 7, 15, 6, 14, 4, 14, 2, 16, 0, 18, 0, 20, 1, 21, 3, 21, 5, 19, 7, 17, 7],\n  38: [26, 23, 12, 23, 13, 22, 14, 21, 14, 20, 13, 19, 11, 17, 6, 15, 3, 13, 1, 11, 0, 7, 0, 5, 1, 4, 2, 3, 4, 3, 6, 4, 8, 5, 9, 12, 13, 13, 14, 14, 16, 14, 18, 13, 20, 11, 21, 9, 20, 8, 18, 8, 16, 9, 13, 11, 10, 16, 3, 18, 1, 20, 0, 22, 0, 23, 1, 23, 2],\n  39: [10, 5, 19, 4, 20, 5, 21, 6, 20, 6, 18, 5, 16, 4, 15],\n  40: [14, 11, 25, 9, 23, 7, 20, 5, 16, 4, 11, 4, 7, 5, 2, 7, -2, 9, -5, 11, -7],\n  41: [14, 3, 25, 5, 23, 7, 20, 9, 16, 10, 11, 10, 7, 9, 2, 7, -2, 5, -5, 3, -7],\n  42: [16, 8, 21, 8, 9, undefined, 3, 18, 13, 12, undefined, 13, 18, 3, 12],\n  43: [26, 13, 18, 13, 0, undefined, 4, 9, 22, 9],\n  44: [10, 6, 1, 5, 0, 4, 1, 5, 2, 6, 1, 6, -1, 5, -3, 4, -4],\n  45: [26, 4, 9, 22, 9],\n  46: [10, 5, 2, 4, 1, 5, 0, 6, 1, 5, 2],\n  47: [22, 20, 25, 2, -7],\n  48: [20, 9, 21, 6, 20, 4, 17, 3, 12, 3, 9, 4, 4, 6, 1, 9, 0, 11, 0, 14, 1, 16, 4, 17, 9, 17, 12, 16, 17, 14, 20, 11, 21, 9, 21],\n  49: [20, 6, 17, 8, 18, 11, 21, 11, 0],\n  50: [20, 4, 16, 4, 17, 5, 19, 6, 20, 8, 21, 12, 21, 14, 20, 15, 19, 16, 17, 16, 15, 15, 13, 13, 10, 3, 0, 17, 0],\n  51: [20, 5, 21, 16, 21, 10, 13, 13, 13, 15, 12, 16, 11, 17, 8, 17, 6, 16, 3, 14, 1, 11, 0, 8, 0, 5, 1, 4, 2, 3, 4],\n  52: [20, 13, 21, 3, 7, 18, 7, undefined, 13, 21, 13, 0],\n  53: [20, 15, 21, 5, 21, 4, 12, 5, 13, 8, 14, 11, 14, 14, 13, 16, 11, 17, 8, 17, 6, 16, 3, 14, 1, 11, 0, 8, 0, 5, 1, 4, 2, 3, 4],\n  54: [20, 16, 18, 15, 20, 12, 21, 10, 21, 7, 20, 5, 17, 4, 12, 4, 7, 5, 3, 7, 1, 10, 0, 11, 0, 14, 1, 16, 3, 17, 6, 17, 7, 16, 10, 14, 12, 11, 13, 10, 13, 7, 12, 5, 10, 4, 7],\n  55: [20, 17, 21, 7, 0, undefined, 3, 21, 17, 21],\n  56: [20, 8, 21, 5, 20, 4, 18, 4, 16, 5, 14, 7, 13, 11, 12, 14, 11, 16, 9, 17, 7, 17, 4, 16, 2, 15, 1, 12, 0, 8, 0, 5, 1, 4, 2, 3, 4, 3, 7, 4, 9, 6, 11, 9, 12, 13, 13, 15, 14, 16, 16, 16, 18, 15, 20, 12, 21, 8, 21],\n  57: [20, 16, 14, 15, 11, 13, 9, 10, 8, 9, 8, 6, 9, 4, 11, 3, 14, 3, 15, 4, 18, 6, 20, 9, 21, 10, 21, 13, 20, 15, 18, 16, 14, 16, 9, 15, 4, 13, 1, 10, 0, 8, 0, 5, 1, 4, 3],\n  58: [10, 5, 14, 4, 13, 5, 12, 6, 13, 5, 14, undefined, 5, 2, 4, 1, 5, 0, 6, 1, 5, 2],\n  59: [10, 5, 14, 4, 13, 5, 12, 6, 13, 5, 14, undefined, 6, 1, 5, 0, 4, 1, 5, 2, 6, 1, 6, -1, 5, -3, 4, -4],\n  60: [24, 20, 18, 4, 9, 20, 0],\n  61: [26, 4, 12, 22, 12, undefined, 4, 6, 22, 6],\n  62: [24, 4, 18, 20, 9, 4, 0],\n  63: [18, 3, 16, 3, 17, 4, 19, 5, 20, 7, 21, 11, 21, 13, 20, 14, 19, 15, 17, 15, 15, 14, 13, 13, 12, 9, 10, 9, 7, undefined, 9, 2, 8, 1, 9, 0, 10, 1, 9, 2],\n  64: [27, 18, 13, 17, 15, 15, 16, 12, 16, 10, 15, 9, 14, 8, 11, 8, 8, 9, 6, 11, 5, 14, 5, 16, 6, 17, 8, undefined, 12, 16, 10, 14, 9, 11, 9, 8, 10, 6, 11, 5, undefined, 18, 16, 17, 8, 17, 6, 19, 5, 21, 5, 23, 7, 24, 10, 24, 12, 23, 15, 22, 17, 20, 19, 18, 20, 15, 21, 12, 21, 9, 20, 7, 19, 5, 17, 4, 15, 3, 12, 3, 9, 4, 6, 5, 4, 7, 2, 9, 1, 12, 0, 15, 0, 18, 1, 20, 2, 21, 3, undefined, 19, 16, 18, 8, 18, 6, 19, 5],\n  65: [18, 9, 21, 1, 0, undefined, 9, 21, 17, 0, undefined, 4, 7, 14, 7],\n  66: [21, 4, 21, 4, 0, undefined, 4, 21, 13, 21, 16, 20, 17, 19, 18, 17, 18, 15, 17, 13, 16, 12, 13, 11, undefined, 4, 11, 13, 11, 16, 10, 17, 9, 18, 7, 18, 4, 17, 2, 16, 1, 13, 0, 4, 0],\n  67: [21, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5],\n  68: [21, 4, 21, 4, 0, undefined, 4, 21, 11, 21, 14, 20, 16, 18, 17, 16, 18, 13, 18, 8, 17, 5, 16, 3, 14, 1, 11, 0, 4, 0],\n  69: [19, 4, 21, 4, 0, undefined, 4, 21, 17, 21, undefined, 4, 11, 12, 11, undefined, 4, 0, 17, 0],\n  70: [18, 4, 21, 4, 0, undefined, 4, 21, 17, 21, undefined, 4, 11, 12, 11],\n  71: [21, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5, 18, 8, undefined, 13, 8, 18, 8],\n  72: [22, 4, 21, 4, 0, undefined, 18, 21, 18, 0, undefined, 4, 11, 18, 11],\n  73: [8, 4, 21, 4, 0],\n  74: [16, 12, 21, 12, 5, 11, 2, 10, 1, 8, 0, 6, 0, 4, 1, 3, 2, 2, 5, 2, 7],\n  75: [21, 4, 21, 4, 0, undefined, 18, 21, 4, 7, undefined, 9, 12, 18, 0],\n  76: [17, 4, 21, 4, 0, undefined, 4, 0, 16, 0],\n  77: [24, 4, 21, 4, 0, undefined, 4, 21, 12, 0, undefined, 20, 21, 12, 0, undefined, 20, 21, 20, 0],\n  78: [22, 4, 21, 4, 0, undefined, 4, 21, 18, 0, undefined, 18, 21, 18, 0],\n  79: [22, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5, 19, 8, 19, 13, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21],\n  80: [21, 4, 21, 4, 0, undefined, 4, 21, 13, 21, 16, 20, 17, 19, 18, 17, 18, 14, 17, 12, 16, 11, 13, 10, 4, 10],\n  81: [22, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5, 19, 8, 19, 13, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21, undefined, 12, 4, 18, -2],\n  82: [21, 4, 21, 4, 0, undefined, 4, 21, 13, 21, 16, 20, 17, 19, 18, 17, 18, 15, 17, 13, 16, 12, 13, 11, 4, 11, undefined, 11, 11, 18, 0],\n  83: [20, 17, 18, 15, 20, 12, 21, 8, 21, 5, 20, 3, 18, 3, 16, 4, 14, 5, 13, 7, 12, 13, 10, 15, 9, 16, 8, 17, 6, 17, 3, 15, 1, 12, 0, 8, 0, 5, 1, 3, 3],\n  84: [16, 8, 21, 8, 0, undefined, 1, 21, 15, 21],\n  85: [22, 4, 21, 4, 6, 5, 3, 7, 1, 10, 0, 12, 0, 15, 1, 17, 3, 18, 6, 18, 21],\n  86: [18, 1, 21, 9, 0, undefined, 17, 21, 9, 0],\n  87: [24, 2, 21, 7, 0, undefined, 12, 21, 7, 0, undefined, 12, 21, 17, 0, undefined, 22, 21, 17, 0],\n  88: [20, 3, 21, 17, 0, undefined, 17, 21, 3, 0],\n  89: [18, 1, 21, 9, 11, 9, 0, undefined, 17, 21, 9, 11],\n  90: [20, 17, 21, 3, 0, undefined, 3, 21, 17, 21, undefined, 3, 0, 17, 0],\n  91: [14, 4, 25, 4, -7, undefined, 5, 25, 5, -7, undefined, 4, 25, 11, 25, undefined, 4, -7, 11, -7],\n  92: [14, 0, 21, 14, -3],\n  93: [14, 9, 25, 9, -7, undefined, 10, 25, 10, -7, undefined, 3, 25, 10, 25, undefined, 3, -7, 10, -7],\n  94: [16, 6, 15, 8, 18, 10, 15, undefined, 3, 12, 8, 17, 13, 12, undefined, 8, 17, 8, 0],\n  95: [16, 0, -2, 16, -2],\n  96: [10, 6, 21, 5, 20, 4, 18, 4, 16, 5, 15, 6, 16, 5, 17],\n  97: [19, 15, 14, 15, 0, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n  98: [19, 4, 21, 4, 0, undefined, 4, 11, 6, 13, 8, 14, 11, 14, 13, 13, 15, 11, 16, 8, 16, 6, 15, 3, 13, 1, 11, 0, 8, 0, 6, 1, 4, 3],\n  99: [18, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n  100: [19, 15, 21, 15, 0, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n  101: [18, 3, 8, 15, 8, 15, 10, 14, 12, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n  102: [12, 10, 21, 8, 21, 6, 20, 5, 17, 5, 0, undefined, 2, 14, 9, 14],\n  103: [19, 15, 14, 15, -2, 14, -5, 13, -6, 11, -7, 8, -7, 6, -6, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n  104: [19, 4, 21, 4, 0, undefined, 4, 10, 7, 13, 9, 14, 12, 14, 14, 13, 15, 10, 15, 0],\n  105: [8, 3, 21, 4, 20, 5, 21, 4, 22, 3, 21, undefined, 4, 14, 4, 0],\n  106: [10, 5, 21, 6, 20, 7, 21, 6, 22, 5, 21, undefined, 6, 14, 6, -3, 5, -6, 3, -7, 1, -7],\n  107: [17, 4, 21, 4, 0, undefined, 14, 14, 4, 4, undefined, 8, 8, 15, 0],\n  108: [8, 4, 21, 4, 0],\n  109: [30, 4, 14, 4, 0, undefined, 4, 10, 7, 13, 9, 14, 12, 14, 14, 13, 15, 10, 15, 0, undefined, 15, 10, 18, 13, 20, 14, 23, 14, 25, 13, 26, 10, 26, 0],\n  110: [19, 4, 14, 4, 0, undefined, 4, 10, 7, 13, 9, 14, 12, 14, 14, 13, 15, 10, 15, 0],\n  111: [19, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3, 16, 6, 16, 8, 15, 11, 13, 13, 11, 14, 8, 14],\n  112: [19, 4, 14, 4, -7, undefined, 4, 11, 6, 13, 8, 14, 11, 14, 13, 13, 15, 11, 16, 8, 16, 6, 15, 3, 13, 1, 11, 0, 8, 0, 6, 1, 4, 3],\n  113: [19, 15, 14, 15, -7, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n  114: [13, 4, 14, 4, 0, undefined, 4, 8, 5, 11, 7, 13, 9, 14, 12, 14],\n  115: [17, 14, 11, 13, 13, 10, 14, 7, 14, 4, 13, 3, 11, 4, 9, 6, 8, 11, 7, 13, 6, 14, 4, 14, 3, 13, 1, 10, 0, 7, 0, 4, 1, 3, 3],\n  116: [12, 5, 21, 5, 4, 6, 1, 8, 0, 10, 0, undefined, 2, 14, 9, 14],\n  117: [19, 4, 14, 4, 4, 5, 1, 7, 0, 10, 0, 12, 1, 15, 4, undefined, 15, 14, 15, 0],\n  118: [16, 2, 14, 8, 0, undefined, 14, 14, 8, 0],\n  119: [22, 3, 14, 7, 0, undefined, 11, 14, 7, 0, undefined, 11, 14, 15, 0, undefined, 19, 14, 15, 0],\n  120: [17, 3, 14, 14, 0, undefined, 14, 14, 3, 0],\n  121: [16, 2, 14, 8, 0, undefined, 14, 14, 8, 0, 6, -4, 4, -6, 2, -7, 1, -7],\n  122: [17, 14, 14, 3, 0, undefined, 3, 14, 14, 14, undefined, 3, 0, 14, 0],\n  123: [14, 9, 25, 7, 24, 6, 23, 5, 21, 5, 19, 6, 17, 7, 16, 8, 14, 8, 12, 6, 10, undefined, 7, 24, 6, 22, 6, 20, 7, 18, 8, 17, 9, 15, 9, 13, 8, 11, 4, 9, 8, 7, 9, 5, 9, 3, 8, 1, 7, 0, 6, -2, 6, -4, 7, -6, undefined, 6, 8, 8, 6, 8, 4, 7, 2, 6, 1, 5, -1, 5, -3, 6, -5, 7, -6, 9, -7],\n  124: [8, 4, 25, 4, -7],\n  125: [14, 5, 25, 7, 24, 8, 23, 9, 21, 9, 19, 8, 17, 7, 16, 6, 14, 6, 12, 8, 10, undefined, 7, 24, 8, 22, 8, 20, 7, 18, 6, 17, 5, 15, 5, 13, 6, 11, 10, 9, 6, 7, 5, 5, 5, 3, 6, 1, 7, 0, 8, -2, 8, -4, 7, -6, undefined, 8, 8, 6, 6, 6, 4, 7, 2, 8, 1, 9, -1, 9, -3, 8, -5, 7, -6, 5, -7],\n  126: [24, 3, 6, 3, 8, 4, 11, 6, 12, 8, 12, 10, 11, 14, 8, 16, 7, 18, 7, 20, 8, 21, 10, undefined, 3, 8, 4, 10, 6, 11, 8, 11, 10, 10, 14, 7, 16, 6, 18, 6, 20, 7, 21, 10, 21, 12]\n}\n","/**\n * Texts provide sets of segments for each character or text strings.\n * The segments can be used to create outlines for both 2D and 3D geometry.\n * Note: Only ASCII characters are supported.\n * @module modeling/text\n * @example\n * const { vectorChar, vectorText } = require('@jscad/modeling').text\n */\nmodule.exports = {\n  vectorChar: require('./vectorChar'),\n  vectorText: require('./vectorText')\n}\n","const vectorParams = require('./vectorParams')\n\n/**\n * Represents a character as a list of segments\n * @typedef {Object} VectorCharObject\n * @property {Float} width - character width\n * @property {Float} height - character height (uppercase)\n * @property {Array} segments - character segments [[[x, y], ...], ...]\n */\n\n/** Construct a {@link VectorCharObject} from a ascii character whose code is between 31 and 127,\n* if the character is not supported it is replaced by a question mark.\n* @param {Object|String} [options] - options for construction or ascii character\n* @param {Float} [options.xOffset=0] - x offset\n* @param {Float} [options.yOffset=0] - y offset\n* @param {Float} [options.height=21] - font size (uppercase height)\n* @param {Float} [options.extrudeOffset=0] - width of the extrusion that will be applied (manually) after the creation of the character\n* @param {String} [options.input='?'] - ascii character (ignored/overwrited if provided as seconds parameter)\n* @param {String} [char='?'] - ascii character\n* @returns {VectorCharObject}\n* @alias module:modeling/text.vectorChar\n*\n* @example\n* let vectorCharObject = vectorChar()\n* or\n* let vectorCharObject = vectorChar('A')\n* or\n* let vectorCharObject = vectorChar({ xOffset: 57 }, 'C')\n* or\n* let vectorCharObject = vectorChar({ xOffset: 78, input: '!' })\n*/\nconst vectorChar = (options, char) => {\n  const {\n    xOffset, yOffset, input, font, height, extrudeOffset\n  } = vectorParams(options, char)\n  let code = input.charCodeAt(0)\n  if (!code || !font[code]) {\n    code = 63 // 63 => ?\n  }\n  const glyph = [].concat(font[code])\n  const ratio = (height - extrudeOffset) / font.height\n  const extrudeYOffset = (extrudeOffset / 2)\n  const width = glyph.shift() * ratio\n  const segments = []\n  let polyline = []\n  for (let i = 0, il = glyph.length; i < il; i += 2) {\n    const gx = ratio * glyph[i] + xOffset\n    const gy = ratio * glyph[i + 1] + yOffset + extrudeYOffset\n    if (glyph[i] !== undefined) {\n      polyline.push([gx, gy])\n      continue\n    }\n    segments.push(polyline)\n    polyline = []\n    i--\n  }\n  if (polyline.length) {\n    segments.push(polyline)\n  }\n  return { width, height, segments }\n}\n\nmodule.exports = vectorChar\n","const defaultFont = require('./fonts/single-line/hershey/simplex.js')\n\nconst defaultsVectorParams = {\n  xOffset: 0,\n  yOffset: 0,\n  input: '?',\n  align: 'left',\n  font: defaultFont,\n  height: 14, // == old vector_xxx simplex font height\n  lineSpacing: 2.142857142857143, // == 30/14 == old vector_xxx ratio\n  letterSpacing: 1,\n  extrudeOffset: 0\n}\n\n// vectorsXXX parameters handler\nconst vectorParams = (options, input) => {\n  if (!input && typeof options === 'string') {\n    options = { input: options }\n  }\n  options = options || {}\n  const params = Object.assign({}, defaultsVectorParams, options)\n  params.input = input || params.input\n  return params\n}\n\nmodule.exports = vectorParams\n","const vectorChar = require('./vectorChar')\nconst vectorParams = require('./vectorParams')\n\n// translate text line\nconst translateLine = (options, line) => {\n  const { x, y } = Object.assign({ x: 0, y: 0 }, options || {})\n  const segments = line.segments\n  let segment = null\n  let point = null\n  for (let i = 0, il = segments.length; i < il; i++) {\n    segment = segments[i]\n    for (let j = 0, jl = segment.length; j < jl; j++) {\n      point = segment[j]\n      segment[j] = [point[0] + x, point[1] + y]\n    }\n  }\n  return line\n}\n\n/**\n * Construct an array of character segments from a ascii string whose characters code is between 31 and 127,\n * if one character is not supported it is replaced by a question mark.\n * @param {Object|String} [options] - options for construction or ascii string\n * @param {Float} [options.xOffset=0] - x offset\n * @param {Float} [options.yOffset=0] - y offset\n * @param {Float} [options.height=21] - font size (uppercase height)\n * @param {Float} [options.lineSpacing=1.4] - line spacing expressed as a percentage of font size\n * @param {Float} [options.letterSpacing=1] - extra letter spacing expressed as a percentage of font size\n * @param {String} [options.align='left'] - multi-line text alignment: left, center, right\n * @param {Float} [options.extrudeOffset=0] - width of the extrusion that will be applied (manually) after the creation of the character\n * @param {String} [options.input='?'] - ascii string (ignored/overwrited if provided as seconds parameter)\n * @param {String} [text='?'] - ascii string\n * @returns {Array} characters segments [[[x, y], ...], ...]\n * @alias module:modeling/text.vectorText\n *\n * @example\n * let textSegments = vectorText()\n * or\n * let textSegments = vectorText('OpenJSCAD')\n * or\n * let textSegments = vectorText({ yOffset: -50 }, 'OpenJSCAD')\n * or\n * let textSegments = vectorText({ yOffset: -80, input: 'OpenJSCAD' })\n */\nconst vectorText = (options, text) => {\n  const {\n    xOffset, yOffset, input, font, height, align, extrudeOffset, lineSpacing, letterSpacing\n  } = vectorParams(options, text)\n  let [x, y] = [xOffset, yOffset]\n  let i, il, char, vect, width, diff\n  let line = { width: 0, segments: [] }\n  const lines = []\n  let output = []\n  let maxWidth = 0\n  const lineStart = x\n  const pushLine = () => {\n    lines.push(line)\n    maxWidth = Math.max(maxWidth, line.width)\n    line = { width: 0, segments: [] }\n  }\n  for (i = 0, il = input.length; i < il; i++) {\n    char = input[i]\n    vect = vectorChar({ xOffset: x, yOffset: y, font, height, extrudeOffset }, char)\n    if (char === '\\n') {\n      x = lineStart\n      y -= vect.height * lineSpacing\n      pushLine()\n      continue\n    }\n    width = vect.width * letterSpacing\n    line.width += width\n    x += width\n    if (char !== ' ') {\n      line.segments = line.segments.concat(vect.segments)\n    }\n  }\n  if (line.segments.length) {\n    pushLine()\n  }\n  for (i = 0, il = lines.length; i < il; i++) {\n    line = lines[i]\n    if (maxWidth > line.width) {\n      diff = maxWidth - line.width\n      if (align === 'right') {\n        line = translateLine({ x: diff }, line)\n      } else if (align === 'center') {\n        line = translateLine({ x: diff / 2 }, line)\n      }\n    }\n    output = output.concat(line.segments)\n  }\n  return output\n}\n\nmodule.exports = vectorText\n","// list of supported geometries\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\n\n/**\n * @param {Array} shapes - list of shapes to compare\n * @returns {Boolean} true if the given shapes are of the same type\n * @alias module:modeling/utils.areAllShapesTheSameType\n */\nconst areAllShapesTheSameType = (shapes) => {\n  let previousType\n  for (const shape of shapes) {\n    let currentType = 0\n    if (geom2.isA(shape)) currentType = 1\n    if (geom3.isA(shape)) currentType = 2\n    if (path2.isA(shape)) currentType = 3\n\n    if (previousType && currentType !== previousType) return false\n    previousType = currentType\n  }\n  return true\n}\n\nmodule.exports = areAllShapesTheSameType\n","/**\n * Convert the given angle (degrees) to radians.\n * @param {Number} degrees - angle in degrees\n * @returns {Number} angle in radians\n * @alias module:modeling/utils.degToRad\n */\nconst degToRad = (degrees) => degrees * 0.017453292519943295\n\nmodule.exports = degToRad\n","/**\n * Flatten the given list of arguments into a single flat array.\n * The arguments can be composed of multiple depths of objects and arrays.\n * @param {Array} arr - list of arguments\n * @returns {Array} a flat list of arguments\n * @alias module:modeling/utils.flatten\n */\nconst flatten = (arr) => arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flatten(val)) : acc.concat(val), [])\n\nmodule.exports = flatten\n","/**\n * @alias module:modeling/utils.fnNumberSort\n */\nconst fnNumberSort = (a, b) => a - b\n\nmodule.exports = fnNumberSort\n","/**\n * Utility functions of various sorts.\n * @module modeling/utils\n * @example\n * const { flatten, insertSorted } = require('@jscad/modeling').utils\n */\nmodule.exports = {\n  areAllShapesTheSameType: require('./areAllShapesTheSameType'),\n  cos: require('./trigonometry').cos,\n  degToRad: require('./degToRad'),\n  flatten: require('./flatten'),\n  fnNumberSort: require('./fnNumberSort'),\n  insertSorted: require('./insertSorted'),\n  radiusToSegments: require('./radiusToSegments'),\n  radToDeg: require('./radToDeg'),\n  sin: require('./trigonometry').sin\n}\n","/**\n * Insert the given element into the give array using the compareFunction.\n * @alias module:modeling/utils.insertSorted\n */\nconst insertSorted = (array, element, comparefunc) => {\n  let leftbound = 0\n  let rightbound = array.length\n  while (rightbound > leftbound) {\n    const testindex = Math.floor((leftbound + rightbound) / 2)\n    const testelement = array[testindex]\n    const compareresult = comparefunc(element, testelement)\n    if (compareresult > 0) { // element > testelement\n      leftbound = testindex + 1\n    } else {\n      rightbound = testindex\n    }\n  }\n  array.splice(leftbound, 0, element)\n}\n\nmodule.exports = insertSorted\n","/**\n * Build an array of at minimum a specified length from an existing array and a padding value. IF the array is already larger than the target length, it will not be shortened.\n * @param {Array} anArray - the source array to copy into the result.\n * @param {*} padding - the value to add to the new array to reach the desired length.\n * @param {Number} targetLength - The desired length of the return array.\n * @returns {Array} an array of at least 'targetLength' length\n * @alias module:modeling/utils.padArrayToLength\n */\nconst padArrayToLength = (anArray, padding, targetLength) => {\n  anArray = anArray.slice()\n  while (anArray.length < targetLength) {\n    anArray.push(padding)\n  }\n  return anArray\n}\n\nmodule.exports = padArrayToLength\n","/**\n * Convert the given angle (radians) to degrees.\n * @param {Number} radians - angle in radians\n * @returns {Number} angle in degrees\n * @alias module:modeling/utils.radToDeg\n */\nconst radToDeg = (radians) => radians * 57.29577951308232\n\nmodule.exports = radToDeg\n","/**\n * Calculate the number of segments from the given radius based on minimum length or angle.\n * @param {Number} radius - radius of the requested shape\n * @param {Number} minimumLength - minimum length of segments; 0 > length\n * @param {Number} minimumAngle - minimum angle (radians) between segments; 0 > angle < Math.PI * 2\n * @returns {Number} number of segments to complete the radius\n * @alias module:modeling/utils.radiusToSegments\n */\nconst radiusToSegments = (radius, minimumLength, minimumAngle) => {\n  const ss = minimumLength > 0 ? radius * 2 * Math.PI / minimumLength : 0\n  const as = minimumAngle > 0 ? Math.PI * 2 / minimumAngle : 0\n  // minimum segments is four(4) for round primitives\n  return Math.ceil(Math.max(ss, as, 4))\n}\n\nmodule.exports = radiusToSegments\n","const { NEPS } = require('../maths/constants')\n\n/*\n * Returns zero if n is within epsilon of zero, otherwise return n\n */\nconst rezero = (n) => Math.abs(n) < NEPS ? 0 : n\n\n/**\n * Return Math.sin but accurate for 90 degree rotations.\n * Fixes rounding errors when sin should be 0.\n *\n * @param {Number} radians - angle in radians\n * @returns {Number} sine of the given angle\n * @alias module:modeling/utils.sin\n * @example\n * sin(Math.PI) == 0\n * sin(2 * Math.PI) == 0\n */\nconst sin = (radians) => rezero(Math.sin(radians))\n\n/**\n * Return Math.cos but accurate for 90 degree rotations.\n * Fixes rounding errors when cos should be 0.\n *\n * @param {Number} radians - angle in radians\n * @returns {Number} cosine of the given angle\n * @alias module:modeling/utils.cos\n * @example\n * cos(0.5 * Math.PI) == 0\n * cos(1.5 * Math.PI) == 0\n */\nconst cos = (radians) => rezero(Math.cos(radians))\n\nmodule.exports = { sin, cos }\n","/* Mapbox GL JS is Copyright © 2020 Mapbox and subject to the Mapbox Terms of Service ((https://www.mapbox.com/legal/tos/). */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.mapboxgl = factory());\n}(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n    shared = chunk;\n} else if (!worker) {\n    worker = chunk;\n} else {\n    var workerBundleString = \"self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; (\" + shared + \")(sharedChunk); (\" + worker + \")(sharedChunk); self.onerror = null;\"\n\n    var sharedChunk = {};\n    shared(sharedChunk);\n    mapboxgl = chunk(sharedChunk);\n    if (typeof window !== 'undefined' && window && window.URL && window.URL.createObjectURL) {\n        mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n    }\n}\n}\n\n\ndefine([\"exports\"],(function(t){\"use strict\";var e=\"2.7.1\",r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n;}n.prototype.sampleCurveX=function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return ((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,s,a;for(void 0===e&&(e=1e-6),i=t,a=0;a<8;a++){if(s=this.sampleCurveX(i)-t,Math.abs(s)<e)return i;var o=this.sampleCurveDerivativeX(i);if(Math.abs(o)<1e-6)break;i-=s/o;}if((i=t)<(r=0))return r;if(i>(n=1))return n;for(;r<n;){if(s=this.sampleCurveX(i),Math.abs(s-t)<e)return i;t>s?r=i:n=i,i=.5*(n-r)+r;}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=s;function s(t,e){this.x=t,this.y=e;}s.prototype={clone:function(){return new s(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},s.convert=function(t){return t instanceof s?t:Array.isArray(t)?new s(t[0],t[1]):t};var a=\"undefined\"!=typeof self?self:{},o=1e-6,l=\"undefined\"!=typeof Float32Array?Float32Array:Array;function u(){var t=new l(9);return l!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function c(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function h(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],d=e[10],f=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=r[0],b=r[1],w=r[2],_=r[3];return t[0]=v*n+b*o+w*h+_*y,t[1]=v*i+b*l+w*p+_*m,t[2]=v*s+b*u+w*d+_*g,t[3]=v*a+b*c+w*f+_*x,t[4]=(v=r[4])*n+(b=r[5])*o+(w=r[6])*h+(_=r[7])*y,t[5]=v*i+b*l+w*p+_*m,t[6]=v*s+b*u+w*d+_*g,t[7]=v*a+b*c+w*f+_*x,t[8]=(v=r[8])*n+(b=r[9])*o+(w=r[10])*h+(_=r[11])*y,t[9]=v*i+b*l+w*p+_*m,t[10]=v*s+b*u+w*d+_*g,t[11]=v*a+b*c+w*f+_*x,t[12]=(v=r[12])*n+(b=r[13])*o+(w=r[14])*h+(_=r[15])*y,t[13]=v*i+b*l+w*p+_*m,t[14]=v*s+b*u+w*d+_*g,t[15]=v*a+b*c+w*f+_*x,t}function p(t,e,r){var n,i,s,a,o,l,u,c,h,p,d,f,y=r[0],m=r[1],g=r[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],d=e[10],f=e[11],t[0]=n=e[0],t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=d,t[11]=f,t[12]=n*y+o*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=s*y+u*m+d*g+e[14],t[15]=a*y+c*m+f*g+e[15]),t}function d(t,e,r){var n=r[0],i=r[1],s=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function f(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[4],a=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=s*i+u*n,t[5]=a*i+c*n,t[6]=o*i+h*n,t[7]=l*i+p*n,t[8]=u*i-s*n,t[9]=c*i-a*n,t[10]=h*i-o*n,t[11]=p*i-l*n,t}function y(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i-u*n,t[1]=a*i-c*n,t[2]=o*i-h*n,t[3]=l*i-p*n,t[8]=s*n+u*i,t[9]=a*n+c*i,t[10]=o*n+h*i,t[11]=l*n+p*i,t}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var m=h;function g(){var t=new l(3);return l!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function x(t){var e=new l(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function v(t){return Math.hypot(t[0],t[1],t[2])}function b(t,e,r){var n=new l(3);return n[0]=t,n[1]=e,n[2]=r,n}function w(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function _(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function A(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function k(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function S(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function I(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}function z(t,e){var r=e[0],n=e[1],i=e[2],s=r*r+n*n+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}function M(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function T(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[0],o=r[1],l=r[2];return t[0]=i*l-s*o,t[1]=s*a-n*l,t[2]=n*o-i*a,t}function B(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[3]*n+r[7]*i+r[11]*s+r[15];return t[0]=(r[0]*n+r[4]*i+r[8]*s+r[12])/(a=a||1),t[1]=(r[1]*n+r[5]*i+r[9]*s+r[13])/a,t[2]=(r[2]*n+r[6]*i+r[10]*s+r[14])/a,t}function C(t,e,r){var n=r[0],i=r[1],s=r[2],a=e[0],o=e[1],l=e[2],u=i*l-s*o,c=s*a-n*l,h=n*o-i*a,p=i*h-s*c,d=s*u-n*h,f=n*c-i*u,y=2*r[3];return c*=y,h*=y,d*=2,f*=2,t[0]=a+(u*=y)+(p*=2),t[1]=o+c+d,t[2]=l+h+f,t}var P,E=_,D=A,V=v;function F(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*s+r[12]*a,t[1]=r[1]*n+r[5]*i+r[9]*s+r[13]*a,t[2]=r[2]*n+r[6]*i+r[10]*s+r[14]*a,t[3]=r[3]*n+r[7]*i+r[11]*s+r[15]*a,t}function L(){var t=new l(4);return l!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function R(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function U(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+a*o,t[1]=i*l+s*o,t[2]=s*l-i*o,t[3]=a*l-n*o,t}function $(t,e){return t[0]===e[0]&&t[1]===e[1]}g(),P=new l(4),l!=Float32Array&&(P[0]=0,P[1]=0,P[2]=0,P[3]=0),g(),b(1,0,0),b(0,1,0),L(),L(),u(),function(){var t;t=new l(2),l!=Float32Array&&(t[0]=0,t[1]=0);}();const O=Math.PI/180,j=180/Math.PI;function q(t){return t*O}function N(t){return t*j}const G=[[0,0],[1,0],[1,1],[0,1]];function Z(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function X(t,e,n,i){const s=new r(t,e,n,i);return function(t){return s.solve(t)}}const K=X(.25,.1,.25,1);function Y(t,e,r){return Math.min(r,Math.max(e,t))}function H(t,e,r){return (r=Y((r-t)/(e-t),0,1))*r*(3-2*r)}function J(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function W(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let s=null;t.forEach(((t,a)=>{e(t,((t,e)=>{t&&(s=t),i[a]=e,0==--n&&r(s,i);}));}));}function Q(t){const e=[];for(const r in t)e.push(t[r]);return e}function tt(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let et=1;function rt(){return et++}function nt(){return function t(e){return e?(e^16*Math.random()>>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function it(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function st(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function at(t,e){t.forEach((t=>{e[t]&&(e[t]=e[t].bind(e));}));}function ot(t,e){return -1!==t.indexOf(e,t.length-e.length)}function lt(t,e,r){const n={};for(const i in t)n[i]=e.call(r||this,t[i],i,t);return n}function ut(t,e,r){const n={};for(const i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function ct(t){return Array.isArray(t)?t.map(ct):\"object\"==typeof t&&t?lt(t,ct):t}const ht={};function pt(t){ht[t]||(\"undefined\"!=typeof console&&console.warn(t),ht[t]=!0);}function dt(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function ft(t){let e=0;for(let r,n,i=0,s=t.length,a=s-1;i<s;a=i++)r=t[i],n=t[a],e+=(n.x-r.x)*(r.y+n.y);return e}function yt(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}function mt(t){const e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,((t,r,n,i)=>{const s=n||i;return e[r]=!s||s.toLowerCase(),\"\"})),e[\"max-age\"]){const t=parseInt(e[\"max-age\"],10);isNaN(t)?delete e[\"max-age\"]:e[\"max-age\"]=t;}return e}let gt,xt,vt,bt=null;function wt(t){if(null==bt){const e=t.navigator?t.navigator.userAgent:null;bt=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return bt}function _t(t){try{const e=a[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return !1}}const At={now:()=>void 0!==vt?vt:a.performance.now(),setNow(t){vt=t;},restoreNow(){vt=void 0;},frame(t){const e=a.requestAnimationFrame(t);return {cancel:()=>a.cancelAnimationFrame(e)}},getImageData(t,e=0){const r=a.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:t=>(gt||(gt=a.document.createElement(\"a\")),gt.href=t,gt.href),get devicePixelRatio(){return a.devicePixelRatio},get prefersReducedMotion(){return !!a.matchMedia&&(null==xt&&(xt=a.matchMedia(\"(prefers-reduced-motion: reduce)\")),xt.matches)}};let kt;const St={API_URL:\"https://api.mapbox.com\",get API_URL_REGEX(){if(null==kt){const t=/^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;try{kt=null!=process.env.API_URL_REGEX?new RegExp(process.env.API_URL_REGEX):t;}catch(e){kt=t;}}return kt},get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},SESSION_PATH:\"/map-sessions/v1\",FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",TILE_URL_VERSION:\"v4\",RASTER_URL_PREFIX:\"raster/v1\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},It={supported:!1,testSupport:function(t){!Tt&&Mt&&(Bt?Ct(t):zt=t);}};let zt,Mt,Tt=!1,Bt=!1;function Ct(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,Mt),t.isContextLost())return;It.supported=!0;}catch(t){}t.deleteTexture(e),Tt=!0;}a.document&&(Mt=a.document.createElement(\"img\"),Mt.onload=function(){zt&&Ct(zt),zt=null,Bt=!0;},Mt.onerror=function(){Tt=!0,zt=null;},Mt.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");const Pt=\"01\",Et=\"NO_ACCESS_TOKEN\";function Dt(t){return 0===t.indexOf(\"mapbox:\")}function Vt(t){return St.API_URL_REGEX.test(t)}const Ft=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function Lt(t){const e=t.match(Ft);if(!e)throw new Error(\"Unable to parse URL object\");return {protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function Rt(t){const e=t.params.length?`?${t.params.join(\"&\")}`:\"\";return `${t.protocol}://${t.authority}${t.path}${e}`}function Ut(t){if(!t)return null;const e=t.split(\".\");if(!e||3!==e.length)return null;try{return JSON.parse(decodeURIComponent(a.atob(e[1]).split(\"\").map((t=>\"%\"+(\"00\"+t.charCodeAt(0).toString(16)).slice(-2))).join(\"\")))}catch(t){return null}}class $t{constructor(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null;}getStorageKey(t){const e=Ut(St.ACCESS_TOKEN);let r=\"\";return r=e&&e.u?a.btoa(encodeURIComponent(e.u).replace(/%([0-9A-F]{2})/g,((t,e)=>String.fromCharCode(Number(\"0x\"+e))))):St.ACCESS_TOKEN||\"\",t?`mapbox.eventData.${t}:${r}`:`mapbox.eventData:${r}`}fetchEventData(){const t=_t(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{const t=a.localStorage.getItem(e);t&&(this.eventData=JSON.parse(t));const n=a.localStorage.getItem(r);n&&(this.anonId=n);}catch(t){pt(\"Unable to read from LocalStorage\");}}saveEventData(){const t=_t(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{a.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&a.localStorage.setItem(e,JSON.stringify(this.eventData));}catch(t){pt(\"Unable to write to LocalStorage\");}}processRequests(t){}postEvent(t,r,n,i){if(!St.EVENTS_URL)return;const s=Lt(St.EVENTS_URL);s.params.push(`access_token=${i||St.ACCESS_TOKEN||\"\"}`);const a={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:e,skuId:Pt,userId:this.anonId},o=r?tt(a,r):a,l={url:Rt(s),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([o])};this.pendingRequest=oe(l,(t=>{this.pendingRequest=null,n(t),this.saveEventData(),this.processRequests(i);}));}queueRequest(t,e){this.queue.push(t),this.processRequests(e);}}const Ot=new class extends $t{constructor(t){super(\"appUserTurnstile\"),this._customAccessToken=t;}postTurnstileEvent(t,e){St.EVENTS_URL&&St.ACCESS_TOKEN&&Array.isArray(t)&&t.some((t=>Dt(t)||Vt(t)))&&this.queueRequest(Date.now(),e);}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const e=Ut(St.ACCESS_TOKEN),r=e?e.u:St.ACCESS_TOKEN;let n=r!==this.eventData.tokenU;st(this.anonId)||(this.anonId=nt(),n=!0);const i=this.queue.shift();if(this.eventData.lastSuccess){const t=new Date(this.eventData.lastSuccess),e=new Date(i),r=(i-this.eventData.lastSuccess)/864e5;n=n||r>=1||r<-1||t.getDate()!==e.getDate();}else n=!0;if(!n)return this.processRequests();this.postEvent(i,{\"enabled.telemetry\":!1},(t=>{t||(this.eventData.lastSuccess=i,this.eventData.tokenU=r);}),t);}},jt=Ot.postTurnstileEvent.bind(Ot),qt=new class extends $t{constructor(){super(\"map.load\"),this.success={},this.skuToken=\"\";}postMapLoadEvent(t,e,r,n){this.skuToken=e,this.errorCb=n,St.EVENTS_URL&&(r||St.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(Et)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:e,timestamp:r}=this.queue.shift();e&&this.success[e]||(this.anonId||this.fetchEventData(),st(this.anonId)||(this.anonId=nt()),this.postEvent(r,{skuToken:this.skuToken},(t=>{t?this.errorCb(t):e&&(this.success[e]=!0);}),t));}},Nt=qt.postMapLoadEvent.bind(qt),Gt=new class extends $t{constructor(){super(\"map.auth\"),this.success={},this.skuToken=\"\";}getSession(t,e,r,n){if(!St.API_URL||!St.SESSION_PATH)return;const i=Lt(St.API_URL+St.SESSION_PATH);i.params.push(`sku=${e||\"\"}`),i.params.push(`access_token=${n||St.ACCESS_TOKEN||\"\"}`);const s={url:Rt(i),headers:{\"Content-Type\":\"text/plain\"}};this.pendingRequest=le(s,(t=>{this.pendingRequest=null,r(t),this.saveEventData(),this.processRequests(n);}));}getSessionAPI(t,e,r,n){this.skuToken=e,this.errorCb=n,St.SESSION_PATH&&St.API_URL&&(r||St.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(Et)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:e,timestamp:r}=this.queue.shift();e&&this.success[e]||this.getSession(r,this.skuToken,(t=>{t?this.errorCb(t):e&&(this.success[e]=!0);}),t);}},Zt=Gt.getSessionAPI.bind(Gt),Xt=new Set,Kt=\"mapbox-tiles\";let Yt,Ht,Jt=500,Wt=50;function Qt(){a.caches&&!Yt&&(Yt=a.caches.open(Kt));}function te(t){const e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}let ee=1/0;const re={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(re);class ne extends Error{constructor(t,e,r){401===e&&Vt(r)&&(t+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),super(t),this.status=e,this.url=r;}toString(){return `${this.name}: ${this.message} (${this.status}): ${this.url}`}}const ie=yt()?()=>self.worker&&self.worker.referrer:()=>(\"blob:\"===a.location.protocol?a.parent:a).location.href;const se=function(t,e){if(!(/^file:/.test(r=t.url)||/^file:/.test(ie())&&!/^\\w+:/.test(r))){if(a.fetch&&a.Request&&a.AbortController&&a.Request.prototype.hasOwnProperty(\"signal\"))return function(t,e){const r=new a.AbortController,n=new a.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:ie(),signal:r.signal});let i=!1,s=!1;const o=(l=n.url).indexOf(\"sku=\")>0&&Vt(l);var l;\"json\"===t.type&&n.headers.set(\"Accept\",\"application/json\");const u=(r,i,l)=>{if(s)return;if(r&&\"SecurityError\"!==r.message&&pt(r),i&&l)return c(i);const u=Date.now();a.fetch(n).then((r=>{if(r.ok){const t=o?r.clone():null;return c(r,t,u)}return e(new ne(r.statusText,r.status,t.url))})).catch((t=>{20!==t.code&&e(new Error(t.message));}));},c=(r,o,l)=>{(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((t=>{s||(o&&l&&function(t,e,r){if(Qt(),!Yt)return;const n={status:e.status,statusText:e.statusText,headers:new a.Headers};e.headers.forEach(((t,e)=>n.headers.set(e,t)));const i=mt(e.headers.get(\"Cache-Control\")||\"\");i[\"no-store\"]||(i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===Ht)try{new Response(new ReadableStream),Ht=!0;}catch(t){Ht=!1;}Ht?e(t.body):t.blob().then(e);}(e,(e=>{const r=new a.Response(e,n);Qt(),Yt&&Yt.then((e=>e.put(te(t.url),r))).catch((t=>pt(t.message)));})));}(n,o,l),i=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")));})).catch((t=>{s||e(new Error(t.message));}));};return o?function(t,e){if(Qt(),!Yt)return e(null);const r=te(t.url);Yt.then((t=>{t.match(r).then((n=>{const i=function(t){if(!t)return !1;const e=new Date(t.headers.get(\"Expires\")||0),r=mt(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i);})).catch(e);})).catch(e);}(n,u):u(null,null),{cancel:()=>{s=!0,i||r.abort();}}}(t,e);if(yt()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}var r;return function(t,e){const r=new a.XMLHttpRequest;r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\");for(const e in t.headers)r.setRequestHeader(e,t.headers[e]);return \"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=()=>{e(new Error(r.statusText));},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else e(new ne(r.statusText,r.status,t.url));},r.send(t.body),{cancel:()=>r.abort()}}(t,e)},ae=function(t,e){return se(tt(t,{type:\"arrayBuffer\"}),e)},oe=function(t,e){return se(tt(t,{method:\"POST\"}),e)},le=function(t,e){return se(tt(t,{method:\"GET\"}),e)};function ue(t){const e=a.document.createElement(\"a\");return e.href=t,e.protocol===a.document.location.protocol&&e.host===a.document.location.host}const ce=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";let he,pe;he=[],pe=0;const de=function(t,e){if(It.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),pe>=St.MAX_PARALLEL_IMAGE_REQUESTS){const r={requestParameters:t,callback:e,cancelled:!1,cancel(){this.cancelled=!0;}};return he.push(r),r}pe++;let r=!1;const n=()=>{if(!r)for(r=!0,pe--;he.length&&pe<St.MAX_PARALLEL_IMAGE_REQUESTS;){const t=he.shift(),{requestParameters:e,callback:r,cancelled:n}=t;n||(t.cancel=de(e,r).cancel);}},i=ae(t,((t,r,i,s)=>{n(),t?e(t):r&&(a.createImageBitmap?function(t,e){const r=new a.Blob([new Uint8Array(t)],{type:\"image/png\"});a.createImageBitmap(r).then((t=>{e(null,t);})).catch((t=>{e(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));}(r,((t,r)=>e(t,r,i,s))):function(t,e){const r=new a.Image,n=a.URL;r.onload=()=>{e(null,r),n.revokeObjectURL(r.src),r.onload=null,a.requestAnimationFrame((()=>{r.src=ce;}));},r.onerror=()=>e(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));const i=new a.Blob([new Uint8Array(t)],{type:\"image/png\"});r.src=t.byteLength?n.createObjectURL(i):ce;}(r,((t,r)=>e(t,r,i,s))));}));return {cancel:()=>{i.cancel(),n();}}};function fe(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function ye(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class me{constructor(t,e={}){tt(this,e),this.type=t;}}class ge extends me{constructor(t,e={}){super(\"error\",tt({error:t},e));}}class xe{on(t,e){return this._listeners=this._listeners||{},fe(t,e,this._listeners),this}off(t,e){return ye(t,e,this._listeners),ye(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},fe(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){\"string\"==typeof t&&(t=new me(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)ye(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(tt(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof ge&&console.error(t.error);return this}listens(t){return !!(this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t))}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var ve=JSON.parse('{\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"terrain\":{\"type\":\"terrain\"},\"fog\":{\"type\":\"fog\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"projection\":{\"type\":\"projection\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],\"source_vector\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"attribution\":{\"type\":\"string\"},\"promoteId\":{\"type\":\"promoteId\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"attribution\":{\"type\":\"string\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster_dem\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster-dem\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"attribution\":{\"type\":\"string\"},\"encoding\":{\"type\":\"enum\",\"values\":{\"terrarium\":{},\"mapbox\":{}},\"default\":\"mapbox\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"attribution\":{\"type\":\"string\"},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"filter\":{\"type\":\"*\"},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"},\"clusterMinPoints\":{\"type\":\"number\"},\"clusterProperties\":{\"type\":\"*\"},\"lineMetrics\":{\"type\":\"boolean\",\"default\":false},\"generateId\":{\"type\":\"boolean\",\"default\":false},\"promoteId\":{\"type\":\"promoteId\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"heatmap\":{},\"fill-extrusion\":{},\"raster\":{},\"hillshade\":{},\"background\":{},\"sky\":{}},\"required\":true},\"metadata\":{\"type\":\"*\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\",\"layout_sky\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_sky\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill\":{\"fill-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_circle\":{\"circle-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_heatmap\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-join\":{\"type\":\"enum\",\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"requires\":[{\"line-join\":\"miter\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"requires\":[{\"line-join\":\"round\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"values\":{\"point\":{},\"line\":{},\"line-center\":{}},\"default\":\"point\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"default\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"viewport-y\":{},\"source\":{}},\"default\":\"auto\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{\"type\":\"enum\",\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{\"type\":\"resolvedImage\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{\"type\":\"formatted\",\"default\":\"\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{\"type\":\"number\",\"units\":\"ems\",\"default\":0,\"requires\":[\"text-field\"],\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\",{\"!\":\"text-variable-anchor\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"horizontal\":{},\"vertical\":{}},\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{\"type\":\"boolean\",\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{\"type\":\"enum\",\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\",{\"!\":\"text-radial-offset\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\",\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_hillshade\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_symbol\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\",\"pitch\",\"distance-from-center\"]}},\"filter_fill\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_line\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_circle\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_fill-extrusion\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_heatmap\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{},\"within\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"expression\":{\"type\":\"expression\"},\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":24,\"value\":[\"number\",\"color\"],\"length\":2},\"expression\":{\"type\":\"array\",\"value\":\"*\",\"minimum\":1},\"fog\":{\"range\":{\"type\":\"array\",\"default\":[0.5,10],\"minimum\":-20,\"maximum\":20,\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"horizon-blend\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":0.1,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"property-type\":\"data-constant\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]}},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"projection\":{\"name\":{\"type\":\"enum\",\"values\":{\"albers\":{},\"equalEarth\":{},\"equirectangular\":{},\"lambertConformalConic\":{},\"mercator\":{},\"naturalEarth\":{},\"winkelTripel\":{}},\"default\":\"mercator\",\"required\":true},\"center\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]},\"parallels\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]}},\"terrain\":{\"source\":{\"type\":\"string\",\"required\":true},\"exaggeration\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":1,\"minimum\":0,\"maximum\":1000,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\",\"paint_sky\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"default\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{\"type\":\"color\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{\"type\":\"boolean\",\"default\":true,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"minimum\":0,\"transition\":true,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{\"type\":\"color\",\"transition\":false,\"requires\":[{\"!\":\"line-pattern\"},{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"expression\":{\"interpolated\":true,\"parameters\":[\"line-progress\"]},\"property-type\":\"color-ramp\"}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},\"paint_heatmap\":{\"heatmap-radius\":{\"type\":\"number\",\"default\":30,\"minimum\":1,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",0.1,\"royalblue\",0.3,\"cyan\",0.5,\"lime\",0.7,\"yellow\",1,\"red\"],\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"overridable\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"transition\":true,\"units\":\"degrees\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{\"type\":\"enum\",\"values\":{\"linear\":{},\"nearest\":{}},\"default\":\"linear\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"transition\":false,\"units\":\"milliseconds\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_hillshade\":{\"hillshade-illumination-direction\":{\"type\":\"number\",\"default\":335,\"minimum\":0,\"maximum\":359,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{\"type\":\"color\",\"default\":\"#FFFFFF\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_sky\":{\"sky-type\":{\"type\":\"enum\",\"values\":{\"gradient\":{},\"atmosphere\":{}},\"default\":\"atmosphere\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun-intensity\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"atmosphere\"}],\"default\":10,\"minimum\":0,\"maximum\":100,\"transition\":false,\"property-type\":\"data-constant\"},\"sky-gradient-center\":{\"type\":\"array\",\"requires\":[{\"sky-type\":\"gradient\"}],\"value\":\"number\",\"default\":[0,0],\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient-radius\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"gradient\"}],\"default\":90,\"minimum\":0,\"maximum\":180,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"sky-radial-progress\"],0.8,\"#87ceeb\",1,\"white\"],\"transition\":false,\"requires\":[{\"sky-type\":\"gradient\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"sky-radial-progress\"]},\"property-type\":\"color-ramp\"},\"sky-atmosphere-halo-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-atmosphere-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}},\"property-type\":{\"data-driven\":{\"type\":\"property-type\"},\"cross-faded\":{\"type\":\"property-type\"},\"cross-faded-data-driven\":{\"type\":\"property-type\"},\"color-ramp\":{\"type\":\"property-type\"},\"data-constant\":{\"type\":\"property-type\"},\"constant\":{\"type\":\"property-type\"}},\"promoteId\":{\"*\":{\"type\":\"string\"}}}');class be{constructor(t,e,r,n){this.message=(t?`${t}: `:\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function we(t){const e=t.value;return e?[new be(t.key,e,\"constants have been deprecated as of v8\")]:[]}function _e(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}function Ae(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function ke(t){if(Array.isArray(t))return t.map(ke);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=ke(t[r]);return e}return Ae(t)}class Se extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class Ie{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new Ie(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const ze={kind:\"null\"},Me={kind:\"number\"},Te={kind:\"string\"},Be={kind:\"boolean\"},Ce={kind:\"color\"},Pe={kind:\"object\"},Ee={kind:\"value\"},De={kind:\"collator\"},Ve={kind:\"formatted\"},Fe={kind:\"resolvedImage\"};function Le(t,e){return {kind:\"array\",itemType:t,N:e}}function Re(t){if(\"array\"===t.kind){const e=Re(t.itemType);return \"number\"==typeof t.N?`array<${e}, ${t.N}>`:\"value\"===t.itemType.kind?\"array\":`array<${e}>`}return t.kind}const Ue=[ze,Me,Te,Be,Ce,Ve,Pe,Le(Ee),Fe];function $e(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!$e(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(const t of Ue)if(!$e(t,e))return null}return `Expected ${Re(t)} but found ${Re(e)} instead.`}function Oe(t,e){return e.some((e=>e.kind===t.kind))}function je(t,e){return e.some((e=>\"null\"===e?null===t:\"array\"===e?Array.isArray(t):\"object\"===e?t&&!Array.isArray(t)&&\"object\"==typeof t:e===typeof t))}function qe(t){var e={exports:{}};return t(e,e.exports),e.exports}var Ne=qe((function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return (t=Math.round(t))<0?0:t>255?255:t}function i(t){return n(\"%\"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function s(t){return (e=\"%\"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e;}function a(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,o=t.replace(/ /g,\"\").toLowerCase();if(o in r)return r[o].slice();if(\"#\"===o[0])return 4===o.length?(e=parseInt(o.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===o.length&&(e=parseInt(o.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=o.indexOf(\"(\"),u=o.indexOf(\")\");if(-1!==l&&u+1===o.length){var c=o.substr(0,l),h=o.substr(l+1,u-(l+1)).split(\",\"),p=1;switch(c){case\"rgba\":if(4!==h.length)return null;p=s(h.pop());case\"rgb\":return 3!==h.length?null:[i(h[0]),i(h[1]),i(h[2]),p];case\"hsla\":if(4!==h.length)return null;p=s(h.pop());case\"hsl\":if(3!==h.length)return null;var d=(parseFloat(h[0])%360+360)%360/360,f=s(h[1]),y=s(h[2]),m=y<=.5?y*(f+1):y+f-y*f,g=2*y-m;return [n(255*a(g,m,d+1/3)),n(255*a(g,m,d)),n(255*a(g,m,d-1/3)),p];default:return null}}return null};}catch(t){}}));class Ge{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n;}static parse(t){if(!t)return;if(t instanceof Ge)return t;if(\"string\"!=typeof t)return;const e=Ne.parseCSSColor(t);return e?new Ge(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]):void 0}toString(){const[t,e,r,n]=this.toArray();return `rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})`}toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]}}Ge.black=new Ge(0,0,0,1),Ge.white=new Ge(1,1,1,1),Ge.transparent=new Ge(0,0,0,0),Ge.red=new Ge(1,0,0,1),Ge.blue=new Ge(0,0,1,1);class Ze{constructor(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Xe{constructor(t,e,r,n,i){this.text=t.normalize?t.normalize():t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class Ke{constructor(t){this.sections=t;}static fromString(t){return new Ke([new Xe(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof Ke?t:Ke.fromString(t)}toString(){return 0===this.sections.length?\"\":this.sections.map((t=>t.text)).join(\"\")}serialize(){const t=[\"format\"];for(const e of this.sections){if(e.image){t.push([\"image\",e.image.name]);continue}t.push(e.text);const r={};e.fontStack&&(r[\"text-font\"]=[\"literal\",e.fontStack.split(\",\")]),e.scale&&(r[\"font-scale\"]=e.scale),e.textColor&&(r[\"text-color\"]=[\"rgba\"].concat(e.textColor.toArray())),t.push(r);}return t}}class Ye{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new Ye({name:t,available:!1}):null}serialize(){return [\"image\",this.name]}}function He(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Je(t){if(null===t)return !0;if(\"string\"==typeof t)return !0;if(\"boolean\"==typeof t)return !0;if(\"number\"==typeof t)return !0;if(t instanceof Ge)return !0;if(t instanceof Ze)return !0;if(t instanceof Ke)return !0;if(t instanceof Ye)return !0;if(Array.isArray(t)){for(const e of t)if(!Je(e))return !1;return !0}if(\"object\"==typeof t){for(const e in t)if(!Je(t[e]))return !1;return !0}return !1}function We(t){if(null===t)return ze;if(\"string\"==typeof t)return Te;if(\"boolean\"==typeof t)return Be;if(\"number\"==typeof t)return Me;if(t instanceof Ge)return Ce;if(t instanceof Ze)return De;if(t instanceof Ke)return Ve;if(t instanceof Ye)return Fe;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=We(e);if(r){if(r===t)continue;r=Ee;break}r=t;}return Le(r||Ee,e)}return Pe}function Qe(t){const e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof Ge||t instanceof Ke||t instanceof Ye?t.toString():JSON.stringify(t)}class tr{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!Je(t[1]))return e.error(\"invalid value\");const r=t[1];let n=We(r);const i=e.expectedType;return \"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new tr(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}serialize(){return \"array\"===this.type.kind||\"object\"===this.type.kind?[\"literal\",this.value]:this.value instanceof Ge?[\"rgba\"].concat(this.value.toArray()):this.value instanceof Ke?this.value.serialize():this.value}}class er{constructor(t){this.name=\"ExpressionEvaluationError\",this.message=t;}toJSON(){return this.message}}const rr={string:Te,number:Me,boolean:Be,object:Pe};class nr{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");let r,n=1;const i=t[0];if(\"array\"===i){let i,s;if(t.length>2){const r=t[1];if(\"string\"!=typeof r||!(r in rr)||\"object\"===r)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);i=rr[r],n++;}else i=Ee;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);s=t[2],n++;}r=Le(i,s);}else r=rr[i];const s=[];for(;n<t.length;n++){const r=e.parse(t[n],n,Ee);if(!r)return null;s.push(r);}return new nr(r,s)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!$e(this.type,We(r)))return r;if(e===this.args.length-1)throw new er(`Expected value to be of type ${Re(this.type)}, but found ${Re(We(r))} instead.`)}return null}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=this.type,e=[t.kind];if(\"array\"===t.kind){const r=t.itemType;if(\"string\"===r.kind||\"number\"===r.kind||\"boolean\"===r.kind){e.push(r.kind);const n=t.N;(\"number\"==typeof n||this.args.length>1)&&e.push(n);}}return e.concat(this.args.map((t=>t.serialize())))}}class ir{constructor(t){this.type=Ve,this.sections=t;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const s=t[r];if(i&&\"object\"==typeof s&&!Array.isArray(s)){i=!1;let t=null;if(s[\"font-scale\"]&&(t=e.parse(s[\"font-scale\"],1,Me),!t))return null;let r=null;if(s[\"text-font\"]&&(r=e.parse(s[\"text-font\"],1,Le(Te)),!r))return null;let a=null;if(s[\"text-color\"]&&(a=e.parse(s[\"text-color\"],1,Ce),!a))return null;const o=n[n.length-1];o.scale=t,o.font=r,o.textColor=a;}else {const s=e.parse(t[r],1,Ee);if(!s)return null;const a=s.type.kind;if(\"string\"!==a&&\"value\"!==a&&\"null\"!==a&&\"resolvedImage\"!==a)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:s,scale:null,font:null,textColor:null});}}return new ir(n)}evaluate(t){return new Ke(this.sections.map((e=>{const r=e.content.evaluate(t);return We(r)===Fe?new Xe(\"\",r,null,null,null):new Xe(Qe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor);}outputDefined(){return !1}serialize(){const t=[\"format\"];for(const e of this.sections){t.push(e.content.serialize());const r={};e.scale&&(r[\"font-scale\"]=e.scale.serialize()),e.font&&(r[\"text-font\"]=e.font.serialize()),e.textColor&&(r[\"text-color\"]=e.textColor.serialize()),t.push(r);}return t}}class sr{constructor(t){this.type=Fe,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,Te);return r?new sr(r):e.error(\"No image name provided.\")}evaluate(t){const e=this.input.evaluate(t),r=Ye.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){return [\"image\",this.input.serialize()]}}const ar={\"to-boolean\":Be,\"to-color\":Ce,\"to-number\":Me,\"to-string\":Te};class or{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");const n=ar[r],i=[];for(let r=1;r<t.length;r++){const n=e.parse(t[r],r,Ee);if(!n)return null;i.push(n);}return new or(n,i)}evaluate(t){if(\"boolean\"===this.type.kind)return Boolean(this.args[0].evaluate(t));if(\"color\"===this.type.kind){let e,r;for(const n of this.args){if(e=n.evaluate(t),r=null,e instanceof Ge)return e;if(\"string\"==typeof e){const r=t.parseColor(e);if(r)return r}else if(Array.isArray(e)&&(r=e.length<3||e.length>4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:He(e[0],e[1],e[2],e[3]),!r))return new Ge(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new er(r||`Could not parse color from value '${\"string\"==typeof e?e:String(JSON.stringify(e))}'`)}if(\"number\"===this.type.kind){let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new er(`Could not convert ${JSON.stringify(e)} to number.`)}return \"formatted\"===this.type.kind?Ke.fromString(Qe(this.args[0].evaluate(t))):\"resolvedImage\"===this.type.kind?Ye.fromString(Qe(this.args[0].evaluate(t))):Qe(this.args[0].evaluate(t))}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){if(\"formatted\"===this.type.kind)return new ir([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(\"resolvedImage\"===this.type.kind)return new sr(this.args[0]).serialize();const t=[`to-${this.type.kind}`];return this.eachChild((e=>{t.push(e.serialize());})),t}}const lr=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class ur{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null;}id(){return this.feature&&\"id\"in this.feature?this.feature.id:null}geometryType(){return this.feature?\"number\"==typeof this.feature.type?lr[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const t=this.featureDistanceData.center,e=this.featureDistanceData.scale,{x:r,y:n}=this.featureTileCoord;return this.featureDistanceData.bearing[0]*(r*e-t[0])+this.featureDistanceData.bearing[1]*(n*e-t[1])}return 0}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Ge.parse(t)),e}}class cr{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}serialize(){return [this.name].concat(this.args.map((t=>t.serialize())))}static parse(t,e){const r=t[0],n=cr.definitions[r];if(!n)return e.error(`Unknown expression \"${r}\". If you wanted a literal array, use [\"literal\", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,s=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,a=s.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,s]of a){o=new Er(e.registry,e.path,null,e.scope);const a=[];let l=!1;for(let e=1;e<t.length;e++){const r=t[e],i=Array.isArray(n)?n[e-1]:n.type,s=o.parse(r,1+a.length,i);if(!s){l=!0;break}a.push(s);}if(!l)if(Array.isArray(n)&&n.length!==a.length)o.error(`Expected ${n.length} arguments, but found ${a.length} instead.`);else {for(let t=0;t<a.length;t++){const e=Array.isArray(n)?n[t]:n.type,r=a[t];o.concat(t+1).checkSubtype(e,r.type);}if(0===o.errors.length)return new cr(r,i,s,a)}}if(1===a.length)e.errors.push(...o.errors);else {const r=(a.length?a:s).map((([t])=>{return e=t,Array.isArray(e)?`(${e.map(Re).join(\", \")})`:`(${Re(e.type)}...)`;var e;})).join(\" | \"),n=[];for(let r=1;r<t.length;r++){const i=e.parse(t[r],1+n.length);if(!i)return null;n.push(Re(i.type));}e.error(`Expected arguments of type ${r}, but found (${n.join(\", \")}) instead.`);}return null}static register(t,e){cr.definitions=e;for(const r in e)t[r]=cr;}}class hr{constructor(t,e,r){this.type=De,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");const r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");const n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,Be);if(!n)return null;const i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,Be);if(!i)return null;let s=null;return r.locale&&(s=e.parse(r.locale,1,Te),!s)?null:new hr(n,i,s)}evaluate(t){return new Ze(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}serialize(){const t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]}}const pr=8192;function dr(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function fr(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function yr(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*pr),Math.round(n*i*pr)]}function mr(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],s=t[0]-r[0],a=t[1]-r[1];return n*a-s*i==0&&n*s<=0&&i*a<=0}function gr(t,e){let r=!1;for(let a=0,o=e.length;a<o;a++){const o=e[a];for(let e=0,a=o.length;e<a-1;e++){if(mr(t,o[e],o[e+1]))return !1;(i=o[e])[1]>(n=t)[1]!=(s=o[e+1])[1]>n[1]&&n[0]<(s[0]-i[0])*(n[1]-i[1])/(s[1]-i[1])+i[0]&&(r=!r);}}var n,i,s;return r}function xr(t,e){for(let r=0;r<e.length;r++)if(gr(t,e[r]))return !0;return !1}function vr(t,e,r,n){const i=n[0]-r[0],s=n[1]-r[1],a=(t[0]-r[0])*s-i*(t[1]-r[1]),o=(e[0]-r[0])*s-i*(e[1]-r[1]);return a>0&&o<0||a<0&&o>0}function br(t,e,r){for(const u of r)for(let r=0;r<u.length-1;++r)if(0!=(o=[(a=u[r+1])[0]-(s=u[r])[0],a[1]-s[1]])[0]*(l=[(i=e)[0]-(n=t)[0],i[1]-n[1]])[1]-o[1]*l[0]&&vr(n,i,s,a)&&vr(s,a,n,i))return !0;var n,i,s,a,o,l;return !1}function wr(t,e){for(let r=0;r<t.length;++r)if(!gr(t[r],e))return !1;for(let r=0;r<t.length-1;++r)if(br(t[r],t[r+1],e))return !1;return !0}function _r(t,e){for(let r=0;r<e.length;r++)if(wr(t,e[r]))return !0;return !1}function Ar(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=[];for(let n=0;n<t[i].length;n++){const a=yr(t[i][n],r);dr(e,a),s.push(a);}n.push(s);}return n}function kr(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=Ar(t[i],e,r);n.push(s);}return n}function Sr(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}dr(e,t);}function Ir(t,e,r,n){const i=Math.pow(2,n.z)*pr,s=[n.x*pr,n.y*pr],a=[];for(const n of t)for(const t of n){const n=[t.x+s[0],t.y+s[1]];Sr(n,e,r,i),a.push(n);}return a}function zr(t,e,r,n){const i=Math.pow(2,n.z)*pr,s=[n.x*pr,n.y*pr],a=[];for(const r of t){const t=[];for(const n of r){const r=[n.x+s[0],n.y+s[1]];dr(e,r),t.push(r);}a.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of a)for(const n of t)Sr(n,e,r,i);}var o;return a}class Mr{constructor(t,e){this.type=Be,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(Je(t[1])){const e=t[1];if(\"FeatureCollection\"===e.type)for(let t=0;t<e.features.length;++t){const r=e.features[t].geometry.type;if(\"Polygon\"===r||\"MultiPolygon\"===r)return new Mr(e,e.features[t].geometry)}else if(\"Feature\"===e.type){const t=e.geometry.type;if(\"Polygon\"===t||\"MultiPolygon\"===t)return new Mr(e,e.geometry)}else if(\"Polygon\"===e.type||\"MultiPolygon\"===e.type)return new Mr(e,e)}return e.error(\"'within' expression requires valid geojson object that contains polygon geometry type.\")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if(\"Point\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){const s=Ar(e.coordinates,n,i),a=Ir(t.geometry(),r,n,i);if(!fr(r,n))return !1;for(const t of a)if(!gr(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=kr(e.coordinates,n,i),a=Ir(t.geometry(),r,n,i);if(!fr(r,n))return !1;for(const t of a)if(!xr(t,s))return !1}return !0}(t,this.geometries);if(\"LineString\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){const s=Ar(e.coordinates,n,i),a=zr(t.geometry(),r,n,i);if(!fr(r,n))return !1;for(const t of a)if(!wr(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=kr(e.coordinates,n,i),a=zr(t.geometry(),r,n,i);if(!fr(r,n))return !1;for(const t of a)if(!_r(t,s))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}serialize(){return [\"within\",this.geojson]}}function Tr(t){if(t instanceof cr){if(\"get\"===t.name&&1===t.args.length)return !1;if(\"feature-state\"===t.name)return !1;if(\"has\"===t.name&&1===t.args.length)return !1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Mr)return !1;let e=!0;return t.eachChild((t=>{e&&!Tr(t)&&(e=!1);})),e}function Br(t){if(t instanceof cr&&\"feature-state\"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!Br(t)&&(e=!1);})),e}function Cr(t,e){if(t instanceof cr&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!Cr(t,e)&&(r=!1);})),r}class Pr{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");const r=t[1];return e.scope.has(r)?new Pr(r,e.scope.get(r)):e.error(`Unknown variable \"${r}\". Make sure \"${r}\" has been bound in an enclosing \"let\" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}serialize(){return [\"var\",this.name]}}class Er{constructor(t,e=[],r,n=new Ie,i=[]){this.registry=t,this.path=e,this.key=e.map((t=>`[${t}]`)).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return \"assert\"===r?new nr(e,[t]):\"coerce\"===r?new or(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');const n=t[0];if(\"string\"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if(\"string\"!==t.kind&&\"number\"!==t.kind&&\"boolean\"!==t.kind&&\"object\"!==t.kind&&\"array\"!==t.kind||\"value\"!==i.kind)if(\"color\"!==t.kind&&\"formatted\"!==t.kind&&\"resolvedImage\"!==t.kind||\"value\"!==i.kind&&\"string\"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||\"coerce\");else n=r(n,t,e.typeAnnotation||\"assert\");}if(!(n instanceof tr)&&\"resolvedImage\"!==n.type.kind&&Dr(n)){const t=new ur;try{n=new tr(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression \"${n}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(void 0===t?\"'undefined' value invalid. Use null instead.\":\"object\"==typeof t?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Er(this.registry,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join(\"\")}`;this.errors.push(new Se(r,t));}checkSubtype(t,e){const r=$e(t,e);return r&&this.error(r),r}}function Dr(t){if(t instanceof Pr)return Dr(t.boundExpression);if(t instanceof cr&&\"error\"===t.name)return !1;if(t instanceof hr)return !1;if(t instanceof Mr)return !1;const e=t instanceof or||t instanceof nr;let r=!0;return t.eachChild((t=>{r=e?r&&Dr(t):r&&t instanceof tr;})),!!r&&Tr(t)&&Cr(t,[\"zoom\",\"heatmap-density\",\"line-progress\",\"sky-radial-progress\",\"accumulated\",\"is-supported-script\",\"pitch\",\"distance-from-center\"])}function Vr(t,e){const r=t.length-1;let n,i,s=0,a=r,o=0;for(;s<=a;)if(o=Math.floor((s+a)/2),n=t[o],i=t[o+1],n<=e){if(o===r||e<i)return o;s=o+1;}else {if(!(n>e))throw new er(\"Input is not a number.\");a=o-1;}return 0}class Fr{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");const r=e.parse(t[1],1,Me);if(!r)return null;const n=[];let i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r<t.length;r+=2){const s=1===r?-1/0:t[r],a=t[r+1],o=r,l=r+1;if(\"number\"!=typeof s)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',o);if(n.length&&n[n.length-1][0]>=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(a,l,i);if(!u)return null;i=i||u.type,n.push([s,u]);}return new Fr(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Vr(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){const t=[\"step\",this.input.serialize()];for(let e=0;e<this.labels.length;e++)e>0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t}}function Lr(t,e,r){return t*(1-r)+e*r}var Rr=Object.freeze({__proto__:null,number:Lr,color:function(t,e,r){return new Ge(Lr(t.r,e.r,r),Lr(t.g,e.g,r),Lr(t.b,e.b,r),Lr(t.a,e.a,r))},array:function(t,e,r){return t.map(((t,n)=>Lr(t,e[n],r)))}});const Ur=.95047,$r=1.08883,Or=4/29,jr=6/29,qr=3*jr*jr,Nr=Math.PI/180,Gr=180/Math.PI;function Zr(t){return t>.008856451679035631?Math.pow(t,1/3):t/qr+Or}function Xr(t){return t>jr?t*t*t:qr*(t-Or)}function Kr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Yr(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Hr(t){const e=Yr(t.r),r=Yr(t.g),n=Yr(t.b),i=Zr((.4124564*e+.3575761*r+.1804375*n)/Ur),s=Zr((.2126729*e+.7151522*r+.072175*n)/1);return {l:116*s-16,a:500*(i-s),b:200*(s-Zr((.0193339*e+.119192*r+.9503041*n)/$r)),alpha:t.a}}function Jr(t){let e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Xr(e),r=Ur*Xr(r),n=$r*Xr(n),new Ge(Kr(3.2404542*r-1.5371385*e-.4985314*n),Kr(-.969266*r+1.8760108*e+.041556*n),Kr(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function Wr(t,e,r){const n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}const Qr={forward:Hr,reverse:Jr,interpolate:function(t,e,r){return {l:Lr(t.l,e.l,r),a:Lr(t.a,e.a,r),b:Lr(t.b,e.b,r),alpha:Lr(t.alpha,e.alpha,r)}}},tn={forward:function(t){const{l:e,a:r,b:n}=Hr(t),i=Math.atan2(n,r)*Gr;return {h:i<0?i+360:i,c:Math.sqrt(r*r+n*n),l:e,alpha:t.a}},reverse:function(t){const e=t.h*Nr,r=t.c;return Jr({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:Wr(t.h,e.h,r),c:Lr(t.c,e.c,r),l:Lr(t.l,e.l,r),alpha:Lr(t.alpha,e.alpha,r)}}};var en=Object.freeze({__proto__:null,lab:Qr,hcl:tn});class rn{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,n,i){let s=0;if(\"exponential\"===t.name)s=nn(e,t.base,n,i);else if(\"linear\"===t.name)s=nn(e,1,n,i);else if(\"cubic-bezier\"===t.name){const a=t.controlPoints;s=new r(a[0],a[1],a[2],a[3]).solve(nn(e,1,n,i));}return s}static parse(t,e){let[r,n,i,...s]=t;if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){const t=n[1];if(\"number\"!=typeof t)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:t};}else {if(\"cubic-bezier\"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>\"number\"!=typeof t||t<0||t>1)))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(i=e.parse(i,2,Me),!i)return null;const a=[];let o=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?o=Ce:e.expectedType&&\"value\"!==e.expectedType.kind&&(o=e.expectedType);for(let t=0;t<s.length;t+=2){const r=s[t],n=s[t+1],i=t+3,l=t+4;if(\"number\"!=typeof r)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',i);if(a.length&&a[a.length-1][0]>=r)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,a.push([r,u]);}return \"number\"===o.kind||\"color\"===o.kind||\"array\"===o.kind&&\"number\"===o.itemType.kind&&\"number\"==typeof o.N?new rn(o,r,n,i,a):e.error(`Type ${Re(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const s=Vr(e,n),a=rn.interpolationFactor(this.interpolation,n,e[s],e[s+1]),o=r[s].evaluate(t),l=r[s+1].evaluate(t);return \"interpolate\"===this.operator?Rr[this.type.kind.toLowerCase()](o,l,a):\"interpolate-hcl\"===this.operator?tn.reverse(tn.interpolate(tn.forward(o),tn.forward(l),a)):Qr.reverse(Qr.interpolate(Qr.forward(o),Qr.forward(l),a))}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){let t;t=\"linear\"===this.interpolation.name?[\"linear\"]:\"exponential\"===this.interpolation.name?1===this.interpolation.base?[\"linear\"]:[\"exponential\",this.interpolation.base]:[\"cubic-bezier\"].concat(this.interpolation.controlPoints);const e=[this.operator,t,this.input.serialize()];for(let t=0;t<this.labels.length;t++)e.push(this.labels[t],this.outputs[t].serialize());return e}}function nn(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}class sn{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expectected at least one argument.\");let r=null;const n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);const i=[];for(const n of t.slice(1)){const t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:\"omit\"});if(!t)return null;r=r||t.type,i.push(t);}const s=n&&i.some((t=>$e(n,t.type)));return new sn(s?Ee:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args){if(n++,r=i.evaluate(t),r&&r instanceof Ye&&!r.available&&(e||(e=r),r=null,n===this.args.length))return e;if(null!==r)break}return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=[\"coalesce\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}class an{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n<t.length-1;n+=2){const i=t[n];if(\"string\"!=typeof i)return e.error(`Expected string, but found ${typeof i} instead.`,n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);const s=e.parse(t[n+1],n+1);if(!s)return null;r.push([i,s]);}const n=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return n?new an(r,n):null}outputDefined(){return this.result.outputDefined()}serialize(){const t=[\"let\"];for(const[e,r]of this.bindings)t.push(e,r.serialize());return t.push(this.result.serialize()),t}}class on{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Me),n=e.parse(t[2],2,Le(e.expectedType||Ee));return r&&n?new on(n.type.itemType,r,n):null}evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new er(`Array index out of bounds: ${e} < 0.`);if(e>=r.length)throw new er(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new er(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}serialize(){return [\"at\",this.index.serialize(),this.input.serialize()]}}class ln{constructor(t,e){this.type=Be,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Ee),n=e.parse(t[2],2,Ee);return r&&n?Oe(r.type,[Be,Te,Me,ze,Ee])?new ln(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Re(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return !1;if(!je(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new er(`Expected first argument to be of type boolean, string, number or null, but found ${Re(We(e))} instead.`);if(!je(r,[\"string\",\"array\"]))throw new er(`Expected second argument to be of type array or string, but found ${Re(We(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}serialize(){return [\"in\",this.needle.serialize(),this.haystack.serialize()]}}class un{constructor(t,e,r){this.type=Me,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Ee),n=e.parse(t[2],2,Ee);if(!r||!n)return null;if(!Oe(r.type,[Be,Te,Me,ze,Ee]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Re(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Me);return i?new un(r,n,i):null}return new un(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!je(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new er(`Expected first argument to be of type boolean, string, number or null, but found ${Re(We(e))} instead.`);if(!je(r,[\"string\",\"array\"]))throw new er(`Expected second argument to be of type array or string, but found ${Re(We(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const t=this.fromIndex.serialize();return [\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return [\"index-of\",this.needle.serialize(),this.haystack.serialize()]}}class cn{constructor(t,e,r,n,i,s){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=s;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");let r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);const i={},s=[];for(let a=2;a<t.length-1;a+=2){let o=t[a];const l=t[a+1];Array.isArray(o)||(o=[o]);const u=e.concat(a);if(0===o.length)return u.error(\"Expected at least one branch label.\");for(const t of o){if(\"number\"!=typeof t&&\"string\"!=typeof t)return u.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof t&&Math.abs(t)>Number.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(\"number\"==typeof t&&Math.floor(t)!==t)return u.error(\"Numeric branch labels must be integer values.\");if(r){if(u.checkSubtype(r,We(t)))return null}else r=We(t);if(void 0!==i[String(t)])return u.error(\"Branch labels must be unique.\");i[String(t)]=s.length;}const c=e.parse(l,a,n);if(!c)return null;n=n||c.type,s.push(c);}const a=e.parse(t[1],1,Ee);if(!a)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?\"value\"!==a.type.kind&&e.concat(1).checkSubtype(r,a.type)?null:new cn(r,n,a,i,s,o):null}evaluate(t){const e=this.input.evaluate(t);return (We(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"match\",this.input.serialize()],e=Object.keys(this.cases).sort(),r=[],n={};for(const t of e){const e=n[this.cases[t]];void 0===e?(n[this.cases[t]]=r.length,r.push([this.cases[t],[t]])):r[e][1].push(t);}const i=t=>\"number\"===this.inputType.kind?Number(t):t;for(const[e,n]of r)t.push(1===n.length?i(n[0]):n.map(i)),t.push(this.outputs[e].serialize());return t.push(this.otherwise.serialize()),t}}class hn{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");let r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;i<t.length-1;i+=2){const s=e.parse(t[i],i,Be);if(!s)return null;const a=e.parse(t[i+1],i+1,r);if(!a)return null;n.push([s,a]),r=r||a.type;}const i=e.parse(t[t.length-1],t.length-1,r);return i?new hn(r,n,i):null}evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.evaluate(t);return this.otherwise.evaluate(t)}eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"case\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}class pn{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Ee),n=e.parse(t[2],2,Me);if(!r||!n)return null;if(!Oe(r.type,[Le(Ee),Te,Ee]))return e.error(`Expected first argument to be of type array or string, but found ${Re(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Me);return i?new pn(r.type,r,n,i):null}return new pn(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!je(e,[\"string\",\"array\"]))throw new er(`Expected first argument to be of type array or string, but found ${Re(We(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const t=this.endIndex.serialize();return [\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return [\"slice\",this.input.serialize(),this.beginIndex.serialize()]}}function dn(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function fn(t,e,r,n){return 0===n.compare(e,r)}function yn(t,e,r){const n=\"==\"!==t&&\"!=\"!==t;return class i{constructor(t,e,r){this.type=Be,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");const r=t[0];let s=e.parse(t[1],1,Ee);if(!s)return null;if(!dn(r,s.type))return e.concat(1).error(`\"${r}\" comparisons are not supported for type '${Re(s.type)}'.`);let a=e.parse(t[2],2,Ee);if(!a)return null;if(!dn(r,a.type))return e.concat(2).error(`\"${r}\" comparisons are not supported for type '${Re(a.type)}'.`);if(s.type.kind!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(`Cannot compare types '${Re(s.type)}' and '${Re(a.type)}'.`);n&&(\"value\"===s.type.kind&&\"value\"!==a.type.kind?s=new nr(a.type,[s]):\"value\"!==s.type.kind&&\"value\"===a.type.kind&&(a=new nr(s.type,[a])));let o=null;if(4===t.length){if(\"string\"!==s.type.kind&&\"string\"!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(o=e.parse(t[3],3,De),!o)return null}return new i(s,a,o)}evaluate(i){const s=this.lhs.evaluate(i),a=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=We(s),r=We(a);if(e.kind!==r.kind||\"string\"!==e.kind&&\"number\"!==e.kind)throw new er(`Expected arguments for \"${t}\" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=We(s),r=We(a);if(\"string\"!==t.kind||\"string\"!==r.kind)return e(i,s,a)}return this.collator?r(i,s,a,this.collator.evaluate(i)):e(i,s,a)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}serialize(){const e=[t];return this.eachChild((t=>{e.push(t.serialize());})),e}}}const mn=yn(\"==\",(function(t,e,r){return e===r}),fn),gn=yn(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !fn(0,e,r,n)})),xn=yn(\"<\",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),vn=yn(\">\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),bn=yn(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),wn=yn(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class _n{constructor(t,e,r,n,i){this.type=Te,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;}static parse(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,Me);if(!r)return null;const n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");let i=null;if(n.locale&&(i=e.parse(n.locale,1,Te),!i))return null;let s=null;if(n.currency&&(s=e.parse(n.currency,1,Te),!s))return null;let a=null;if(n[\"min-fraction-digits\"]&&(a=e.parse(n[\"min-fraction-digits\"],1,Me),!a))return null;let o=null;return n[\"max-fraction-digits\"]&&(o=e.parse(n[\"max-fraction-digits\"],1,Me),!o)?null:new _n(r,i,s,a,o)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}serialize(){const t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]}}class An{constructor(t){this.type=Me,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${Re(r.type)} instead.`):new An(r):null}evaluate(t){const e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new er(`Expected value to be of type string or array, but found ${Re(We(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){const t=[\"length\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}const kn={\"==\":mn,\"!=\":gn,\">\":vn,\"<\":xn,\">=\":wn,\"<=\":bn,array:nr,at:on,boolean:nr,case:hn,coalesce:sn,collator:hr,format:ir,image:sr,in:ln,\"index-of\":un,interpolate:rn,\"interpolate-hcl\":rn,\"interpolate-lab\":rn,length:An,let:an,literal:tr,match:cn,number:nr,\"number-format\":_n,object:nr,slice:pn,step:Fr,string:nr,\"to-boolean\":or,\"to-color\":or,\"to-number\":or,\"to-string\":or,var:Pr,within:Mr};function Sn(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const s=i?i.evaluate(t):1,a=He(e,r,n,s);if(a)throw new er(a);return new Ge(e/255*s,r/255*s,n/255*s,s)}function In(t,e){return t in e}function zn(t,e){const r=e[t];return void 0===r?null:r}function Mn(t){return {type:t}}function Tn(t){return {result:\"success\",value:t}}function Bn(t){return {result:\"error\",value:t}}function Cn(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Pn(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function En(t){return !!t.expression&&t.expression.interpolated}function Dn(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Vn(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Fn(t){return t}function Ln(t,e){const r=\"color\"===e.type,n=t.stops&&\"object\"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),s=t.type||(En(e)?\"exponential\":\"interval\");if(r&&((t=_e({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],Ge.parse(t[1])]))),t.default=Ge.parse(t.default?t.default:e.default)),t.colorSpace&&\"rgb\"!==t.colorSpace&&!en[t.colorSpace])throw new Error(`Unknown color space: ${t.colorSpace}`);let a,o,l;if(\"exponential\"===s)a=On;else if(\"interval\"===s)a=$n;else if(\"categorical\"===s){a=Un,o=Object.create(null);for(const e of t.stops)o[e[0]]=e[1];l=typeof t.stops[0][0];}else {if(\"identity\"!==s)throw new Error(`Unknown function type \"${s}\"`);a=jn;}if(n){const r={},n=[];for(let e=0;e<t.stops.length;e++){const i=t.stops[e],s=i[0].zoom;void 0===r[s]&&(r[s]={zoom:s,type:t.type,property:t.property,default:t.default,stops:[]},n.push(s)),r[s].stops.push([i[0].value,i[1]]);}const i=[];for(const t of n)i.push([r[t].zoom,Ln(r[t],e)]);const s={name:\"linear\"};return {kind:\"composite\",interpolationType:s,interpolationFactor:rn.interpolationFactor.bind(void 0,s),zoomStops:i.map((t=>t[0])),evaluate:({zoom:r},n)=>On({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){const r=\"exponential\"===s?{name:\"exponential\",base:void 0!==t.base?t.base:1}:null;return {kind:\"camera\",interpolationType:r,interpolationFactor:rn.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>a(t,e,r,o,l)}}return {kind:\"source\",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Rn(t.default,e.default):a(t,e,i,o,l)}}}function Rn(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Un(t,e,r,n,i){return Rn(typeof r===i?n[r]:void 0,t.default,e.default)}function $n(t,e,r){if(\"number\"!==Dn(r))return Rn(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=Vr(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function On(t,e,r){const n=void 0!==t.base?t.base:1;if(\"number\"!==Dn(r))return Rn(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const s=Vr(t.stops.map((t=>t[0])),r),a=function(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[s][0],t.stops[s+1][0]),o=t.stops[s][1],l=t.stops[s+1][1];let u=Rr[e.type]||Fn;if(t.colorSpace&&\"rgb\"!==t.colorSpace){const e=en[t.colorSpace];u=(t,r)=>e.reverse(e.interpolate(e.forward(t),e.forward(r),a));}return \"function\"==typeof o.evaluate?{evaluate(...t){const e=o.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==e&&void 0!==r)return u(e,r,a)}}:u(o,l,a)}function jn(t,e,r){return \"color\"===e.type?r=Ge.parse(r):\"formatted\"===e.type?r=Ke.fromString(r.toString()):\"resolvedImage\"===e.type?r=Ye.fromString(r.toString()):Dn(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),Rn(r,t.default,e.default)}cr.register(kn,{error:[{kind:\"error\"},[Te],(t,[e])=>{throw new er(e.evaluate(t))}],typeof:[Te,[Ee],(t,[e])=>Re(We(e.evaluate(t)))],\"to-rgba\":[Le(Me,4),[Ce],(t,[e])=>e.evaluate(t).toArray()],rgb:[Ce,[Me,Me,Me],Sn],rgba:[Ce,[Me,Me,Me,Me],Sn],has:{type:Be,overloads:[[[Te],(t,[e])=>In(e.evaluate(t),t.properties())],[[Te,Pe],(t,[e,r])=>In(e.evaluate(t),r.evaluate(t))]]},get:{type:Ee,overloads:[[[Te],(t,[e])=>zn(e.evaluate(t),t.properties())],[[Te,Pe],(t,[e,r])=>zn(e.evaluate(t),r.evaluate(t))]]},\"feature-state\":[Ee,[Te],(t,[e])=>zn(e.evaluate(t),t.featureState||{})],properties:[Pe,[],t=>t.properties()],\"geometry-type\":[Te,[],t=>t.geometryType()],id:[Ee,[],t=>t.id()],zoom:[Me,[],t=>t.globals.zoom],pitch:[Me,[],t=>t.globals.pitch||0],\"distance-from-center\":[Me,[],t=>t.distanceFromCenter()],\"heatmap-density\":[Me,[],t=>t.globals.heatmapDensity||0],\"line-progress\":[Me,[],t=>t.globals.lineProgress||0],\"sky-radial-progress\":[Me,[],t=>t.globals.skyRadialProgress||0],accumulated:[Ee,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],\"+\":[Me,Mn(Me),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],\"*\":[Me,Mn(Me),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],\"-\":{type:Me,overloads:[[[Me,Me],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[Me],(t,[e])=>-e.evaluate(t)]]},\"/\":[Me,[Me,Me],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],\"%\":[Me,[Me,Me],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[Me,[],()=>Math.LN2],pi:[Me,[],()=>Math.PI],e:[Me,[],()=>Math.E],\"^\":[Me,[Me,Me],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[Me,[Me],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[Me,[Me],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[Me,[Me],(t,[e])=>Math.log(e.evaluate(t))],log2:[Me,[Me],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[Me,[Me],(t,[e])=>Math.sin(e.evaluate(t))],cos:[Me,[Me],(t,[e])=>Math.cos(e.evaluate(t))],tan:[Me,[Me],(t,[e])=>Math.tan(e.evaluate(t))],asin:[Me,[Me],(t,[e])=>Math.asin(e.evaluate(t))],acos:[Me,[Me],(t,[e])=>Math.acos(e.evaluate(t))],atan:[Me,[Me],(t,[e])=>Math.atan(e.evaluate(t))],min:[Me,Mn(Me),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[Me,Mn(Me),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[Me,[Me],(t,[e])=>Math.abs(e.evaluate(t))],round:[Me,[Me],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[Me,[Me],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[Me,[Me],(t,[e])=>Math.ceil(e.evaluate(t))],\"filter-==\":[Be,[Te,Ee],(t,[e,r])=>t.properties()[e.value]===r.value],\"filter-id-==\":[Be,[Ee],(t,[e])=>t.id()===e.value],\"filter-type-==\":[Be,[Te],(t,[e])=>t.geometryType()===e.value],\"filter-<\":[Be,[Te,Ee],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<i}],\"filter-id-<\":[Be,[Ee],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<n}],\"filter->\":[Be,[Te,Ee],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],\"filter-id->\":[Be,[Ee],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],\"filter-<=\":[Be,[Te,Ee],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],\"filter-id-<=\":[Be,[Ee],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],\"filter->=\":[Be,[Te,Ee],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],\"filter-id->=\":[Be,[Ee],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],\"filter-has\":[Be,[Ee],(t,[e])=>e.value in t.properties()],\"filter-has-id\":[Be,[],t=>null!==t.id()&&void 0!==t.id()],\"filter-type-in\":[Be,[Le(Te)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],\"filter-id-in\":[Be,[Le(Ee)],(t,[e])=>e.value.indexOf(t.id())>=0],\"filter-in-small\":[Be,[Te,Le(Ee)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],\"filter-in-large\":[Be,[Te,Le(Ee)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:Be,overloads:[[[Be,Be],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[Mn(Be),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:Be,overloads:[[[Be,Be],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[Mn(Be),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},\"!\":[Be,[Be],(t,[e])=>!e.evaluate(t)],\"is-supported-script\":[Be,[Te],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[Te,[Te],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[Te,[Te],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[Te,Mn(Ee),(t,e)=>e.map((e=>Qe(e.evaluate(t)))).join(\"\")],\"resolved-locale\":[Te,[De],(t,[e])=>e.evaluate(t).resolvedLocale()]});class qn{constructor(t,e){this.expression=t,this._warningHistory={},this._evaluator=new ur,this._defaultValue=e?function(t){return \"color\"===t.type&&Vn(t.default)?new Ge(0,0,0,0):\"color\"===t.type?Ge.parse(t.default)||null:void 0===t.default?null:t.default}(e):null,this._enumValues=e&&\"enum\"===e.type?e.values:null;}evaluateWithoutErrorHandling(t,e,r,n,i,s,a,o){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=o||null,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,s,a,o){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s||null,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=o||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||\"number\"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new er(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(\", \")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function Nn(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in kn}function Gn(t,e){const r=new Er(kn,[],e?function(t){const e={color:Ce,string:Te,number:Me,enum:Te,boolean:Be,formatted:Ve,resolvedImage:Fe};return \"array\"===t.type?Le(e[t.value]||Ee,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Tn(new qn(n,e)):Bn(r.errors)}class Zn{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Br(e.expression);}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}}class Xn{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Br(e.expression),this.interpolationType=n;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}interpolationFactor(t,e,r){return this.interpolationType?rn.interpolationFactor(this.interpolationType,t,e,r):0}}function Kn(t,e){if(\"error\"===(t=Gn(t,e)).result)return t;const r=t.value.expression,n=Tr(r);if(!n&&!Cn(e))return Bn([new Se(\"\",\"data expressions not supported\")]);const i=Cr(r,[\"zoom\",\"pitch\",\"distance-from-center\"]);if(!i&&!Pn(e))return Bn([new Se(\"\",\"zoom expressions not supported\")]);const s=Hn(r);return s||i?s instanceof Se?Bn([s]):s instanceof rn&&!En(e)?Bn([new Se(\"\",'\"interpolate\" expressions cannot be used with this property')]):Tn(s?new Xn(n?\"camera\":\"composite\",t.value,s.labels,s instanceof rn?s.interpolation:void 0):new Zn(n?\"constant\":\"source\",t.value)):Bn([new Se(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class Yn{constructor(t,e){this._parameters=t,this._specification=e,_e(this,Ln(this._parameters,this._specification));}static deserialize(t){return new Yn(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function Hn(t){let e=null;if(t instanceof an)e=Hn(t.result);else if(t instanceof sn){for(const r of t.args)if(e=Hn(r),e)break}else (t instanceof Fr||t instanceof rn)&&t.input instanceof cr&&\"zoom\"===t.input.name&&(e=t);return e instanceof Se||t.eachChild((t=>{const r=Hn(t);r instanceof Se?e=r:!e&&r?e=new Se(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):e&&r&&e!==r&&(e=new Se(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));})),e}function Jn(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},s=t.style,a=t.styleSpec;let o=[];const l=Dn(r);if(\"object\"!==l)return [new be(e,r,`object expected, ${l} found`)];for(const t in r){const l=t.split(\".\")[0],u=n[l]||n[\"*\"];let c;if(i[l])c=i[l];else if(n[l])c=Bi;else if(i[\"*\"])c=i[\"*\"];else {if(!n[\"*\"]){o.push(new be(e,r[t],`unknown property \"${t}\"`));continue}c=Bi;}o=o.concat(c({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:u,style:s,styleSpec:a,object:r,objectKey:t},r));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&o.push(new be(e,r,`missing required property \"${t}\"`));return o}function Wn(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,s=t.key,a=t.arrayElementValidator||Bi;if(\"array\"!==Dn(e))return [new be(s,e,`array expected, ${Dn(e)} found`)];if(r.length&&e.length!==r.length)return [new be(s,e,`array length ${r.length} expected, length ${e.length} found`)];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return [new be(s,e,`array length at least ${r[\"min-length\"]} expected, length ${e.length} found`)];let o={type:r.value,values:r.values,minimum:r.minimum,maximum:r.maximum};i.$version<7&&(o.function=r.function),\"object\"===Dn(r.value)&&(o=r.value);let l=[];for(let t=0;t<e.length;t++)l=l.concat(a({array:e,arrayIndex:t,value:e[t],valueSpec:o,style:n,styleSpec:i,key:`${s}[${t}]`}));return l}function Qn(t){const e=t.key,r=t.value,n=t.valueSpec;let i=Dn(r);if(\"number\"===i&&r!=r&&(i=\"NaN\"),\"number\"!==i)return [new be(e,r,`number expected, ${i} found`)];if(\"minimum\"in n){let i=n.minimum;if(\"array\"===Dn(n.minimum)&&(i=n.minimum[t.arrayIndex]),r<i)return [new be(e,r,`${r} is less than the minimum value ${i}`)]}if(\"maximum\"in n){let i=n.maximum;if(\"array\"===Dn(n.maximum)&&(i=n.maximum[t.arrayIndex]),r>i)return [new be(e,r,`${r} is greater than the maximum value ${i}`)]}return []}function ti(t){const e=t.valueSpec,r=Ae(t.value.type);let n,i,s,a={};const o=\"categorical\"!==r&&void 0===t.value.property,l=!o,u=\"array\"===Dn(t.value.stops)&&\"array\"===Dn(t.value.stops[0])&&\"object\"===Dn(t.value.stops[0][0]),c=Jn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===r)return [new be(t.key,t.value,'identity function may not have a \"stops\" property')];let e=[];const n=t.value;return e=e.concat(Wn({key:t.key,value:n,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),\"array\"===Dn(n)&&0===n.length&&e.push(new be(t.key,n,\"array must have at least one stop\")),e},default:function(t){return Bi({key:t.key,value:t.value,valueSpec:e,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===r&&o&&c.push(new be(t.key,t.value,'missing required property \"property\"')),\"identity\"===r||t.value.stops||c.push(new be(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===r&&t.valueSpec.expression&&!En(t.valueSpec)&&c.push(new be(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!Cn(t.valueSpec)?c.push(new be(t.key,t.value,\"property functions not supported\")):o&&!Pn(t.valueSpec)&&c.push(new be(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==r&&!u||void 0!==t.value.property||c.push(new be(t.key,t.value,'\"property\" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if(\"array\"!==Dn(n))return [new be(o,n,`array expected, ${Dn(n)} found`)];if(2!==n.length)return [new be(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if(\"object\"!==Dn(n[0]))return [new be(o,n,`object expected, ${Dn(n[0])} found`)];if(void 0===n[0].zoom)return [new be(o,n,\"object stop key must have zoom\")];if(void 0===n[0].value)return [new be(o,n,\"object stop key must have value\")];if(s&&s>Ae(n[0].zoom))return [new be(o,n[0].zoom,\"stop zoom values must appear in ascending order\")];Ae(n[0].zoom)!==s&&(s=Ae(n[0].zoom),i=void 0,a={}),r=r.concat(Jn({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Qn,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},n));return Nn(ke(n[1]))?r.concat([new be(`${o}[1]`,n[1],\"expressions are not allowed in function stops.\")]):r.concat(Bi({key:`${o}[1]`,value:n[1],valueSpec:e,style:t.style,styleSpec:t.styleSpec}))}function p(t,s){const o=Dn(t.value),l=Ae(t.value),u=null!==t.value?t.value:s;if(n){if(o!==n)return [new be(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if(\"number\"!==o&&\"string\"!==o&&\"boolean\"!==o)return [new be(t.key,u,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==o&&\"categorical\"!==r){let n=`number expected, ${o} found`;return Cn(e)&&void 0===r&&(n+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new be(t.key,u,n)]}return \"categorical\"!==r||\"number\"!==o||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==r&&\"number\"===o&&void 0!==i&&l<i?[new be(t.key,u,\"stop domain values must appear in ascending order\")]:(i=l,\"categorical\"===r&&l in a?[new be(t.key,u,\"stop domain values must be unique\")]:(a[l]=!0,[])):[new be(t.key,u,`integer expected, found ${l}`)]}}function ei(t){const e=(\"property\"===t.expressionContext?Kn:Gn)(ke(t.value),t.valueSpec);if(\"error\"===e.result)return e.value.map((e=>new be(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&!r.outputDefined())return [new be(t.key,t.value,`Invalid data expression for \"${t.propertyKey}\". Output values must be contained as literals within the expression.`)];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!Br(r))return [new be(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext)return ri(r,t);if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!Cr(r,[\"zoom\",\"feature-state\"]))return [new be(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!Tr(r))return [new be(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function ri(t,e){const r=new Set([\"zoom\",\"feature-state\",\"pitch\",\"distance-from-center\"]);for(const t of e.valueSpec.expression.parameters)r.delete(t);if(0===r.size)return [];const n=[];return t instanceof cr&&r.has(t.name)?[new be(e.key,e.value,`[\"${t.name}\"] expression is not supported in a filter for a ${e.object.type} layer with id: ${e.object.id}`)]:(t.eachChild((t=>{n.push(...ri(t,e));})),n)}function ni(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Ae(r))&&i.push(new be(e,r,`expected one of [${n.values.join(\", \")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(Ae(r))&&i.push(new be(e,r,`expected one of [${Object.keys(n.values).join(\", \")}], ${JSON.stringify(r)} found`)),i}function ii(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(const e of t.slice(1))if(!ii(e)&&\"boolean\"!=typeof e)return !1;return !0;default:return !0}}function si(t,e=\"fill\"){if(null==t)return {filter:()=>!0,needGeometry:!1,needFeature:!1};ii(t)||(t=pi(t));const r=t;let n=!0;try{n=function(t){if(!li(t))return t;let e=ke(t);return oi(e),e=ai(e),e}(r);}catch(t){console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\\nand paste the contents of this message in the report.\\nThank you!\\nFilter Expression:\\n${JSON.stringify(r,null,2)}\\n        `);}const i=ve[`filter_${e}`],s=Gn(n,i);let a=null;if(\"error\"===s.result)throw new Error(s.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));a=(t,e,r)=>s.value.evaluate(t,e,{},r);let o=null,l=null;if(n!==r){const t=Gn(r,i);if(\"error\"===t.result)throw new Error(t.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));o=(e,r,n,i,s)=>t.value.evaluate(e,r,{},n,void 0,void 0,i,s),l=!Tr(t.value.expression);}return a=a,{filter:a,dynamicFilter:o||void 0,needGeometry:hi(n),needFeature:!!l}}function ai(t){if(!Array.isArray(t))return t;const e=function(t){if(ui.has(t[0]))for(let e=1;e<t.length;e++)if(li(t[e]))return !0;return t}(t);return !0===e?e:e.map((t=>ai(t)))}function oi(t){let e=!1;const r=[];if(\"case\"===t[0]){for(let n=1;n<t.length-1;n+=2)e=e||li(t[n]),r.push(t[n+1]);r.push(t[t.length-1]);}else if(\"match\"===t[0]){e=e||li(t[1]);for(let e=2;e<t.length-1;e+=2)r.push(t[e+1]);r.push(t[t.length-1]);}else if(\"step\"===t[0]){e=e||li(t[1]);for(let e=1;e<t.length-1;e+=2)r.push(t[e+1]);}e&&(t.length=0,t.push(\"any\",...r));for(let e=1;e<t.length;e++)oi(t[e]);}function li(t){if(!Array.isArray(t))return !1;if(\"pitch\"===(e=t[0])||\"distance-from-center\"===e)return !0;var e;for(let e=1;e<t.length;e++)if(li(t[e]))return !0;return !1}const ui=new Set([\"in\",\"==\",\"!=\",\">\",\">=\",\"<\",\"<=\",\"to-boolean\"]);function ci(t,e){return t<e?-1:t>e?1:0}function hi(t){if(!Array.isArray(t))return !1;if(\"within\"===t[0])return !0;for(let e=1;e<t.length;e++)if(hi(t[e]))return !0;return !1}function pi(t){if(!t)return !0;const e=t[0];return t.length<=1?\"any\"!==e:\"==\"===e?di(t[1],t[2],\"==\"):\"!=\"===e?mi(di(t[1],t[2],\"==\")):\"<\"===e||\">\"===e||\"<=\"===e||\">=\"===e?di(t[1],t[2],e):\"any\"===e?(r=t.slice(1),[\"any\"].concat(r.map(pi))):\"all\"===e?[\"all\"].concat(t.slice(1).map(pi)):\"none\"===e?[\"all\"].concat(t.slice(1).map(pi).map(mi)):\"in\"===e?fi(t[1],t.slice(2)):\"!in\"===e?mi(fi(t[1],t.slice(2))):\"has\"===e?yi(t[1]):\"!has\"===e?mi(yi(t[1])):\"within\"!==e||t;var r;}function di(t,e,r){switch(t){case\"$type\":return [`filter-type-${r}`,e];case\"$id\":return [`filter-id-${r}`,e];default:return [`filter-${r}`,t,e]}}function fi(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?[\"filter-in-large\",t,[\"literal\",e.sort(ci)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function yi(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function mi(t){return [\"!\",t]}function gi(t){if(ii(ke(t.value))){const e=ke(t.layerType);return ei(_e({},t,{expressionContext:\"filter\",valueSpec:t.styleSpec[`filter_${e||\"fill\"}`]}))}return xi(t)}function xi(t){const e=t.value,r=t.key;if(\"array\"!==Dn(e))return [new be(r,e,`array expected, ${Dn(e)} found`)];const n=t.styleSpec;let i,s=[];if(e.length<1)return [new be(r,e,\"filter array must have at least 1 element\")];switch(s=s.concat(ni({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),Ae(e[0])){case\"<\":case\"<=\":case\">\":case\">=\":e.length>=2&&\"$type\"===Ae(e[1])&&s.push(new be(r,e,`\"$type\" cannot be use with operator \"${e[0]}\"`));case\"==\":case\"!=\":3!==e.length&&s.push(new be(r,e,`filter array for operator \"${e[0]}\" must have 3 elements`));case\"in\":case\"!in\":e.length>=2&&(i=Dn(e[1]),\"string\"!==i&&s.push(new be(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let a=2;a<e.length;a++)i=Dn(e[a]),\"$type\"===Ae(e[1])?s=s.concat(ni({key:`${r}[${a}]`,value:e[a],valueSpec:n.geometry_type,style:t.style,styleSpec:t.styleSpec})):\"string\"!==i&&\"number\"!==i&&\"boolean\"!==i&&s.push(new be(`${r}[${a}]`,e[a],`string, number, or boolean expected, ${i} found`));break;case\"any\":case\"all\":case\"none\":for(let n=1;n<e.length;n++)s=s.concat(xi({key:`${r}[${n}]`,value:e[n],style:t.style,styleSpec:t.styleSpec}));break;case\"has\":case\"!has\":i=Dn(e[1]),2!==e.length?s.push(new be(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"string\"!==i&&s.push(new be(`${r}[1]`,e[1],`string expected, ${i} found`));break;case\"within\":i=Dn(e[1]),2!==e.length?s.push(new be(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"object\"!==i&&s.push(new be(`${r}[1]`,e[1],`object expected, ${i} found`));}return s}function vi(t,e){const r=t.key,n=t.style,i=t.styleSpec,s=t.value,a=t.objectKey,o=i[`${e}_${t.layerType}`];if(!o)return [];const l=a.match(/^(.*)-transition$/);if(\"paint\"===e&&l&&o[l[1]]&&o[l[1]].transition)return Bi({key:r,value:s,valueSpec:i.transition,style:n,styleSpec:i});const u=t.valueSpec||o[a];if(!u)return [new be(r,s,`unknown property \"${a}\"`)];let c;if(\"string\"===Dn(s)&&Cn(u)&&!u.tokens&&(c=/^{([^}]+)}$/.exec(s)))return [new be(r,s,`\"${a}\" does not support interpolation syntax\\nUse an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(c[1])} }\\`.`)];const h=[];return \"symbol\"===t.layerType&&(\"text-field\"===a&&n&&!n.glyphs&&h.push(new be(r,s,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===a&&Vn(ke(s))&&\"identity\"===Ae(s.type)&&h.push(new be(r,s,'\"text-font\" does not support identity functions'))),h.concat(Bi({key:t.key,value:s,valueSpec:u,style:n,styleSpec:i,expressionContext:\"property\",propertyType:e,propertyKey:a}))}function bi(t){return vi(t,\"paint\")}function wi(t){return vi(t,\"layout\")}function _i(t){let e=[];const r=t.value,n=t.key,i=t.style,s=t.styleSpec;r.type||r.ref||e.push(new be(n,r,'either \"type\" or \"ref\" is required'));let a=Ae(r.type);const o=Ae(r.ref);if(r.id){const s=Ae(r.id);for(let a=0;a<t.arrayIndex;a++){const t=i.layers[a];Ae(t.id)===s&&e.push(new be(n,r.id,`duplicate layer id \"${r.id}\", previously used at line ${t.id.__line__}`));}}if(\"ref\"in r){let t;[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach((t=>{t in r&&e.push(new be(n,r[t],`\"${t}\" is prohibited for ref layers`));})),i.layers.forEach((e=>{Ae(e.id)===o&&(t=e);})),t?t.ref?e.push(new be(n,r.ref,\"ref cannot reference another ref layer\")):a=Ae(t.type):e.push(new be(n,r.ref,`ref layer \"${o}\" not found`));}else if(\"background\"!==a&&\"sky\"!==a)if(r.source){const t=i.sources&&i.sources[r.source],s=t&&Ae(t.type);t?\"vector\"===s&&\"raster\"===a?e.push(new be(n,r.source,`layer \"${r.id}\" requires a raster source`)):\"raster\"===s&&\"raster\"!==a?e.push(new be(n,r.source,`layer \"${r.id}\" requires a vector source`)):\"vector\"!==s||r[\"source-layer\"]?\"raster-dem\"===s&&\"hillshade\"!==a?e.push(new be(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==a||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===s&&t.lineMetrics||e.push(new be(n,r,`layer \"${r.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):e.push(new be(n,r,`layer \"${r.id}\" must specify a \"source-layer\"`)):e.push(new be(n,r.source,`source \"${r.source}\" not found`));}else e.push(new be(n,r,'missing required property \"source\"'));return e=e.concat(Jn({key:n,value:r,valueSpec:s.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":()=>[],type:()=>Bi({key:`${n}.type`,value:r.type,valueSpec:s.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:\"type\"}),filter:t=>gi(_e({layerType:a},t)),layout:t=>Jn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>wi(_e({layerType:a},t))}}),paint:t=>Jn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>bi(_e({layerType:a},t))}})}})),e}function Ai(t){const e=t.value,r=t.key,n=Dn(e);return \"string\"!==n?[new be(r,e,`string expected, ${n} found`)]:[]}const ki={promoteId:function({key:t,value:e}){if(\"string\"===Dn(e))return Ai({key:t,value:e});{const r=[];for(const n in e)r.push(...Ai({key:`${t}.${n}`,value:e[n]}));return r}}};function Si(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return [new be(r,e,'\"type\" is required')];const s=Ae(e.type);let a;switch(s){case\"vector\":case\"raster\":case\"raster-dem\":return a=Jn({key:r,value:e,valueSpec:n[`source_${s.replace(\"-\",\"_\")}`],style:t.style,styleSpec:n,objectElementValidators:ki}),a;case\"geojson\":if(a=Jn({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,objectElementValidators:ki}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s=\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n;a.push(...ei({key:`${r}.${t}.map`,value:i,expressionContext:\"cluster-map\"})),a.push(...ei({key:`${r}.${t}.reduce`,value:s,expressionContext:\"cluster-reduce\"}));}return a;case\"video\":return Jn({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case\"image\":return Jn({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case\"canvas\":return [new be(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return ni({key:`${r}.type`,value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,styleSpec:n})}}function Ii(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let s=[];const a=Dn(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new be(\"light\",e,`object expected, ${a} found`)]),s;for(const t in e){const a=t.match(/^(.*)-transition$/);s=s.concat(a&&n[a[1]]&&n[a[1]].transition?Bi({key:t,value:e[t],valueSpec:r.transition,style:i,styleSpec:r}):n[t]?Bi({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r}):[new be(t,e[t],`unknown property \"${t}\"`)]);}return s}function zi(t){const e=t.value,r=t.key,n=t.style,i=t.styleSpec,s=i.terrain;let a=[];const o=Dn(e);if(void 0===e)return a;if(\"object\"!==o)return a=a.concat([new be(\"terrain\",e,`object expected, ${o} found`)]),a;for(const t in e){const r=t.match(/^(.*)-transition$/);a=a.concat(r&&s[r[1]]&&s[r[1]].transition?Bi({key:t,value:e[t],valueSpec:i.transition,style:n,styleSpec:i}):s[t]?Bi({key:t,value:e[t],valueSpec:s[t],style:n,styleSpec:i}):[new be(t,e[t],`unknown property \"${t}\"`)]);}if(e.source){const t=n.sources&&n.sources[e.source],i=t&&Ae(t.type);t?\"raster-dem\"!==i&&a.push(new be(r,e.source,`terrain cannot be used with a source of type ${i}, it only be used with a \"raster-dem\" source type`)):a.push(new be(r,e.source,`source \"${e.source}\" not found`));}else a.push(new be(r,e,'terrain is missing required property \"source\"'));return a}function Mi(t){const e=t.value,r=t.style,n=t.styleSpec,i=n.fog;let s=[];const a=Dn(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new be(\"fog\",e,`object expected, ${a} found`)]),s;for(const t in e){const a=t.match(/^(.*)-transition$/);s=s.concat(a&&i[a[1]]&&i[a[1]].transition?Bi({key:t,value:e[t],valueSpec:n.transition,style:r,styleSpec:n}):i[t]?Bi({key:t,value:e[t],valueSpec:i[t],style:r,styleSpec:n}):[new be(t,e[t],`unknown property \"${t}\"`)]);}return s}const Ti={\"*\":()=>[],array:Wn,boolean:function(t){const e=t.value,r=t.key,n=Dn(e);return \"boolean\"!==n?[new be(r,e,`boolean expected, ${n} found`)]:[]},number:Qn,color:function(t){const e=t.key,r=t.value,n=Dn(r);return \"string\"!==n?[new be(e,r,`color expected, ${n} found`)]:null===Ne.parseCSSColor(r)?[new be(e,r,`color expected, \"${r}\" found`)]:[]},constants:we,enum:ni,filter:gi,function:ti,layer:_i,object:Jn,source:Si,light:Ii,terrain:zi,fog:Mi,string:Ai,formatted:function(t){return 0===Ai(t).length?[]:ei(t)},resolvedImage:function(t){return 0===Ai(t).length?[]:ei(t)},projection:function(t){const e=t.value,r=t.styleSpec,n=r.projection,i=t.style;let s=[];const a=Dn(e);if(\"object\"===a)for(const t in e)s=s.concat(Bi({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r}));else \"string\"!==a&&(s=s.concat([new be(\"projection\",e,`object or string expected, ${a} found`)]));return s}};function Bi(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return r.expression&&Vn(Ae(e))?ti(t):r.expression&&Nn(ke(e))?ei(t):r.type&&Ti[r.type]?Ti[r.type](t):Jn(_e({},t,{valueSpec:r.type?n[r.type]:r}))}function Ci(t){const e=t.value,r=t.key,n=Ai(t);return n.length||(-1===e.indexOf(\"{fontstack}\")&&n.push(new be(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new be(r,e,'\"glyphs\" url must include a \"{range}\" token'))),n}function Pi(t,e=ve){let r=[];return r=r.concat(Bi({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:Ci,\"*\":()=>[]}})),t.constants&&(r=r.concat(we({key:\"constants\",value:t.constants,style:t,styleSpec:e}))),Ei(r)}function Ei(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function Di(t){return function(...e){return Ei(t.apply(this,e))}}Pi.source=Di(Si),Pi.light=Di(Ii),Pi.terrain=Di(zi),Pi.fog=Di(Mi),Pi.layer=Di(_i),Pi.filter=Di(gi),Pi.paintProperty=Di(bi),Pi.layoutProperty=Di(wi);const Vi=Pi,Fi=Vi.light,Li=Vi.fog,Ri=Vi.paintProperty,Ui=Vi.layoutProperty;function $i(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new ge(new Error(n.message))),r=!0;return r}var Oi=ji;function ji(t,e,r){var n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(var s=0;s<this.d*this.d;s++){var a=i[3+s],o=i[3+s+1];n.push(a===o?null:i.subarray(a,o));}var l=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],l),this.bboxes=i.subarray(l),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(var u=0;u<this.d*this.d;u++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var c=r/e*t;this.min=-c,this.max=t+c;}ji.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);},ji.prototype._insertReadonly=function(){throw \"Cannot insert into a GridIndex created from an ArrayBuffer.\"},ji.prototype._insertCell=function(t,e,r,n,i,s){this.cells[i].push(s);},ji.prototype.query=function(t,e,r,n,i){var s=this.min,a=this.max;if(t<=s&&e<=s&&a<=r&&a<=n&&!i)return Array.prototype.slice.call(this.keys);var o=[];return this._forEachCell(t,e,r,n,this._queryCell,o,{},i),o},ji.prototype._queryCell=function(t,e,r,n,i,s,a,o){var l=this.cells[i];if(null!==l)for(var u=this.keys,c=this.bboxes,h=0;h<l.length;h++){var p=l[h];if(void 0===a[p]){var d=4*p;(o?o(c[d+0],c[d+1],c[d+2],c[d+3]):t<=c[d+2]&&e<=c[d+3]&&r>=c[d+0]&&n>=c[d+1])?(a[p]=!0,s.push(u[p])):a[p]=!1;}}},ji.prototype._forEachCell=function(t,e,r,n,i,s,a,o){for(var l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n),p=l;p<=c;p++)for(var d=u;d<=h;d++){var f=this.d*d+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(d),this._convertFromCellCoord(p+1),this._convertFromCellCoord(d+1)))&&i.call(this,t,e,r,n,f,s,a,o))return}},ji.prototype._convertFromCellCoord=function(t){return (t-this.padding)/this.scale},ji.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},ji.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n<this.cells.length;n++)r+=this.cells[n].length;var i=new Int32Array(e+r+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var s=e,a=0;a<t.length;a++){var o=t[a];i[3+a]=s,i.set(o,s),s+=o.length;}return i[3+t.length]=s,i.set(this.keys,s),i[3+t.length+1]=s+=this.keys.length,i.set(this.bboxes,s),s+=this.bboxes.length,i.buffer};const{ImageData:qi,ImageBitmap:Ni}=a,Gi={};function Zi(t,e,r={}){Object.defineProperty(e,\"_classRegistryKey\",{value:t,writeable:!1}),Gi[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]};}Zi(\"Object\",Object),Oi.serialize=function(t,e){const r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}},Oi.deserialize=function(t){return new Oi(t.buffer)},Zi(\"Grid\",Oi),Zi(\"Color\",Ge),Zi(\"Error\",Error),Zi(\"ResolvedImage\",Ye),Zi(\"StylePropertyFunction\",Yn),Zi(\"StyleExpression\",qn,{omit:[\"_evaluator\"]}),Zi(\"ZoomDependentExpression\",Xn),Zi(\"ZoomConstantExpression\",Zn),Zi(\"CompoundExpression\",cr,{omit:[\"_evaluate\"]});for(const t in kn)kn[t]._classRegistryKey||Zi(`Expression_${t}`,kn[t]);function Xi(t){return t&&\"undefined\"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&\"ArrayBuffer\"===t.constructor.name)}function Ki(t){return Ni&&t instanceof Ni}function Yi(t,e){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(Xi(t)||Ki(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){const r=t;return e&&e.push(r.buffer),r}if(t instanceof qi)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){const r=[];for(const n of t)r.push(Yi(n,e));return r}if(\"object\"==typeof t){const r=t.constructor,n=r._classRegistryKey;if(!n)throw new Error(\"can't serialize object of unregistered class\");const i=r.serialize?r.serialize(t,e):{};if(!r.serialize){for(const r in t){if(!t.hasOwnProperty(r))continue;if(Gi[n].omit.indexOf(r)>=0)continue;const s=t[r];i[r]=Gi[n].shallow.indexOf(r)>=0?s:Yi(s,e);}t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==n&&(i.$name=n),i}throw new Error(\"can't serialize object of type \"+typeof t)}function Hi(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Xi(t)||Ki(t)||ArrayBuffer.isView(t)||t instanceof qi)return t;if(Array.isArray(t))return t.map(Hi);if(\"object\"==typeof t){const e=t.$name||\"Object\",{klass:r}=Gi[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const r of Object.keys(t)){if(\"$name\"===r)continue;const i=t[r];n[r]=Gi[e].shallow.indexOf(r)>=0?i:Hi(i);}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}class Ji{constructor(){this.first=!0;}update(t,e){const r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))}}const Wi=t=>t>=1536&&t<=1791,Qi=t=>t>=1872&&t<=1919,ts=t=>t>=2208&&t<=2303,es=t=>t>=11904&&t<=12031,rs=t=>t>=12032&&t<=12255,ns=t=>t>=12272&&t<=12287,is=t=>t>=12288&&t<=12351,ss=t=>t>=12352&&t<=12447,as=t=>t>=12448&&t<=12543,os=t=>t>=12544&&t<=12591,ls=t=>t>=12704&&t<=12735,us=t=>t>=12736&&t<=12783,cs=t=>t>=12784&&t<=12799,hs=t=>t>=12800&&t<=13055,ps=t=>t>=13056&&t<=13311,ds=t=>t>=13312&&t<=19903,fs=t=>t>=19968&&t<=40959,ys=t=>t>=40960&&t<=42127,ms=t=>t>=42128&&t<=42191,gs=t=>t>=44032&&t<=55215,xs=t=>t>=63744&&t<=64255,vs=t=>t>=64336&&t<=65023,bs=t=>t>=65040&&t<=65055,ws=t=>t>=65072&&t<=65103,_s=t=>t>=65104&&t<=65135,As=t=>t>=65136&&t<=65279,ks=t=>t>=65280&&t<=65519;function Ss(t){for(const e of t)if(Ms(e.charCodeAt(0)))return !0;return !1}function Is(t){for(const e of t)if(!zs(e.charCodeAt(0)))return !1;return !0}function zs(t){return !(Wi(t)||Qi(t)||ts(t)||vs(t)||As(t))}function Ms(t){return !(746!==t&&747!==t&&(t<4352||!(ls(t)||os(t)||ws(t)&&!(t>=65097&&t<=65103)||xs(t)||ps(t)||es(t)||us(t)||!(!is(t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||ds(t)||fs(t)||hs(t)||(t=>t>=12592&&t<=12687)(t)||(t=>t>=43360&&t<=43391)(t)||(t=>t>=55216&&t<=55295)(t)||(t=>t>=4352&&t<=4607)(t)||gs(t)||ss(t)||ns(t)||(t=>t>=12688&&t<=12703)(t)||rs(t)||cs(t)||as(t)&&12540!==t||!(!ks(t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!_s(t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(t=>t>=5120&&t<=5759)(t)||(t=>t>=6320&&t<=6399)(t)||bs(t)||(t=>t>=19904&&t<=19967)(t)||ys(t)||ms(t))))}function Ts(t){return !(Ms(t)||function(t){return !!((t=>t>=128&&t<=255)(t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||(t=>t>=8192&&t<=8303)(t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||(t=>t>=8448&&t<=8527)(t)||(t=>t>=8528&&t<=8591)(t)||(t=>t>=8960&&t<=9215)(t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||(t=>t>=9216&&t<=9279)(t)&&9251!==t||(t=>t>=9280&&t<=9311)(t)||(t=>t>=9312&&t<=9471)(t)||(t=>t>=9632&&t<=9727)(t)||(t=>t>=9728&&t<=9983)(t)&&!(t>=9754&&t<=9759)||(t=>t>=11008&&t<=11263)(t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||is(t)||as(t)||(t=>t>=57344&&t<=63743)(t)||ws(t)||_s(t)||ks(t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Bs(t){return t>=1424&&t<=2303||vs(t)||As(t)}function Cs(t,e){return !(!e&&Bs(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||(t=>t>=6016&&t<=6143)(t))}function Ps(t){for(const e of t)if(Bs(e.charCodeAt(0)))return !0;return !1}const Es=\"deferred\",Ds=\"loading\",Vs=\"loaded\";let Fs=null,Ls=\"unavailable\",Rs=null;const Us=function(t){t&&\"string\"==typeof t&&t.indexOf(\"NetworkError\")>-1&&(Ls=\"error\"),Fs&&Fs(t);};function $s(){Os.fire(new me(\"pluginStateChange\",{pluginStatus:Ls,pluginURL:Rs}));}const Os=new xe,js=function(){return Ls},qs=function(){if(Ls!==Es||!Rs)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");Ls=Ds,$s(),Rs&&ae({url:Rs},(t=>{t?Us(t):(Ls=Vs,$s());}));},Ns={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>Ls===Vs||null!=Ns.applyArabicShaping,isLoading:()=>Ls===Ds,setState(t){Ls=t.pluginStatus,Rs=t.pluginURL;},isParsed:()=>null!=Ns.applyArabicShaping&&null!=Ns.processBidirectionalText&&null!=Ns.processStyledBidirectionalText,getPluginURL:()=>Rs};class Gs{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition,this.pitch=e.pitch):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Ji,this.transition={},this.pitch=0);}isSupportedScript(t){return function(t,e){for(const r of t)if(!Cs(r.charCodeAt(0),e))return !1;return !0}(t,Ns.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class Zs{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Vn(t))return new Yn(t,e);if(Nn(t)){const r=Kn(t,e);if(\"error\"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return r.value}{let r=t;return \"string\"==typeof t&&\"color\"===e.type&&(r=Ge.parse(t)),{kind:\"constant\",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification);}isDataDriven(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class Xs{constructor(t){this.property=t,this.value=new Zs(t,void 0);}transitioned(t,e){return new Ys(this.property,this.value,e,tt({},t.transition,this.transition),t.now)}untransitioned(){return new Ys(this.property,this.value,null,{},0)}}class Ks{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);}getValue(t){return ct(this._values[t].value.value)}setValue(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Xs(this._values[t].property)),this._values[t].value=new Zs(this._values[t].property,null===e?void 0:ct(e));}getTransition(t){return ct(this._values[t].transition)}setTransition(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Xs(this._values[t].property)),this._values[t].transition=ct(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new Hs(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new Hs(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class Ys{constructor(t,e,r,n,i){const s=n.delay||0,a=n.duration||0;i=i||0,this.property=t,this.value=e,this.begin=i+s,this.end=this.begin+a,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),s=this.prior;if(s){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return s.possiblyEvaluate(t,e,r);{const a=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(s.possiblyEvaluate(t,e,r),i,Z(a))}}return i}}class Hs{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new Qs(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class Js{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);}getValue(t){return ct(this._values[t].value)}setValue(t,e){this._values[t]=new Zs(this._values[t].property,null===e?void 0:ct(e));}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new Qs(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class Ws{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return \"constant\"===this.value.kind}constantOr(t){return \"constant\"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class Qs{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class ta{constructor(t){this.specification=t;}possiblyEvaluate(t,e){return t.expression.evaluate(e)}interpolate(t,e,r){const n=Rr[this.specification.type];return n?n(t,e,r):t}}class ea{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new Ws(this,\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?{kind:\"constant\",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new Ws(this,{kind:\"constant\",value:void 0},t.parameters);const n=Rr[this.specification.type];return n?new Ws(this,{kind:\"constant\",value:n(t.value.value,e.value.value,r)},t.parameters):t}evaluate(t,e,r,n,i,s){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i,s)}}class ra extends ea{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new Ws(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),s=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof i?i.name:i,a=this._calculate(s,s,s,e);return new Ws(this,{kind:\"constant\",value:a},e)}if(\"camera\"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new Ws(this,{kind:\"constant\",value:r},e)}return new Ws(this,t.expression,e)}evaluate(t,e,r,n,i,s){if(\"source\"===t.kind){const a=t.evaluate(e,r,n,i,s);return this._calculate(a,a,a,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e,other:r}:{from:r,to:e,other:t}}interpolate(t){return t}}class na{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new Gs(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Gs(Math.floor(e.zoom),e)),t.expression.evaluate(new Gs(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class ia{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class sa{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const r=t[e];r.specification.overridable&&this.overridableProperties.push(e);const n=this.defaultPropertyValues[e]=new Zs(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new Xs(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}}}function aa(t,e){return 256*(t=Y(Math.floor(t),0,255))+Y(Math.floor(e),0,255)}Zi(\"DataDrivenProperty\",ea),Zi(\"DataConstantProperty\",ta),Zi(\"CrossFadedDataDrivenProperty\",ra),Zi(\"CrossFadedProperty\",na),Zi(\"ColorRampProperty\",ia);const oa={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class la{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class ua{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}}function ca(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=oa[t.type].BYTES_PER_ELEMENT,s=r=ha(r,Math.max(e,i)),a=t.components||1;return n=Math.max(n,i),r+=i*a,{name:t.name,type:t.type,components:a,offset:s}})),size:ha(r,Math.max(n,e)),alignment:e}}function ha(t,e){return Math.ceil(t/e)*e}class pa extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}pa.prototype.bytesPerElement=4,Zi(\"StructArrayLayout2i4\",pa);class da extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,t}}da.prototype.bytesPerElement=8,Zi(\"StructArrayLayout4i8\",da);class fa extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=6*t,u=12*t,c=3*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.uint8[u+4]=n,this.uint8[u+5]=i,this.uint8[u+6]=s,this.uint8[u+7]=a,this.float32[c+2]=o,t}}fa.prototype.bytesPerElement=12,Zi(\"StructArrayLayout2i4ub1f12\",fa);class ya extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}ya.prototype.bytesPerElement=12,Zi(\"StructArrayLayout3f12\",ya);class ma extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,s,a,o,l,u)}emplace(t,e,r,n,i,s,a,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=s,this.uint16[h+5]=a,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}ma.prototype.bytesPerElement=20,Zi(\"StructArrayLayout10ui20\",ma);class ga extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o){const l=this.length;return this.resize(l+1),this.emplace(l,t,e,r,n,i,s,a,o)}emplace(t,e,r,n,i,s,a,o,l){const u=8*t;return this.uint16[u+0]=e,this.uint16[u+1]=r,this.uint16[u+2]=n,this.uint16[u+3]=i,this.uint16[u+4]=s,this.uint16[u+5]=a,this.uint16[u+6]=o,this.uint16[u+7]=l,t}}ga.prototype.bytesPerElement=16,Zi(\"StructArrayLayout8ui16\",ga);class xa extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y){const m=this.length;return this.resize(m+1),this.emplace(m,t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m){const g=16*t;return this.int16[g+0]=e,this.int16[g+1]=r,this.int16[g+2]=n,this.int16[g+3]=i,this.uint16[g+4]=s,this.uint16[g+5]=a,this.uint16[g+6]=o,this.uint16[g+7]=l,this.int16[g+8]=u,this.int16[g+9]=c,this.int16[g+10]=h,this.int16[g+11]=p,this.int16[g+12]=d,this.int16[g+13]=f,this.int16[g+14]=y,this.int16[g+15]=m,t}}xa.prototype.bytesPerElement=32,Zi(\"StructArrayLayout4i4ui4i4i32\",xa);class va extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}va.prototype.bytesPerElement=4,Zi(\"StructArrayLayout1ul4\",va);class ba extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p){const d=this.length;return this.resize(d+1),this.emplace(d,t,e,r,n,i,s,a,o,l,u,c,h,p)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,d){const f=20*t,y=10*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.int16[f+4]=s,this.float32[y+3]=a,this.float32[y+4]=o,this.float32[y+5]=l,this.float32[y+6]=u,this.int16[f+14]=c,this.uint32[y+8]=h,this.uint16[f+18]=p,this.uint16[f+19]=d,t}}ba.prototype.bytesPerElement=40,Zi(\"StructArrayLayout5i4f1i1ul2ui40\",ba);class wa extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=8*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+4]=i,this.int16[l+5]=s,this.int16[l+6]=a,this.int16[l+7]=o,t}}wa.prototype.bytesPerElement=16,Zi(\"StructArrayLayout3i2i2i16\",wa);class _a extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i)}emplace(t,e,r,n,i,s){const a=4*t,o=8*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.int16[o+6]=i,this.int16[o+7]=s,t}}_a.prototype.bytesPerElement=16,Zi(\"StructArrayLayout2f1f2i16\",_a);class Aa extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=12*t,a=3*t;return this.uint8[s+0]=e,this.uint8[s+1]=r,this.float32[a+1]=n,this.float32[a+2]=i,t}}Aa.prototype.bytesPerElement=12,Zi(\"StructArrayLayout2ub2f12\",Aa);class ka extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}ka.prototype.bytesPerElement=6,Zi(\"StructArrayLayout3ui6\",ka);class Sa extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m,g,x,v,b){const w=this.length;return this.resize(w+1),this.emplace(w,t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m,g,x,v,b)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m,g,x,v,b,w){const _=30*t,A=15*t,k=60*t;return this.int16[_+0]=e,this.int16[_+1]=r,this.int16[_+2]=n,this.float32[A+2]=i,this.float32[A+3]=s,this.uint16[_+8]=a,this.uint16[_+9]=o,this.uint32[A+5]=l,this.uint32[A+6]=u,this.uint32[A+7]=c,this.uint16[_+16]=h,this.uint16[_+17]=p,this.uint16[_+18]=d,this.float32[A+10]=f,this.float32[A+11]=y,this.uint8[k+48]=m,this.uint8[k+49]=g,this.uint8[k+50]=x,this.uint32[A+13]=v,this.int16[_+28]=b,this.uint8[k+58]=w,t}}Sa.prototype.bytesPerElement=60,Zi(\"StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60\",Sa);class Ia extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m,g,x,v,b,w,_,A,k,S,I,z,M,T){const B=this.length;return this.resize(B+1),this.emplace(B,t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m,g,x,v,b,w,_,A,k,S,I,z,M,T)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m,g,x,v,b,w,_,A,k,S,I,z,M,T,B){const C=38*t,P=19*t;return this.int16[C+0]=e,this.int16[C+1]=r,this.int16[C+2]=n,this.float32[P+2]=i,this.float32[P+3]=s,this.int16[C+8]=a,this.int16[C+9]=o,this.int16[C+10]=l,this.int16[C+11]=u,this.int16[C+12]=c,this.int16[C+13]=h,this.uint16[C+14]=p,this.uint16[C+15]=d,this.uint16[C+16]=f,this.uint16[C+17]=y,this.uint16[C+18]=m,this.uint16[C+19]=g,this.uint16[C+20]=x,this.uint16[C+21]=v,this.uint16[C+22]=b,this.uint16[C+23]=w,this.uint16[C+24]=_,this.uint16[C+25]=A,this.uint16[C+26]=k,this.uint16[C+27]=S,this.uint16[C+28]=I,this.uint32[P+15]=z,this.float32[P+16]=M,this.float32[P+17]=T,this.float32[P+18]=B,t}}Ia.prototype.bytesPerElement=76,Zi(\"StructArrayLayout3i2f6i15ui1ul3f76\",Ia);class za extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}za.prototype.bytesPerElement=4,Zi(\"StructArrayLayout1f4\",za);class Ma extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}Ma.prototype.bytesPerElement=6,Zi(\"StructArrayLayout3i6\",Ma);class Ta extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=7*t;return this.float32[l+0]=e,this.float32[l+1]=r,this.float32[l+2]=n,this.float32[l+3]=i,this.float32[l+4]=s,this.float32[l+5]=a,this.float32[l+6]=o,t}}Ta.prototype.bytesPerElement=28,Zi(\"StructArrayLayout7f28\",Ta);class Ba extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=6*t;return this.uint32[3*t+0]=e,this.uint16[s+2]=r,this.uint16[s+3]=n,this.uint16[s+4]=i,t}}Ba.prototype.bytesPerElement=12,Zi(\"StructArrayLayout1ul3ui12\",Ba);class Ca extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}Ca.prototype.bytesPerElement=4,Zi(\"StructArrayLayout2ui4\",Ca);class Pa extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Pa.prototype.bytesPerElement=2,Zi(\"StructArrayLayout1ui2\",Pa);class Ea extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}Ea.prototype.bytesPerElement=8,Zi(\"StructArrayLayout2f8\",Ea);class Da extends ua{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.float32[s+3]=i,t}}Da.prototype.bytesPerElement=16,Zi(\"StructArrayLayout4f16\",Da);class Va extends la{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.int16[this._pos2+3]}get tileAnchorY(){return this._structArray.int16[this._pos2+4]}get x1(){return this._structArray.float32[this._pos4+3]}get y1(){return this._structArray.float32[this._pos4+4]}get x2(){return this._structArray.float32[this._pos4+5]}get y2(){return this._structArray.float32[this._pos4+6]}get padding(){return this._structArray.int16[this._pos2+14]}get featureIndex(){return this._structArray.uint32[this._pos4+8]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}get bucketIndex(){return this._structArray.uint16[this._pos2+19]}}Va.prototype.size=40;class Fa extends ba{get(t){return new Va(this,t)}}Zi(\"CollisionBoxArray\",Fa);class La extends la{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}get numGlyphs(){return this._structArray.uint16[this._pos2+9]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}get lineLength(){return this._structArray.uint32[this._pos4+7]}get segment(){return this._structArray.uint16[this._pos2+16]}get lowerSize(){return this._structArray.uint16[this._pos2+17]}get upperSize(){return this._structArray.uint16[this._pos2+18]}get lineOffsetX(){return this._structArray.float32[this._pos4+10]}get lineOffsetY(){return this._structArray.float32[this._pos4+11]}get writingMode(){return this._structArray.uint8[this._pos1+48]}get placedOrientation(){return this._structArray.uint8[this._pos1+49]}set placedOrientation(t){this._structArray.uint8[this._pos1+49]=t;}get hidden(){return this._structArray.uint8[this._pos1+50]}set hidden(t){this._structArray.uint8[this._pos1+50]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+13]}set crossTileID(t){this._structArray.uint32[this._pos4+13]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}get flipState(){return this._structArray.uint8[this._pos1+58]}set flipState(t){this._structArray.uint8[this._pos1+58]=t;}}La.prototype.size=60;class Ra extends Sa{get(t){return new La(this,t)}}Zi(\"PlacedSymbolArray\",Ra);class Ua extends la{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+8]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+9]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+10]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+11]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+12]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+13]}get key(){return this._structArray.uint16[this._pos2+14]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+17]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+18]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+19]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+20]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+21]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+22]}get featureIndex(){return this._structArray.uint16[this._pos2+23]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+24]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+25]}get numIconVertices(){return this._structArray.uint16[this._pos2+26]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+27]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+28]}get crossTileID(){return this._structArray.uint32[this._pos4+15]}set crossTileID(t){this._structArray.uint32[this._pos4+15]=t;}get textOffset0(){return this._structArray.float32[this._pos4+16]}get textOffset1(){return this._structArray.float32[this._pos4+17]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+18]}}Ua.prototype.size=76;class $a extends Ia{get(t){return new Ua(this,t)}}Zi(\"SymbolInstanceArray\",$a);class Oa extends za{getoffsetX(t){return this.float32[1*t+0]}}Zi(\"GlyphOffsetArray\",Oa);class ja extends Ma{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}Zi(\"SymbolLineVertexArray\",ja);class qa extends la{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}get layoutVertexArrayOffset(){return this._structArray.uint16[this._pos2+4]}}qa.prototype.size=12;class Na extends Ba{get(t){return new qa(this,t)}}Zi(\"FeatureIndexArray\",Na);class Ga extends la{get a_centroid_pos0(){return this._structArray.uint16[this._pos2+0]}get a_centroid_pos1(){return this._structArray.uint16[this._pos2+1]}}Ga.prototype.size=4;class Za extends Ca{get(t){return new Ga(this,t)}}Zi(\"FillExtrusionCentroidArray\",Za);const Xa=ca([{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"}]),Ka=ca([{name:\"a_dash_to\",components:4,type:\"Uint16\"},{name:\"a_dash_from\",components:4,type:\"Uint16\"}]);var Ya=qe((function(t){t.exports=function(t,e){var r,n,i,s,a,o,l,u;for(n=t.length-(r=3&t.length),i=e,a=3432918353,o=461845907,u=0;u<n;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,i=27492+(65535&(s=5*(65535&(i=(i^=l=(65535&(l=(l=(65535&l)*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};})),Ha=qe((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,s=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(s)|(255&t.charCodeAt(++s))<<8|(255&t.charCodeAt(++s))<<16|(255&t.charCodeAt(++s))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++s;switch(n){case 3:i^=(255&t.charCodeAt(s+2))<<16;case 2:i^=(255&t.charCodeAt(s+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(s)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};})),Ja=Ya,Wa=Ha;Ja.murmur3=Ya,Ja.murmur2=Wa;class Qa{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(to(t)),this.positions.push(e,r,n);}getPositions(t){const e=to(t);let r=0,n=this.ids.length-1;for(;r<n;){const t=r+n>>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return eo(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new Qa;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function to(t){const e=+t;return !isNaN(e)&&Number.MIN_SAFE_INTEGER<=e&&e<=Number.MAX_SAFE_INTEGER?e:Ja(String(t))}function eo(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let s=r-1,a=n+1;for(;;){do{s++;}while(t[s]<i);do{a--;}while(t[a]>i);if(s>=a)break;ro(t,s,a),ro(e,3*s,3*a),ro(e,3*s+1,3*a+1),ro(e,3*s+2,3*a+2);}a-r<n-a?(eo(t,e,r,a),r=a+1):(eo(t,e,a+1,n),n=a);}}function ro(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}Zi(\"FeaturePositionMap\",Qa);class no{constructor(t,e){this.gl=t.gl,this.location=e;}}class io extends no{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));}}class so extends no{constructor(t,e){super(t,e),this.current=[0,0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));}}class ao extends no{constructor(t,e){super(t,e),this.current=Ge.transparent;}set(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));}}const oo=new Float32Array(16),lo=new Float32Array(9),uo=new Float32Array(4);function co(t){return [aa(255*t.r,255*t.g),aa(255*t.b,255*t.a)]}class ho{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`)),this.type=r;}setUniform(t,e,r){t.set(r.constantOr(this.value));}getBinding(t,e,r){return \"color\"===this.type?new ao(t,e):new io(t,e)}}class po{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tl.concat(e.br),this.patternTo=t.tl.concat(t.br);}setUniform(t,e,r,n){const i=\"u_pattern_to\"===n||\"u_dash_to\"===n?this.patternTo:\"u_pattern_from\"===n||\"u_dash_from\"===n?this.patternFrom:\"u_pixel_ratio_to\"===n?this.pixelRatioTo:\"u_pixel_ratio_from\"===n?this.pixelRatioFrom:null;i&&t.set(i);}getBinding(t,e,r){return \"u_pattern_from\"===r||\"u_pattern_to\"===r||\"u_dash_from\"===r||\"u_dash_to\"===r?new so(t,e):new io(t,e)}}class fo{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r,n,i,s){const a=this.paintVertexArray.length,o=this.expression.evaluate(new Gs(0),e,{},i,n,s);this.paintVertexArray.resize(t),this._setPaintValue(a,t,o);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate({zoom:0},r,n,void 0,i);this._setPaintValue(t,e,s);}_setPaintValue(t,e,r){if(\"color\"===this.type){const n=co(r);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,n[0],n[1]);}else {for(let n=t;n<e;n++)this.paintVertexArray.emplace(n,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}}class yo{constructor(t,e,r,n,i,s){this.expression=t,this.uniformNames=e.map((t=>`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?4:2,offset:0}))),this.paintVertexArray=new s;}populatePaintArray(t,e,r,n,i,s){const a=this.expression.evaluate(new Gs(this.zoom),e,{},i,n,s),o=this.expression.evaluate(new Gs(this.zoom+1),e,{},i,n,s),l=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(l,t,a,o);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate({zoom:this.zoom},r,n,void 0,i),a=this.expression.evaluate({zoom:this.zoom+1},r,n,void 0,i);this._setPaintValue(t,e,s,a);}_setPaintValue(t,e,r,n){if(\"color\"===this.type){const i=co(r),s=co(n);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,i[0],i[1],s[0],s[1]);}else {for(let i=t;i<e;i++)this.paintVertexArray.emplace(i,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}setUniform(t,e){const r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,n=Y(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(n);}getBinding(t,e,r){return new io(t,e)}}class mo{constructor(t,e,r,n,i,s,a){this.expression=t,this.type=r,this.useIntegerZoom=n,this.zoom=i,this.layerId=a,this.paintVertexAttributes=(\"array\"===r?Ka:Xa).members;for(let t=0;t<e.length;++t);this.zoomInPaintVertexArray=new s,this.zoomOutPaintVertexArray=new s;}populatePaintArray(t,e,r){const n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,e.patterns&&e.patterns[this.layerId],r);}updatePaintArray(t,e,r,n,i,s){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],s);}_setPaintValues(t,e,r,n){if(!n||!r)return;const{min:i,mid:s,max:a}=r,o=n[i],l=n[s],u=n[a];if(o&&l&&u)for(let r=t;r<e;r++)this._setPaintValue(this.zoomInPaintVertexArray,r,l,o),this._setPaintValue(this.zoomOutPaintVertexArray,r,l,u);}_setPaintValue(t,e,r,n){t.emplace(e,r.tl[0],r.tl[1],r.br[0],r.br[1],n.tl[0],n.tl[1],n.br[0],n.br[1],r.pixelRatio,n.pixelRatio);}upload(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();}}class go{constructor(t,e,r=(()=>!0)){this.binders={},this._buffers=[];const n=[];for(const i in t.paint._values){if(!r(i))continue;const s=t.paint.get(i);if(!(s instanceof Ws&&Cn(s.property.specification)))continue;const a=bo(i,t.type),o=s.value,l=s.property.specification.type,u=s.property.useIntegerZoom,c=s.property.specification[\"property-type\"],h=\"cross-faded\"===c||\"cross-faded-data-driven\"===c,p=\"line-dasharray\"===String(i)&&\"constant\"!==t.layout.get(\"line-cap\").value.kind;if(\"constant\"!==o.kind||p)if(\"source\"===o.kind||p||h){const r=Ao(i,l,\"source\");this.binders[i]=h?new mo(o,a,l,u,e,r,t.id):new fo(o,a,l,r),n.push(`/a_${i}`);}else {const t=Ao(i,l,\"composite\");this.binders[i]=new yo(o,a,l,u,e,t),n.push(`/z_${i}`);}else this.binders[i]=h?new po(o.value,a):new ho(o.value,a,l),n.push(`/u_${i}`);}this.cacheKey=n.sort().join(\"\");}getMaxValue(t){const e=this.binders[t];return e instanceof fo||e instanceof yo?e.maxValue:0}populatePaintArrays(t,e,r,n,i,s){for(const a in this.binders){const o=this.binders[a];(o instanceof fo||o instanceof yo||o instanceof mo)&&o.populatePaintArray(t,e,r,n,i,s);}}setConstantPatternPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof po&&n.setConstantPatternPositions(t,e);}}updatePaintArrays(t,e,r,n,i,s){let a=!1;for(const o in t){const l=e.getPositions(o);for(const e of l){const l=r.feature(e.index);for(const r in this.binders){const u=this.binders[r];if((u instanceof fo||u instanceof yo||u instanceof mo)&&!0===u.expression.isStateDependent){const c=n.paint.get(r);u.expression=c.value,u.updatePaintArray(e.start,e.end,l,t[o],i,s),a=!0;}}}}return a}defines(){const t=[];for(const e in this.binders){const r=this.binders[e];(r instanceof ho||r instanceof po)&&t.push(...r.uniformNames.map((t=>`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof fo||r instanceof yo||r instanceof mo)for(let e=0;e<r.paintVertexAttributes.length;e++)t.push(r.paintVertexAttributes[e].name);}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof ho||r instanceof po||r instanceof yo)for(const e of r.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const r=[];for(const n in this.binders){const i=this.binders[n];if(i instanceof ho||i instanceof po||i instanceof yo)for(const s of i.uniformNames)if(e[s]){const a=i.getBinding(t,e[s],s);r.push({name:s,property:n,binding:a});}}return r}setUniforms(t,e,r,n){for(const{name:t,property:i,binding:s}of e)this.binders[i].setUniform(s,n,r.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const r=this.binders[e];if(t&&r instanceof mo){const e=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (r instanceof fo||r instanceof yo)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}}upload(t){for(const e in this.binders){const r=this.binders[e];(r instanceof fo||r instanceof yo||r instanceof mo)&&r.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof fo||e instanceof yo||e instanceof mo)&&e.destroy();}}}class xo{constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new go(n,e,r);this.needsUpload=!1,this._featureMap=new Qa,this._bufferOffset=0;}populatePaintArrays(t,e,r,n,i,s,a){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,s,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n,i){for(const s of r)this.needsUpload=this.programConfigurations[s.id].updatePaintArrays(t,this._featureMap,e,s,n,i)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}const vo={\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"line-dasharray\":[\"dash_to\",\"dash_from\"]};function bo(t,e){return vo[t]||[t.replace(`${e}-`,\"\").replace(/-/g,\"_\")]}const wo={\"line-pattern\":{source:ma,composite:ma},\"fill-pattern\":{source:ma,composite:ma},\"fill-extrusion-pattern\":{source:ma,composite:ma},\"line-dasharray\":{source:ga,composite:ga}},_o={color:{source:Ea,composite:Da},number:{source:za,composite:Ea}};function Ao(t,e,r){const n=wo[t];return n&&n[r]||_o[e][r]}Zi(\"ConstantBinder\",ho),Zi(\"CrossFadedConstantBinder\",po),Zi(\"SourceExpressionBinder\",fo),Zi(\"CrossFadedCompositeBinder\",mo),Zi(\"CompositeExpressionBinder\",yo),Zi(\"ProgramConfiguration\",go,{omit:[\"_buffers\"]}),Zi(\"ProgramConfigurationSet\",xo);const ko=\"-transition\";class So extends xe{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1,needFeature:!1},this._filterCompiled=!1,\"custom\"!==t.type&&(this.metadata=(t=t).metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,\"background\"!==t.type&&\"sky\"!==t.type&&(this.source=t.source,this.sourceLayer=t[\"source-layer\"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new Js(e.layout)),e.paint)){this._transitionablePaint=new Ks(e.paint);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Qs(e.paint);}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(Ui,`layers.${this.id}.layout.${t}`,t,e,r)||(\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return ot(t,ko)?this._transitionablePaint.getTransition(t.slice(0,-ko.length)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(Ri,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(ot(t,ko))return this._transitionablePaint.setTransition(t.slice(0,-ko.length),e||void 0),!1;{const r=this._transitionablePaint._values[t],n=\"cross-faded-data-driven\"===r.property.specification[\"property-type\"],i=r.value.isDataDriven(),s=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const a=this._transitionablePaint._values[t].value;return a.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,s,a)}}_handleSpecialPaintPropertyUpdate(t){}getProgramIds(){return null}getProgramConfiguration(t){return null}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),ut(t,((t,e)=>!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&$i(this,t.call(Vi,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:ve,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isSky(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof Ws&&Cn(e.property.specification)&&(\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}compileFilter(){this._filterCompiled||(this._featureFilter=si(this.filter),this._filterCompiled=!0);}invalidateCompiledFilter(){this._filterCompiled=!1;}dynamicFilter(){return this._featureFilter.dynamicFilter}dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}}const Io=ca([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:zo}=Io;class Mo{constructor(t=[]){this.segments=t;}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>Mo.MAX_VERTEX_ARRAY_LENGTH&&pt(`Max vertices per segment is ${Mo.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>Mo.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new Mo([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}Mo.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Zi(\"SegmentVector\",Mo);var To=8192;class Bo{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));}setNorthEast(t){return this._ne=t instanceof Po?new Po(t.lng,t.lat):Po.convert(t),this}setSouthWest(t){return this._sw=t instanceof Po?new Po(t.lng,t.lat):Po.convert(t),this}extend(t){const e=this._sw,r=this._ne;let n,i;if(t instanceof Po)n=t,i=t;else {if(!(t instanceof Bo))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(Bo.convert(t)):this.extend(Po.convert(t)):this;if(n=t._sw,i=t._ne,!n||!i)return this}return e||r?(e.lng=Math.min(n.lng,e.lng),e.lat=Math.min(n.lat,e.lat),r.lng=Math.max(i.lng,r.lng),r.lat=Math.max(i.lat,r.lat)):(this._sw=new Po(n.lng,n.lat),this._ne=new Po(i.lng,i.lat)),this}getCenter(){return new Po((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Po(this.getWest(),this.getNorth())}getSouthEast(){return new Po(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(t){const{lng:e,lat:r}=Po.convert(t);let n=this._sw.lng<=e&&e<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=e&&e>=this._ne.lng),this._sw.lat<=r&&r<=this._ne.lat&&n}static convert(t){return !t||t instanceof Bo?t:new Bo(t)}}const Co=6371008.8;class Po{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new Po(J(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return Co*Math.acos(Math.min(i,1))}toBounds(t=0){const e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Bo(new Po(this.lng-r,this.lat-e),new Po(this.lng+r,this.lat+e))}static convert(t){if(t instanceof Po)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Po(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Po(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")}}const Eo=2*Math.PI*Co;function Do(t){return Eo*Math.cos(t*Math.PI/180)}function Vo(t){return (180+t)/360}function Fo(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Lo(t,e){return t/Do(e)}function Ro(t){return 360*t-180}function Uo(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}function $o(t,e){return t*Do(Uo(e))}const Oo=85.051129;class jo{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=Po.convert(t);return new jo(Vo(r.lng),Fo(r.lat),Lo(e,r.lat))}toLngLat(){return new Po(Ro(this.x),Uo(this.y))}toAltitude(){return $o(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Eo*(t=Uo(this.y),1/Math.cos(t*Math.PI/180));var t;}}function qo(t,e,r,n,s,a,o,l,u){const c=(e+n)/2,h=(r+s)/2,p=new i(c,h);l(p),function(t,e,r,n,i,s){const a=r-i,o=n-s;return Math.abs((n-e)*a-(r-t)*o)/Math.hypot(a,o)}(p.x,p.y,a.x,a.y,o.x,o.y)>=u?(qo(t,e,r,c,h,a,p,l,u),qo(t,c,h,n,s,p,o,l,u)):t.push(o);}function No(t,e,r){const n=[];let i,s,a;for(const o of t){const{x:t,y:l}=o;e(o),a?qo(n,i,s,t,l,a,o,e,r):n.push(o),i=t,s=l,a=o;}return n}const Go=Math.pow(2,14)-1,Zo=-Go-1;function Xo(t,e){const r=Math.round(t.x*e),n=Math.round(t.y*e);return t.x=Y(r,Zo,Go),t.y=Y(n,Zo,Go),(r<t.x||r>t.x+1||n<t.y||n>t.y+1)&&pt(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),t}function Ko(t,e,r){const n=t.loadGeometry(),i=t.extent,s=To/i;if(e&&r&&r.projection.isReprojectedInTileSpace){const s=1<<e.z,{scale:a,x:o,y:l,projection:u}=r,c=t=>{const r=Ro((e.x+t.x/i)/s),n=Uo((e.y+t.y/i)/s),c=u.project(r,n);t.x=(c.x*a-o)*i,t.y=(c.y*a-l)*i;};for(let e=0;e<n.length;e++)if(1!==t.type)n[e]=No(n[e],c,1);else {const t=[];for(const r of n[e])r.x<0||r.x>=i||r.y<0||r.y>=i||(c(r),t.push(r));n[e]=t;}}for(const t of n)for(const e of t)Xo(e,s);return n}function Yo(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?Ko(t):[]}}function Ho(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}class Jo{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new pa,this.indexArray=new ka,this.segments=new Mo,this.programConfigurations=new xo(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r,n){const i=this.layers[0],s=[];let a=null;\"circle\"===i.type&&(a=i.layout.get(\"circle-sort-key\"));for(const{feature:e,id:i,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Yo(e,t);if(!this.layers[0]._featureFilter.filter(new Gs(this.zoom),u,r))continue;const c=a?a.evaluate(u,{},r):void 0,h={id:i,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:Ko(e,r,n),patterns:{},sortKey:c};s.push(h);}a&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n,o=t[s].feature;this.addFeature(n,i,s,e.availableImages,r),e.featureIndex.insert(o,i,s,a,this.index);}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,zo),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n,i){for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=To||n<0||n>=To)continue;const i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),s=i.vertexLength;Ho(this.layoutVertexArray,r,n,-1,-1),Ho(this.layoutVertexArray,r,n,1,-1),Ho(this.layoutVertexArray,r,n,1,1),Ho(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(s,s+1,s+2),this.indexArray.emplaceBack(s,s+3,s+2),i.vertexLength+=4,i.primitiveLength+=2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n,i);}}function Wo(t,e){for(let r=0;r<t.length;r++)if(ol(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(ol(t,e[r]))return !0;return !!rl(t,e)}function Qo(t,e,r){return !!ol(t,e)||!!il(e,t,r)}function tl(t,e){if(1===t.length)return al(e,t[0]);for(let r=0;r<e.length;r++){const n=e[r];for(let e=0;e<n.length;e++)if(ol(t,n[e]))return !0}for(let r=0;r<t.length;r++)if(al(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(rl(t,e[r]))return !0;return !1}function el(t,e,r){if(t.length>1){if(rl(t,e))return !0;for(let n=0;n<e.length;n++)if(il(e[n],t,r))return !0}for(let n=0;n<t.length;n++)if(il(t[n],e,r))return !0;return !1}function rl(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)if(nl(n,i,e[t],e[t+1]))return !0}return !1}function nl(t,e,r,n){return dt(t,r,n)!==dt(e,r,n)&&dt(t,e,r)!==dt(t,e,n)}function il(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(let r=1;r<e.length;r++)if(sl(t,e[r-1],e[r])<n)return !0;return !1}function sl(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);const i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function al(t,e){let r,n,i,s=!1;for(let a=0;a<t.length;a++){r=t[a];for(let t=0,a=r.length-1;t<r.length;a=t++)n=r[t],i=r[a],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(s=!s);}return s}function ol(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const s=t[n],a=t[i];s.y>e.y!=a.y>e.y&&e.x<(a.x-s.x)*(e.y-s.y)/(a.y-s.y)+s.x&&(r=!r);}return r}function ll(t,e,r,n,s){for(const i of t)if(e<=i.x&&r<=i.y&&n>=i.x&&s>=i.y)return !0;const a=[new i(e,r),new i(e,s),new i(n,s),new i(n,r)];if(t.length>2)for(const e of a)if(ol(t,e))return !0;for(let e=0;e<t.length-1;e++)if(ul(t[e],t[e+1],a))return !0;return !1}function ul(t,e,r){const n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;const s=dt(t,e,r[0]);return s!==dt(t,e,r[1])||s!==dt(t,e,r[2])||s!==dt(t,e,r[3])}function cl(t,e,r){const n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function hl(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function pl(t,e,r,n,s){if(!e[0]&&!e[1])return t;const a=i.convert(e)._mult(s);\"viewport\"===r&&a._rotate(-n);const o=[];for(let e=0;e<t.length;e++)o.push(t[e].sub(a));return o}function dl(t,e,r,n){const s=i.convert(t)._mult(n);return \"viewport\"===e&&s._rotate(-r),s}Zi(\"CircleBucket\",Jo,{omit:[\"layers\"]});const fl=new sa({\"circle-sort-key\":new ea(ve.layout_circle[\"circle-sort-key\"])});var yl={paint:new sa({\"circle-radius\":new ea(ve.paint_circle[\"circle-radius\"]),\"circle-color\":new ea(ve.paint_circle[\"circle-color\"]),\"circle-blur\":new ea(ve.paint_circle[\"circle-blur\"]),\"circle-opacity\":new ea(ve.paint_circle[\"circle-opacity\"]),\"circle-translate\":new ta(ve.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new ta(ve.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new ta(ve.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new ta(ve.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new ea(ve.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new ea(ve.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new ea(ve.paint_circle[\"circle-stroke-opacity\"])}),layout:fl};class ml{constructor(t,e){this.points=t,this.planes=e;}static fromInvProjectionMatrix(t,e,r,n){const i=Math.pow(2,r),s=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((r=>{const s=F([],r,t),a=1/s[3]/e*i;return function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}(s,s,[a,a,n?1/s[3]:a,a])})),a=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{const e=z([],T([],E([],s[t[0]],s[t[1]]),E([],s[t[2]],s[t[1]]))),r=-M(e,s[t[1]]);return e.concat(r)}));return new ml(s,a)}}class gl{constructor(t,e){this.min=t,this.max=e,this.center=S([],w([],this.min,this.max),.5);}quadrant(t){const e=[t%2==0,t<2],r=x(this.min),n=x(this.max);for(let t=0;t<e.length;t++)r[t]=e[t]?this.min[t]:this.center[t],n[t]=e[t]?this.center[t]:this.max[t];return n[2]=this.max[2],new gl(r,n)}distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]}distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]}distanceZ(t){return Math.max(Math.min(this.max[2],t[2]),this.min[2])-t[2]}getCorners(){const t=this.min,e=this.max;return [[t[0],t[1],t[2]],[e[0],t[1],t[2]],[e[0],e[1],t[2]],[t[0],e[1],t[2]],[t[0],t[1],e[2]],[e[0],t[1],e[2]],[e[0],e[1],e[2]],[t[0],e[1],e[2]]]}intersects(t){const e=this.getCorners();let r=!0;for(let n=0;n<t.planes.length;n++){const i=t.planes[n];let s=0;for(let t=0;t<e.length;t++)s+=M(i,e[t])+i[3]>=0;if(0===s)return 0;s!==e.length&&(r=!1);}if(r)return 2;for(let e=0;e<3;e++){let r=Number.MAX_VALUE,n=-Number.MAX_VALUE;for(let i=0;i<t.points.length;i++){const s=t.points[i][e]-this.min[e];r=Math.min(r,s),n=Math.max(n,s);}if(n<0||r>this.max[e]-this.min[e])return 0}return 1}}function xl(t,e,r,n,i,s,a,o,l){if(s&&t.queryGeometry.isAboveHorizon)return !1;s&&(l*=t.pixelToTileUnitsFactor);for(const u of e)for(const e of u){const u=e.add(o),c=i&&r.elevation?r.elevation.exaggeration()*i.getElevationAt(u.x,u.y,!0):0,h=s?u:vl(u,c,n),p=s?t.tilespaceRays.map((t=>_l(t,c))):t.queryGeometry.screenGeometry,d=F([],[e.x,e.y,c,1],n);if(!a&&s?l*=d[3]/r.cameraToCenterDistance:a&&!s&&(l*=r.cameraToCenterDistance/d[3]),Qo(p,h,l))return !0}return !1}function vl(t,e,r){const n=F([],[t.x,t.y,e,1],r);return new i(n[0]/n[3],n[1]/n[3])}const bl=b(0,0,0),wl=b(0,0,1);function _l(t,e){const r=g();return bl[2]=e,t.intersectsPlane(bl,wl,r),new i(r[0],r[1])}class Al extends Jo{}function kl(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(\"mismatched image size\")}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function Sl(t,{width:e,height:r},n){if(e===t.width&&r===t.height)return;const i=kl({},{width:e,height:r},n);Il(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,r)},n),t.width=e,t.height=r,t.data=i.data;}function Il(t,e,r,n,i,s){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");const a=t.data,o=e.data;for(let l=0;l<i.height;l++){const u=((r.y+l)*t.width+r.x)*s,c=((n.y+l)*e.width+n.x)*s;for(let t=0;t<i.width*s;t++)o[c+t]=a[u+t];}return e}Zi(\"HeatmapBucket\",Al,{omit:[\"layers\"]});class zl{constructor(t,e){kl(this,t,1,e);}resize(t){Sl(this,t,1);}clone(){return new zl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Il(t,e,r,n,i,1);}}class Ml{constructor(t,e){kl(this,t,4,e);}resize(t){Sl(this,t,4);}replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;}clone(){return new Ml({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Il(t,e,r,n,i,4);}}Zi(\"AlphaImage\",zl),Zi(\"RGBAImage\",Ml);var Tl={paint:new sa({\"heatmap-radius\":new ea(ve.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new ea(ve.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new ta(ve.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new ia(ve.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new ta(ve.paint_heatmap[\"heatmap-opacity\"])})};function Bl(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new Ml({width:r,height:n}),s=(r,n,s)=>{e[t.evaluationKey]=s;const a=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*a.r/a.a),i.data[r+n+1]=Math.floor(255*a.g/a.a),i.data[r+n+2]=Math.floor(255*a.b/a.a),i.data[r+n+3]=Math.floor(255*a.a);};if(t.clips)for(let e=0,i=0;e<n;++e,i+=4*r)for(let n=0,a=0;n<r;n++,a+=4){const o=n/(r-1),{start:l,end:u}=t.clips[e];s(i,a,l*(1-o)+u*o);}else for(let t=0,e=0;t<r;t++,e+=4)s(0,e,t/(r-1));return i}var Cl={paint:new sa({\"hillshade-illumination-direction\":new ta(ve.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-anchor\":new ta(ve.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new ta(ve.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new ta(ve.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new ta(ve.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new ta(ve.paint_hillshade[\"hillshade-accent-color\"])})};const Pl=ca([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:El}=Pl;var Dl=Fl,Vl=Fl;function Fl(t,e,r){r=r||2;var n,i,s,a,o,l,u,c=e&&e.length,h=c?e[0]*r:t.length,p=Ll(t,0,h,r,!0),d=[];if(!p||p.next===p.prev)return d;if(c&&(p=function(t,e,r,n){var i,s,a,o=[];for(i=0,s=e.length;i<s;i++)(a=Ll(t,e[i]*n,i<s-1?e[i+1]*n:t.length,n,!1))===a.next&&(a.steiner=!0),o.push(Kl(a));for(o.sort(Nl),i=0;i<o.length;i++)r=Rl(r=Gl(o[i],r),r.next);return r}(t,e,p,r)),t.length>80*r){n=s=t[0],i=a=t[1];for(var f=r;f<h;f+=r)(o=t[f])<n&&(n=o),(l=t[f+1])<i&&(i=l),o>s&&(s=o),l>a&&(a=l);u=0!==(u=Math.max(s-n,a-i))?1/u:0;}return Ul(p,d,r,n,i,u),d}function Ll(t,e,r,n,i){var s,a;if(i===ou(t,e,r,n)>0)for(s=e;s<r;s+=n)a=iu(s,t[s],t[s+1],a);else for(s=r-n;s>=e;s-=n)a=iu(s,t[s],t[s+1],a);return a&&Wl(a,a.next)&&(su(a),a=a.next),a}function Rl(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!Wl(n,n.next)&&0!==Jl(n.prev,n,n.next))n=n.next;else {if(su(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function Ul(t,e,r,n,i,s,a){if(t){!a&&s&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Xl(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,s,a,o,l,u=1;do{for(r=t,t=null,s=null,a=0;r;){for(a++,n=r,o=0,e=0;e<u&&(o++,n=n.nextZ);e++);for(l=u;o>0||l>0&&n;)0!==o&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,o--):(i=n,n=n.nextZ,l--),s?s.nextZ=i:t=i,i.prevZ=s,s=i;r=n;}s.nextZ=null,u*=2;}while(a>1)}(i);}(t,n,i,s);for(var o,l,u=t;t.prev!==t.next;)if(o=t.prev,l=t.next,s?Ol(t,n,i,s):$l(t))e.push(o.i/r),e.push(t.i/r),e.push(l.i/r),su(t),t=l.next,u=l.next;else if((t=l)===u){a?1===a?Ul(t=jl(Rl(t),e,r),e,r,n,i,s,2):2===a&&ql(t,e,r,n,i,s):Ul(Rl(t),e,r,n,i,s,1);break}}}function $l(t){var e=t.prev,r=t,n=t.next;if(Jl(e,r,n)>=0)return !1;for(var i=t.next.next;i!==t.prev;){if(Yl(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Jl(i.prev,i,i.next)>=0)return !1;i=i.next;}return !0}function Ol(t,e,r,n){var i=t.prev,s=t,a=t.next;if(Jl(i,s,a)>=0)return !1;for(var o=i.x>s.x?i.x>a.x?i.x:a.x:s.x>a.x?s.x:a.x,l=i.y>s.y?i.y>a.y?i.y:a.y:s.y>a.y?s.y:a.y,u=Xl(i.x<s.x?i.x<a.x?i.x:a.x:s.x<a.x?s.x:a.x,i.y<s.y?i.y<a.y?i.y:a.y:s.y<a.y?s.y:a.y,e,r,n),c=Xl(o,l,e,r,n),h=t.prevZ,p=t.nextZ;h&&h.z>=u&&p&&p.z<=c;){if(h!==t.prev&&h!==t.next&&Yl(i.x,i.y,s.x,s.y,a.x,a.y,h.x,h.y)&&Jl(h.prev,h,h.next)>=0)return !1;if(h=h.prevZ,p!==t.prev&&p!==t.next&&Yl(i.x,i.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Jl(p.prev,p,p.next)>=0)return !1;p=p.nextZ;}for(;h&&h.z>=u;){if(h!==t.prev&&h!==t.next&&Yl(i.x,i.y,s.x,s.y,a.x,a.y,h.x,h.y)&&Jl(h.prev,h,h.next)>=0)return !1;h=h.prevZ;}for(;p&&p.z<=c;){if(p!==t.prev&&p!==t.next&&Yl(i.x,i.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Jl(p.prev,p,p.next)>=0)return !1;p=p.nextZ;}return !0}function jl(t,e,r){var n=t;do{var i=n.prev,s=n.next.next;!Wl(i,s)&&Ql(i,n,n.next,s)&&ru(i,s)&&ru(s,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(s.i/r),su(n),su(n.next),n=t=s),n=n.next;}while(n!==t);return Rl(n)}function ql(t,e,r,n,i,s){var a=t;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&Hl(a,o)){var l=nu(a,o);return a=Rl(a,a.next),l=Rl(l,l.next),Ul(a,e,r,n,i,s),void Ul(l,e,r,n,i,s)}o=o.next;}a=a.next;}while(a!==t)}function Nl(t,e){return t.x-e.x}function Gl(t,e){var r=function(t,e){var r,n=e,i=t.x,s=t.y,a=-1/0;do{if(s<=n.y&&s>=n.next.y&&n.next.y!==n.y){var o=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(o<=i&&o>a){if(a=o,o===i){if(s===n.y)return n;if(s===n.next.y)return n.next}r=n.x<n.next.x?n:n.next;}}n=n.next;}while(n!==e);if(!r)return null;if(i===a)return r;var l,u=r,c=r.x,h=r.y,p=1/0;n=r;do{i>=n.x&&n.x>=c&&i!==n.x&&Yl(s<h?i:a,s,c,h,s<h?a:i,s,n.x,n.y)&&(l=Math.abs(s-n.y)/(i-n.x),ru(n,t)&&(l<p||l===p&&(n.x>r.x||n.x===r.x&&Zl(r,n)))&&(r=n,p=l)),n=n.next;}while(n!==u);return r}(t,e);if(!r)return e;var n=nu(r,t),i=Rl(r,r.next);return Rl(n,n.next),e===r?i:e}function Zl(t,e){return Jl(t.prev,t,e.prev)<0&&Jl(e.next,t,t.next)<0}function Xl(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Kl(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function Yl(t,e,r,n,i,s,a,o){return (i-a)*(e-o)-(t-a)*(s-o)>=0&&(t-a)*(n-o)-(r-a)*(e-o)>=0&&(r-a)*(s-o)-(i-a)*(n-o)>=0}function Hl(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Ql(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(ru(t,e)&&ru(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,s=(t.y+e.y)/2;do{r.y>s!=r.next.y>s&&r.next.y!==r.y&&i<(r.next.x-r.x)*(s-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(Jl(t.prev,t,e.prev)||Jl(t,e.prev,e))||Wl(t,e)&&Jl(t.prev,t,t.next)>0&&Jl(e.prev,e,e.next)>0)}function Jl(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Wl(t,e){return t.x===e.x&&t.y===e.y}function Ql(t,e,r,n){var i=eu(Jl(t,e,r)),s=eu(Jl(t,e,n)),a=eu(Jl(r,n,t)),o=eu(Jl(r,n,e));return i!==s&&a!==o||!(0!==i||!tu(t,r,e))||!(0!==s||!tu(t,n,e))||!(0!==a||!tu(r,t,n))||!(0!==o||!tu(r,e,n))}function tu(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function eu(t){return t>0?1:t<0?-1:0}function ru(t,e){return Jl(t.prev,t,t.next)<0?Jl(t,e,t.next)>=0&&Jl(t,t.prev,e)>=0:Jl(t,e,t.prev)<0||Jl(t,t.next,e)<0}function nu(t,e){var r=new au(t.i,t.x,t.y),n=new au(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,s.next=n,n.prev=s,n}function iu(t,e,r,n){var i=new au(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function su(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function au(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function ou(t,e,r,n){for(var i=0,s=e,a=r-n;s<r;s+=n)i+=(t[a]-t[s])*(t[s+1]+t[a+1]),a=s;return i}function lu(t,e,r,n,i){uu(t,e,r||0,n||t.length-1,i||hu);}function uu(t,e,r,n,i){for(;n>r;){if(n-r>600){var s=n-r+1,a=e-r+1,o=Math.log(s),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(s-l)/s)*(a-s/2<0?-1:1);uu(t,e,Math.max(r,Math.floor(e-a*l/s+u)),Math.min(n,Math.floor(e+(s-a)*l/s+u)),i);}var c=t[e],h=r,p=n;for(cu(t,r,e),i(t[n],c)>0&&cu(t,r,n);h<p;){for(cu(t,h,p),h++,p--;i(t[h],c)<0;)h++;for(;i(t[p],c)>0;)p--;}0===i(t[r],c)?cu(t,r,p):cu(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1);}}function cu(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function hu(t,e){return t<e?-1:t>e?1:0}function pu(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,s;for(let e=0;e<r;e++){const r=ft(t[e]);0!==r&&(t[e].area=Math.abs(r),void 0===s&&(s=r<0),s===r<0?(i&&n.push(i),i=[t[e]]):i.push(t[e]));}if(i&&n.push(i),e>1)for(let t=0;t<n.length;t++)n[t].length<=e||(lu(n[t],e,1,n[t].length-1,du),n[t]=n[t].slice(0,e));return n}function du(t,e){return e.area-t.area}function fu(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of e){const e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);const s=e.constantOr(null);s&&(i=!0,n[s.to]=!0,n[s.from]=!0);}return i}function yu(t,e,r,n,i){const s=i.patternDependencies;for(const a of e){const e=a.paint.get(`${t}-pattern`).value;if(\"constant\"!==e.kind){let t=e.evaluate({zoom:n-1},r,{},i.availableImages),o=e.evaluate({zoom:n},r,{},i.availableImages),l=e.evaluate({zoom:n+1},r,{},i.availableImages);t=t&&t.name?t.name:t,o=o&&o.name?o.name:o,l=l&&l.name?l.name:l,s[t]=!0,s[o]=!0,s[l]=!0,r.patterns[a.id]={min:t,mid:o,max:l};}}return r}Fl.deviation=function(t,e,r,n){var i=e&&e.length,s=Math.abs(ou(t,0,i?e[0]*r:t.length,r));if(i)for(var a=0,o=e.length;a<o;a++)s-=Math.abs(ou(t,e[a]*r,a<o-1?e[a+1]*r:t.length,r));var l=0;for(a=0;a<n.length;a+=3){var u=n[a]*r,c=n[a+1]*r,h=n[a+2]*r;l+=Math.abs((t[u]-t[h])*(t[c+1]-t[u+1])-(t[u]-t[c])*(t[h+1]-t[u+1]));}return 0===s&&0===l?0:Math.abs((l-s)/s)},Fl.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var s=0;s<t[i].length;s++)for(var a=0;a<e;a++)r.vertices.push(t[i][s][a]);i>0&&r.holes.push(n+=t[i-1].length);}return r},Dl.default=Vl;class mu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new pa,this.indexArray=new ka,this.indexArray2=new Ca,this.programConfigurations=new xo(t.layers,t.zoom),this.segments=new Mo,this.segments2=new Mo,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r,n){this.hasPattern=fu(\"fill\",this.layers,e);const i=this.layers[0].layout.get(\"fill-sort-key\"),s=[];for(const{feature:a,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=Yo(a,t);if(!this.layers[0]._featureFilter.filter(new Gs(this.zoom),c,r))continue;const h=i?i.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:a.properties,type:a.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:Ko(a,r,n),patterns:{},sortKey:h};s.push(p);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n;if(this.hasPattern){const t=yu(\"fill\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,{},e.availableImages);e.featureIndex.insert(t[s].feature,i,s,a,this.index);}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}addFeatures(t,e,r,n){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,El),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i,s=[]){for(const t of pu(e,500)){let e=0;for(const r of t)e+=r.length;const r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],s=[];for(const e of t){if(0===e.length)continue;e!==t[0]&&s.push(i.length/2);const r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t<e.length;t++)this.layoutVertexArray.emplaceBack(e[t].x,e[t].y),this.indexArray2.emplaceBack(n+t-1,n+t),i.push(e[t].x),i.push(e[t].y);r.vertexLength+=e.length,r.primitiveLength+=e.length;}const a=Dl(i,s);for(let t=0;t<a.length;t+=3)this.indexArray.emplaceBack(n+a[t],n+a[t+1],n+a[t+2]);r.vertexLength+=e,r.primitiveLength+=a.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,s,n);}}Zi(\"FillBucket\",mu,{omit:[\"layers\",\"patternFeatures\"]});const gu=new sa({\"fill-sort-key\":new ea(ve.layout_fill[\"fill-sort-key\"])});var xu={paint:new sa({\"fill-antialias\":new ta(ve.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new ea(ve.paint_fill[\"fill-opacity\"]),\"fill-color\":new ea(ve.paint_fill[\"fill-color\"]),\"fill-outline-color\":new ea(ve.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new ta(ve.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new ta(ve.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new ra(ve.paint_fill[\"fill-pattern\"])}),layout:gu};const vu=ca([{name:\"a_pos_normal_ed\",components:4,type:\"Int16\"}]),bu=ca([{name:\"a_centroid_pos\",components:2,type:\"Uint16\"}]),{members:wu}=vu;var _u=Au;function Au(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(ku,this,e);}function ku(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function Su(t){for(var e,r,n=0,i=0,s=t.length,a=s-1;i<s;a=i++)n+=((r=t[a]).x-(e=t[i]).x)*(e.y+r.y);return n}Au.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],Au.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,s=0,a=0,o=0,l=[];t.pos<r;){if(s<=0){var u=t.readVarint();n=7&u,s=u>>3;}if(s--,1===n||2===n)a+=t.readSVarint(),o+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(a,o));else {if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&l.push(e),l},Au.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,s=0,a=1/0,o=-1/0,l=1/0,u=-1/0;t.pos<e;){if(n<=0){var c=t.readVarint();r=7&c,n=c>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<a&&(a=i),i>o&&(o=i),(s+=t.readSVarint())<l&&(l=s),s>u&&(u=s);else if(7!==r)throw new Error(\"unknown command \"+r)}return [a,l,o,u]},Au.prototype.toGeoJSON=function(t,e,r){var n,i,s=this.extent*Math.pow(2,r),a=this.extent*t,o=this.extent*e,l=this.loadGeometry(),u=Au.types[this.type];function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+a)/s-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+o)/s)*Math.PI/180))-90];}}switch(this.type){case 1:var h=[];for(n=0;n<l.length;n++)h[n]=l[n][0];c(l=h);break;case 2:for(n=0;n<l.length;n++)c(l[n]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],s=0;s<e;s++){var a=Su(t[s]);0!==a&&(void 0===n&&(n=a<0),n===a<0?(r&&i.push(r),r=[t[s]]):r.push(t[s]));}return r&&i.push(r),i}(l),n=0;n<l.length;n++)for(i=0;i<l[n].length;i++)c(l[n][i]);}1===l.length?l=l[0]:u=\"Multi\"+u;var p={type:\"Feature\",geometry:{type:u,coordinates:l},properties:this.properties};return \"id\"in this&&(p.id=this.id),p};var Iu=zu;function zu(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(Mu,this,e),this.length=this._features.length;}function Mu(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}function Tu(t,e,r){if(3===t){var n=new Iu(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}zu.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new _u(this._pbf,e,this.extent,this._keys,this._values)};var Bu={VectorTile:function(t,e){this.layers=t.readFields(Tu,{},e);},VectorTileFeature:_u,VectorTileLayer:Iu};const Cu=Bu.VectorTileFeature.types,Pu=Math.pow(2,13);function Eu(t,e,r,n,i,s,a,o){t.emplaceBack((e<<1)+a,(r<<1)+s,(Math.floor(n*Pu)<<1)+i,Math.round(o));}class Du{constructor(){this.acc=new i(0,0),this.polyCount=[];}startRing(t){this.currentPolyCount={edges:0,top:0},this.polyCount.push(this.currentPolyCount),this.min||(this.min=new i(t.x,t.y),this.max=new i(t.x,t.y));}append(t,e){this.currentPolyCount.edges++,this.acc._add(t);let r=!!this.borders;const n=this.min,i=this.max;t.x<n.x?(n.x=t.x,r=!0):t.x>i.x&&(i.x=t.x,r=!0),t.y<n.y?(n.y=t.y,r=!0):t.y>i.y&&(i.y=t.y,r=!0),((0===t.x||t.x===To)&&t.x===e.x)!=((0===t.y||t.y===To)&&t.y===e.y)&&this.processBorderOverlap(t,e),r&&this.checkBorderIntersection(t,e);}checkBorderIntersection(t,e){e.x<0!=t.x<0&&this.addBorderIntersection(0,Lr(e.y,t.y,(0-e.x)/(t.x-e.x))),e.x>To!=t.x>To&&this.addBorderIntersection(1,Lr(e.y,t.y,(To-e.x)/(t.x-e.x))),e.y<0!=t.y<0&&this.addBorderIntersection(2,Lr(e.x,t.x,(0-e.y)/(t.y-e.y))),e.y>To!=t.y>To&&this.addBorderIntersection(3,Lr(e.x,t.x,(To-e.y)/(t.y-e.y)));}addBorderIntersection(t,e){this.borders||(this.borders=[[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE]]);const r=this.borders[t];e<r[0]&&(r[0]=e),e>r[1]&&(r[1]=e);}processBorderOverlap(t,e){if(t.x===e.x){if(t.y===e.y)return;const r=0===t.x?0:1;this.addBorderIntersection(r,e.y),this.addBorderIntersection(r,t.y);}else {const r=0===t.y?2:3;this.addBorderIntersection(r,e.x),this.addBorderIntersection(r,t.x);}}centroid(){const t=this.polyCount.reduce(((t,e)=>t+e.edges),0);return 0!==t?this.acc.div(t)._round():new i(0,0)}span(){return new i(this.max.x-this.min.x,this.max.y-this.min.y)}intersectsCount(){return this.borders.reduce(((t,e)=>t+ +(e[0]!==Number.MAX_VALUE)),0)}}class Vu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new da,this.centroidVertexArray=new Za,this.indexArray=new ka,this.programConfigurations=new xo(t.layers,t.zoom),this.segments=new Mo,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.enableTerrain=t.enableTerrain;}populate(t,e,r,n){this.features=[],this.hasPattern=fu(\"fill-extrusion\",this.layers,e),this.featuresOnBorder=[],this.borders=[[],[],[],[]],this.borderDone=[!1,!1,!1,!1],this.tileToMeter=function(t){const e=Math.exp(Math.PI*(1-t.y/(1<<t.z)*2));return 80150034*e/(e*e+1)/To/(1<<t.z)}(r);for(const{feature:i,id:s,index:a,sourceLayerIndex:o}of t){const t=this.layers[0]._featureFilter.needGeometry,l=Yo(i,t);if(!this.layers[0]._featureFilter.filter(new Gs(this.zoom),l,r))continue;const u={id:s,sourceLayerIndex:o,index:a,geometry:t?l.geometry:Ko(i,r,n),properties:i.properties,type:i.type,patterns:{}},c=this.layoutVertexArray.length;this.hasPattern?this.features.push(yu(\"fill-extrusion\",this.layers,u,this.zoom,e)):this.addFeature(u,u.geometry,a,r,{},e.availableImages),e.featureIndex.insert(i,u.geometry,a,o,this.index,c);}this.sortBorders();}addFeatures(t,e,r,n){for(const t of this.features){const{geometry:i}=t;this.addFeature(t,i,t.index,e,r,n);}this.sortBorders();}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,wu),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}uploadCentroid(t){0!==this.centroidVertexArray.length&&(this.centroidVertexBuffer?this.needsCentroidUpdate&&this.centroidVertexBuffer.updateData(this.centroidVertexArray):this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,bu.members,!0),this.needsCentroidUpdate=!1);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.centroidVertexBuffer&&this.centroidVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n,i,s){const a=this.enableTerrain?new Du:null;for(const r of pu(e,500)){let e=0,n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);if(0===r.length||(o=r[0]).every((t=>t.x<=0))||o.every((t=>t.x>=To))||o.every((t=>t.y<=0))||o.every((t=>t.y>=To)))continue;for(let t=0;t<r.length;t++){const i=r[t];if(0===i.length)continue;e+=i.length;let s=0;a&&a.startRing(i[0]);for(let t=0;t<i.length;t++){const e=i[t];if(t>=1){const r=i[t-1];if(!Fu(e,r)){a&&a.append(e,r),n.vertexLength+4>Mo.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const t=e.sub(r)._perp(),i=t.x/(Math.abs(t.x)+Math.abs(t.y)),o=t.y>0?1:0,l=r.dist(e);s+l>32768&&(s=0),Eu(this.layoutVertexArray,e.x,e.y,i,o,0,0,s),Eu(this.layoutVertexArray,e.x,e.y,i,o,0,1,s),s+=l,Eu(this.layoutVertexArray,r.x,r.y,i,o,0,0,s),Eu(this.layoutVertexArray,r.x,r.y,i,o,0,1,s);const u=n.vertexLength;this.indexArray.emplaceBack(u,u+2,u+1),this.indexArray.emplaceBack(u+1,u+2,u+3),n.vertexLength+=4,n.primitiveLength+=2;}}}}if(n.vertexLength+e>Mo.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray)),\"Polygon\"!==Cu[t.type])continue;const i=[],s=[],l=n.vertexLength;for(let t=0;t<r.length;t++){const e=r[t];if(0!==e.length){e!==r[0]&&s.push(i.length/2);for(let t=0;t<e.length;t++){const r=e[t];Eu(this.layoutVertexArray,r.x,r.y,0,0,1,1,0),i.push(r.x),i.push(r.y),a&&a.currentPolyCount.top++;}}}const u=Dl(i,s);for(let t=0;t<u.length;t+=3)this.indexArray.emplaceBack(l+u[t],l+u[t+2],l+u[t+1]);n.primitiveLength+=u.length/3,n.vertexLength+=e;}var o;if(a&&a.polyCount.length>0){if(a.borders){a.vertexArrayOffset=this.centroidVertexArray.length;const t=a.borders,e=this.featuresOnBorder.push(a)-1;for(let r=0;r<4;r++)t[r][0]!==Number.MAX_VALUE&&this.borders[r].push(e);}this.encodeCentroid(a.borders?void 0:a.centroid(),a);}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,s,n);}sortBorders(){for(let t=0;t<4;t++)this.borders[t].sort(((e,r)=>this.featuresOnBorder[e].borders[t][0]-this.featuresOnBorder[r].borders[t][0]));}encodeCentroid(t,e,r=!0){let n,i;if(t)if(0!==t.y){const r=e.span()._mult(this.tileToMeter);n=(Math.max(t.x,1)<<3)+Math.min(7,Math.round(r.x/10)),i=(Math.max(t.y,1)<<3)+Math.min(7,Math.round(r.y/10));}else n=Math.ceil(7*(t.x+450)),i=0;else n=0,i=+r;let s=r?this.centroidVertexArray.length:e.vertexArrayOffset;for(const t of e.polyCount){r&&this.centroidVertexArray.resize(this.centroidVertexArray.length+4*t.edges+t.top);for(let e=0;e<2*t.edges;e++)this.centroidVertexArray.emplace(s++,0,i),this.centroidVertexArray.emplace(s++,n,i);for(let e=0;e<t.top;e++)this.centroidVertexArray.emplace(s++,n,i);}}}function Fu(t,e){return t.x===e.x&&(t.x<0||t.x>To)||t.y===e.y&&(t.y<0||t.y>To)}Zi(\"FillExtrusionBucket\",Vu,{omit:[\"layers\",\"features\"]}),Zi(\"PartMetadata\",Du);var Lu={paint:new sa({\"fill-extrusion-opacity\":new ta(ve[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new ea(ve[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new ta(ve[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new ta(ve[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new ra(ve[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new ea(ve[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new ea(ve[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new ta(ve[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})};function Ru(t,e){return t.x*e.x+t.y*e.y}function Uu(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;r<e.length;r++){const s=e[r],a=t[0],o=i.sub(n),l=s.sub(n),u=a.sub(n),c=Ru(o,o),h=Ru(o,l),p=Ru(l,l),d=Ru(u,o),f=Ru(u,l),y=c*p-h*h,m=(p*d-h*f)/y,g=(c*f-h*d)/y,x=n.z*(1-m-g)+i.z*m+s.z*g;if(isFinite(x))return x}return 1/0}{let t=1/0;for(const r of e)t=Math.min(t,r.z);return t}}function $u(t){const e=new i(t[0],t[1]);return e.z=t[2],e}function Ou(t,e,r,n,i,s,a,o){const l=a*i.getElevationAt(t,e,!0,!0),u=0!==s[0],c=u?0===s[1]?a*(s[0]/7-450):a*function(t,e,r){const n=Math.floor(e[0]/8),i=Math.floor(e[1]/8),s=10*(e[0]-8*n),a=10*(e[1]-8*i),o=t.getElevationAt(n,i,!0,!0),l=t.getMeterToDEM(r),u=Math.floor(.5*(s*l-1)),c=Math.floor(.5*(a*l-1)),h=t.tileCoordToPixel(n,i),p=2*u+1,d=2*c+1,f=function(t,e,r,n,i){return [t.getElevationAtPixel(e,r,!0),t.getElevationAtPixel(e+i,r,!0),t.getElevationAtPixel(e,r+i,!0),t.getElevationAtPixel(e+n,r+i,!0)]}(t,h.x-u,h.y-c,p,d),y=Math.abs(f[0]-f[1]),m=Math.abs(f[2]-f[3]),g=Math.abs(f[0]-f[2])+Math.abs(f[1]-f[3]),x=Math.min(.25,.5*l*(y+m)/p),v=Math.min(.25,.5*l*g/d);return o+Math.max(x*s,v*a)}(i,s,o):l;return {base:l+(0===r)?-1:r,top:u?Math.max(c+n,l+r+2):l+n}}const ju=ca([{name:\"a_pos_normal\",components:2,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"},{name:\"a_linesofar\",components:1,type:\"Float32\"}],4),{members:qu}=ju,Nu=ca([{name:\"a_packed\",components:3,type:\"Float32\"}]),{members:Gu}=Nu,Zu=Bu.VectorTileFeature.types,Xu=Math.cos(Math.PI/180*37.5);class Ku{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new fa,this.layoutVertexArray2=new ya,this.indexArray=new ka,this.programConfigurations=new xo(t.layers,t.zoom),this.segments=new Mo,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r,n){this.hasPattern=fu(\"line\",this.layers,e);const i=this.layers[0].layout.get(\"line-sort-key\"),s=[];for(const{feature:e,id:a,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Yo(e,t);if(!this.layers[0]._featureFilter.filter(new Gs(this.zoom),u,r))continue;const c=i?i.evaluate(u,{},r):void 0,h={id:a,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:Ko(e,r,n),patterns:{},sortKey:c};s.push(h);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));const{lineAtlas:a,featureIndex:o}=e,l=this.addConstantDashes(a);for(const n of s){const{geometry:i,index:s,sourceLayerIndex:u}=n;if(l&&this.addFeatureDashes(n,a),this.hasPattern){const t=yu(\"line\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,a.positions,e.availableImages);o.insert(t[s].feature,i,s,u,this.index);}}addConstantDashes(t){let e=!1;for(const r of this.layers){const n=r.paint.get(\"line-dasharray\").value,i=r.layout.get(\"line-cap\").value;if(\"constant\"!==n.kind||\"constant\"!==i.kind)e=!0;else {const e=i.value,r=n.value;if(!r)continue;t.addDash(r.from,e),t.addDash(r.to,e),r.other&&t.addDash(r.other,e);}}return e}addFeatureDashes(t,e){const r=this.zoom;for(const n of this.layers){const i=n.paint.get(\"line-dasharray\").value,s=n.layout.get(\"line-cap\").value;if(\"constant\"===i.kind&&\"constant\"===s.kind)continue;let a,o,l,u,c,h;if(\"constant\"===i.kind){const t=i.value;if(!t)continue;a=t.other||t.to,o=t.to,l=t.from;}else a=i.evaluate({zoom:r-1},t),o=i.evaluate({zoom:r},t),l=i.evaluate({zoom:r+1},t);\"constant\"===s.kind?u=c=h=s.value:(u=s.evaluate({zoom:r-1},t),c=s.evaluate({zoom:r},t),h=s.evaluate({zoom:r+1},t)),e.addDash(a,u),e.addDash(o,c),e.addDash(l,h);const p=e.getKey(a,u),d=e.getKey(o,c),f=e.getKey(l,h);t.patterns[n.id]={min:p,mid:d,max:f};}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}addFeatures(t,e,r,n){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,Gu)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,qu),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&t.properties.hasOwnProperty(\"mapbox_clip_start\")&&t.properties.hasOwnProperty(\"mapbox_clip_end\"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i,s){const a=this.layers[0].layout,o=a.get(\"line-join\").evaluate(t,{}),l=a.get(\"line-cap\").evaluate(t,{}),u=a.get(\"line-miter-limit\"),c=a.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,o,l,u,c);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,s,n);}addLine(t,e,r,n,i,s){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineSoFar=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e<t.length-1;e++)this.totalDistance+=t[e].dist(t[e+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}const a=\"Polygon\"===Zu[e.type];let o=t.length;for(;o>=2&&t[o-1].equals(t[o-2]);)o--;let l=0;for(;l<o-1&&t[l].equals(t[l+1]);)l++;if(o<(a?3:2))return;\"bevel\"===r&&(i=1.05);const u=this.overscaling<=16?122880/(512*this.overscaling):0,c=this.segments.prepareSegment(10*o,this.layoutVertexArray,this.indexArray);let h,p,d,f,y;this.e1=this.e2=-1,a&&(h=t[o-2],y=t[l].sub(h)._unit()._perp());for(let e=l;e<o;e++){if(d=e===o-1?a?t[l+1]:void 0:t[e+1],d&&t[e].equals(d))continue;y&&(f=y),h&&(p=h),h=t[e],y=d?d.sub(h)._unit()._perp():f,f=f||y;let m=f.add(y);0===m.x&&0===m.y||m._unit();const g=f.x*y.x+f.y*y.y,x=m.x*y.x+m.y*y.y,v=0!==x?1/x:1/0,b=2*Math.sqrt(2-2*x),w=x<Xu&&p&&d,_=f.x*y.y-f.y*y.x>0;if(w&&e>l){const t=h.dist(p);if(t>2*u){const e=h.sub(h.sub(p)._mult(u/t)._round());this.updateDistance(p,e),this.addCurrentVertex(e,f,0,0,c),p=e;}}const A=p&&d;let k=A?r:a?\"butt\":n;if(A&&\"round\"===k&&(v<s?k=\"miter\":v<=2&&(k=\"fakeround\")),\"miter\"===k&&v>i&&(k=\"bevel\"),\"bevel\"===k&&(v>2&&(k=\"flipbevel\"),v<i&&(k=\"miter\")),p&&this.updateDistance(p,h),\"miter\"===k)m._mult(v),this.addCurrentVertex(h,m,0,0,c);else if(\"flipbevel\"===k){if(v>100)m=y.mult(-1);else {const t=v*f.add(y).mag()/f.sub(y).mag();m._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(h,m,0,0,c),this.addCurrentVertex(h,m.mult(-1),0,0,c);}else if(\"bevel\"===k||\"fakeround\"===k){const t=-Math.sqrt(v*v-1),e=_?t:0,r=_?0:t;if(p&&this.addCurrentVertex(h,f,e,r,c),\"fakeround\"===k){const t=Math.round(180*b/Math.PI/20);for(let e=1;e<t;e++){let r=e/t;if(.5!==r){const t=r-.5;r+=r*t*(r-1)*((1.0904+g*(g*(3.55645-1.43519*g)-3.2452))*t*t+(.848013+g*(.215638*g-1.06021)));}const n=y.sub(f)._mult(r)._add(f)._unit()._mult(_?-1:1);this.addHalfVertex(h,n.x,n.y,!1,_,0,c);}}d&&this.addCurrentVertex(h,y,-e,-r,c);}else if(\"butt\"===k)this.addCurrentVertex(h,m,0,0,c);else if(\"square\"===k){const t=p?1:-1;p||this.addCurrentVertex(h,m,t,t,c),this.addCurrentVertex(h,m,0,0,c),p&&this.addCurrentVertex(h,m,t,t,c);}else \"round\"===k&&(p&&(this.addCurrentVertex(h,f,0,0,c),this.addCurrentVertex(h,f,1,1,c,!0)),d&&(this.addCurrentVertex(h,y,-1,-1,c,!0),this.addCurrentVertex(h,y,0,0,c)));if(w&&e<o-1){const t=h.dist(d);if(t>2*u){const e=h.add(d.sub(h)._mult(u/t)._round());this.updateDistance(h,e),this.addCurrentVertex(e,y,0,0,c),h=e;}}}}addCurrentVertex(t,e,r,n,i,s=!1){const a=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,s,!1,r,i),this.addHalfVertex(t,a,o,s,!0,-n,i);}addHalfVertex({x:t,y:e},r,n,i,s,a,o){this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(s?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===a?0:a<0?-1:1),0,this.lineSoFar),this.lineClips&&this.layoutVertexArray2.emplaceBack(this.scaledDistance,this.lineClipsArray.length,this.lineSoFar);const l=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,l),o.primitiveLength++),s?this.e2=l:this.e1=l;}updateScaledDistance(){if(this.lineClips){const t=this.totalDistance/(this.lineClips.end-this.lineClips.start);this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=t*this.lineClips.start+this.distance;}else this.lineSoFar=this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}}Zi(\"LineBucket\",Ku,{omit:[\"layers\",\"patternFeatures\"]});const Yu=new sa({\"line-cap\":new ea(ve.layout_line[\"line-cap\"]),\"line-join\":new ea(ve.layout_line[\"line-join\"]),\"line-miter-limit\":new ta(ve.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new ta(ve.layout_line[\"line-round-limit\"]),\"line-sort-key\":new ea(ve.layout_line[\"line-sort-key\"])});var Hu={paint:new sa({\"line-opacity\":new ea(ve.paint_line[\"line-opacity\"]),\"line-color\":new ea(ve.paint_line[\"line-color\"]),\"line-translate\":new ta(ve.paint_line[\"line-translate\"]),\"line-translate-anchor\":new ta(ve.paint_line[\"line-translate-anchor\"]),\"line-width\":new ea(ve.paint_line[\"line-width\"]),\"line-gap-width\":new ea(ve.paint_line[\"line-gap-width\"]),\"line-offset\":new ea(ve.paint_line[\"line-offset\"]),\"line-blur\":new ea(ve.paint_line[\"line-blur\"]),\"line-dasharray\":new ra(ve.paint_line[\"line-dasharray\"]),\"line-pattern\":new ra(ve.paint_line[\"line-pattern\"]),\"line-gradient\":new ia(ve.paint_line[\"line-gradient\"])}),layout:Yu};const Ju=new class extends ea{possiblyEvaluate(t,e){return e=new Gs(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=tt({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}(Hu.paint.properties[\"line-width\"].specification);function Wu(t,e){return e>0?e+2*t:t}Ju.useIntegerZoom=!0;const Qu=ca([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_tex_size\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"},{name:\"a_z_tile_anchor\",components:4,type:\"Int16\"}],4),tc=ca([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);ca([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);const ec=ca([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]),rc=ca([{name:\"a_size_scale\",components:1,type:\"Float32\"},{name:\"a_padding\",components:2,type:\"Float32\"}]);ca([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Int16\",name:\"tileAnchorX\"},{type:\"Int16\",name:\"tileAnchorY\"},{type:\"Float32\",name:\"x1\"},{type:\"Float32\",name:\"y1\"},{type:\"Float32\",name:\"x2\"},{type:\"Float32\",name:\"y2\"},{type:\"Int16\",name:\"padding\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);const nc=ca([{name:\"a_pos\",components:3,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),ic=ca([{name:\"a_pos_2f\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);ca([{name:\"triangle\",components:3,type:\"Uint16\"}]),ca([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Float32\",name:\"tileAnchorX\"},{type:\"Float32\",name:\"tileAnchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"},{type:\"Uint8\",name:\"flipState\"}]),ca([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Float32\",name:\"tileAnchorX\"},{type:\"Float32\",name:\"tileAnchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),ca([{type:\"Float32\",name:\"offsetX\"}]),ca([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);var sc=24;const ac=128;function oc(t,e){const{expression:r}=e;if(\"constant\"===r.kind)return {kind:\"constant\",layoutSize:r.evaluate(new Gs(t+1))};if(\"source\"===r.kind)return {kind:\"source\"};{const{zoomStops:e,interpolationType:n}=r;let i=0;for(;i<e.length&&e[i]<=t;)i++;i=Math.max(0,i-1);let s=i;for(;s<e.length&&e[s]<t+1;)s++;s=Math.min(e.length-1,s);const a=e[i],o=e[s];return \"composite\"===r.kind?{kind:\"composite\",minZoom:a,maxZoom:o,interpolationType:n}:{kind:\"camera\",minZoom:a,maxZoom:o,minSize:r.evaluate(new Gs(a)),maxSize:r.evaluate(new Gs(o)),interpolationType:n}}}function lc(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return \"source\"===t.kind?n/ac:\"composite\"===t.kind?Lr(n/ac,i/ac,r):e}function uc(t,e){let r=0,n=0;if(\"constant\"===t.kind)n=t.layoutSize;else if(\"source\"!==t.kind){const{interpolationType:i,minZoom:s,maxZoom:a}=t,o=i?Y(rn.interpolationFactor(i,e,s,a),0,1):0;\"camera\"===t.kind?n=Lr(t.minSize,t.maxSize,o):r=o;}return {uSizeT:r,uSize:n}}var cc=Object.freeze({__proto__:null,getSizeData:oc,evaluateSizeForFeature:lc,evaluateSizeForZoom:uc,SIZE_PACK_FACTOR:ac});function hc(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),Ns.applyArabicShaping&&(t=Ns.applyArabicShaping(t)),t}(t.text,e,r);})),t}const pc={\"!\":\"︕\",\"#\":\"＃\",$:\"＄\",\"%\":\"％\",\"&\":\"＆\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"＊\",\"+\":\"＋\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"／\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"＝\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"＠\",\"[\":\"﹇\",\"\\\\\":\"＼\",\"]\":\"﹈\",\"^\":\"＾\",_:\"︳\",\"`\":\"｀\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"～\",\"¢\":\"￠\",\"£\":\"￡\",\"¥\":\"￥\",\"¦\":\"￤\",\"¬\":\"￢\",\"¯\":\"￣\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"￦\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"！\":\"︕\",\"（\":\"︵\",\"）\":\"︶\",\"，\":\"︐\",\"－\":\"︲\",\"．\":\"・\",\"：\":\"︓\",\"；\":\"︔\",\"＜\":\"︿\",\"＞\":\"﹀\",\"？\":\"︖\",\"［\":\"﹇\",\"］\":\"﹈\",\"＿\":\"︳\",\"｛\":\"︷\",\"｜\":\"―\",\"｝\":\"︸\",\"｟\":\"︵\",\"｠\":\"︶\",\"｡\":\"︒\",\"｢\":\"﹁\",\"｣\":\"﹂\"};function dc(t){return \"︶\"===t||\"﹈\"===t||\"︸\"===t||\"﹄\"===t||\"﹂\"===t||\"︾\"===t||\"︼\"===t||\"︺\"===t||\"︘\"===t||\"﹀\"===t||\"︐\"===t||\"︓\"===t||\"︔\"===t||\"｀\"===t||\"￣\"===t||\"︑\"===t||\"︒\"===t}function fc(t){return \"︵\"===t||\"﹇\"===t||\"︷\"===t||\"﹃\"===t||\"﹁\"===t||\"︽\"===t||\"︻\"===t||\"︹\"===t||\"︗\"===t||\"︿\"===t}var yc=function(t,e,r,n,i){var s,a,o=8*i-n-1,l=(1<<o)-1,u=l>>1,c=-7,h=r?i-1:0,p=r?-1:1,d=t[e+h];for(h+=p,s=d&(1<<-c)-1,d>>=-c,c+=o;c>0;s=256*s+t[e+h],h+=p,c-=8);for(a=s&(1<<-c)-1,s>>=-c,c+=n;c>0;a=256*a+t[e+h],h+=p,c-=8);if(0===s)s=1-u;else {if(s===l)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),s-=u;}return (d?-1:1)*a*Math.pow(2,s-n)},mc=function(t,e,r,n,i,s){var a,o,l,u=8*s-i-1,c=(1<<u)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:s-1,f=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=c?(o=0,a=c):a+h>=1?(o=(e*l-1)*Math.pow(2,i),a+=h):(o=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;t[r+d]=255&o,d+=f,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;t[r+d]=255&a,d+=f,a/=256,u-=8);t[r+d-f]|=128*y;},gc=xc;function xc(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}xc.Varint=0,xc.Fixed64=1,xc.Bytes=2,xc.Fixed32=5;var vc=4294967296,bc=1/vc,wc=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function _c(t){return t.type===xc.Bytes?t.readVarint()+t.pos:t.pos+1}function Ac(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function kc(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function Sc(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function Ic(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function zc(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function Mc(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function Tc(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function Bc(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function Cc(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Pc(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r]);}function Ec(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function Dc(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function Vc(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function Fc(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function Lc(t,e,r){e.glyphs=[],1===t&&r.readMessage(Rc,e);}function Rc(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:s,left:a,top:o,advance:l}=r.readMessage(Uc,{});e.glyphs.push({id:t,bitmap:new zl({width:i+6,height:s+6},n),metrics:{width:i,height:s,left:a,top:o,advance:l}});}else 4===t?e.ascender=r.readSVarint():5===t&&(e.descender=r.readSVarint());}function Uc(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}function $c(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,s=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,s=Math.max(s,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();t<n.length&&(n[t]=e);}else e.h===r.h?(r.x+=e.w,r.w-=e.w):e.w===r.w?(r.y+=e.h,r.h-=e.h):(n.push({x:r.x+e.w,y:r.y,w:r.w-e.w,h:e.h}),r.y+=e.h,r.h-=e.h);break}}return {w:i,h:s,fill:e/(i*s)||0}}xc.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,s=this.pos;this.type=7&n,t(i,e,this),this.pos===s&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Dc(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Fc(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Dc(this.buf,this.pos)+Dc(this.buf,this.pos+4)*vc;return this.pos+=8,t},readSFixed64:function(){var t=Dc(this.buf,this.pos)+Fc(this.buf,this.pos+4)*vc;return this.pos+=8,t},readFloat:function(){var t=yc(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=yc(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,s=r.buf;if(n=(112&(i=s[r.pos++]))>>4,i<128)return Ac(t,n,e);if(n|=(127&(i=s[r.pos++]))<<3,i<128)return Ac(t,n,e);if(n|=(127&(i=s[r.pos++]))<<10,i<128)return Ac(t,n,e);if(n|=(127&(i=s[r.pos++]))<<17,i<128)return Ac(t,n,e);if(n|=(127&(i=s[r.pos++]))<<24,i<128)return Ac(t,n,e);if(n|=(1&(i=s[r.pos++]))<<31,i<128)return Ac(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&wc?function(t,e,r){return wc.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n=\"\",i=e;i<r;){var s,a,o,l=t[i],u=null,c=l>239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(s=t[i+1]))&&(u=(31&l)<<6|63&s)<=127&&(u=null):3===c?(a=t[i+2],128==(192&(s=t[i+1]))&&128==(192&a)&&((u=(15&l)<<12|(63&s)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(a=t[i+2],o=t[i+3],128==(192&(s=t[i+1]))&&128==(192&a)&&128==(192&o)&&((u=(15&l)<<18|(63&s)<<12|(63&a)<<6|63&o)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==xc.Bytes)return t.push(this.readVarint(e));var r=_c(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==xc.Bytes)return t.push(this.readSVarint());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==xc.Bytes)return t.push(this.readBoolean());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==xc.Bytes)return t.push(this.readFloat());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==xc.Bytes)return t.push(this.readDouble());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==xc.Bytes)return t.push(this.readFixed32());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==xc.Bytes)return t.push(this.readSFixed32());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==xc.Bytes)return t.push(this.readFixed64());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==xc.Bytes)return t.push(this.readSFixed64());var e=_c(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===xc.Varint)for(;this.buf[this.pos++]>127;);else if(e===xc.Bytes)this.pos=this.readVarint()+this.pos;else if(e===xc.Fixed32)this.pos+=4;else {if(e!==xc.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),Vc(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),Vc(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),Vc(this.buf,-1&t,this.pos),Vc(this.buf,Math.floor(t*bc),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),Vc(this.buf,-1&t,this.pos),Vc(this.buf,Math.floor(t*bc),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,s=0;s<e.length;s++){if((n=e.charCodeAt(s))>55295&&n<57344){if(!i){n>56319||s+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&kc(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),mc(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),mc(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&kc(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,xc.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Sc,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Ic,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Tc,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,zc,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Mc,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Bc,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Cc,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Pc,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Ec,e);},writeBytesField:function(t,e){this.writeTag(t,xc.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,xc.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,xc.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,xc.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,xc.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,xc.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,xc.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,xc.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,xc.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,xc.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};class Oc{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:s}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=s,this.version=r;}get tl(){return [this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return [this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get displaySize(){return [(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class jc{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:s,h:a}=$c(i),o=new Ml({width:s||1,height:a||1});for(const e in t){const n=t[e],i=r[e].paddedRect;Ml.copy(n.data,o,{x:0,y:0},{x:i.x+1,y:i.y+1},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,s=i.x+1,a=i.y+1,l=r.data.width,u=r.data.height;Ml.copy(r.data,o,{x:0,y:0},{x:s,y:a},r.data),Ml.copy(r.data,o,{x:0,y:u-1},{x:s,y:a-1},{width:l,height:1}),Ml.copy(r.data,o,{x:0,y:0},{x:s,y:a+u},{width:l,height:1}),Ml.copy(r.data,o,{x:l-1,y:0},{x:s-1,y:a},{width:1,height:u}),Ml.copy(r.data,o,{x:0,y:0},{x:s+l,y:a},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],s={x:0,y:0,w:i.data.width+2,h:i.data.height+2};r.push(s),e[n]=new Oc(s,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}Zi(\"ImagePosition\",Oc),Zi(\"ImageAtlas\",jc);const qc={horizontal:1,vertical:2,horizontalOnly:3};class Nc{constructor(){this.scale=1,this.fontStack=\"\",this.imageName=null;}static forText(t,e){const r=new Nc;return r.scale=t||1,r.fontStack=e,r}static forImage(t){const e=new Nc;return e.imageName=t,e}}class Gc{constructor(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new Gc;for(let n=0;n<t.sections.length;n++){const i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r}length(){return this.text.length}getSection(t){return this.sections[this.sectionIndex[t]]}getSections(){return this.sections}getSectionIndex(t){return this.sectionIndex[t]}getCharCode(t){return this.text.charCodeAt(t)}verticalizePunctuation(t){this.text=function(t,e){let r=\"\";for(let n=0;n<t.length;n++){const i=t.charCodeAt(n+1)||null,s=t.charCodeAt(n-1)||null;r+=!e&&(i&&Ts(i)&&!pc[t[n+1]]||s&&Ts(s)&&!pc[t[n-1]])||!pc[t[n]]?t[n]:pc[t[n]];}return r}(this.text,t);}trim(){let t=0;for(let e=0;e<this.text.length&&Xc[this.text.charCodeAt(e)];e++)t++;let e=this.text.length;for(let r=this.text.length-1;r>=0&&r>=t&&Xc[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new Gc;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(Nc.forText(t.scale,t.fontStack||e));const r=this.sections.length-1;for(let e=0;e<t.text.length;++e)this.sectionIndex.push(r);}addImageSection(t){const e=t.image?t.image.name:\"\";if(0===e.length)return void pt(\"Can't add FormattedSection with an empty image.\");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(Nc.forImage(e)),this.sectionIndex.push(this.sections.length-1)):pt(\"Reached maximum number of images 6401\");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Zc(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y){const m=Gc.fromFeature(t,i);let g;h===qc.vertical&&m.verticalizePunctuation(p);const{processBidirectionalText:x,processStyledBidirectionalText:v}=Ns;if(x&&1===m.sections.length){g=[];const t=x(m.toString(),th(m,u,s,e,n,d,f));for(const e of t){const t=new Gc;t.text=e,t.sections=m.sections;for(let r=0;r<e.length;r++)t.sectionIndex.push(0);g.push(t);}}else if(v){g=[];const t=v(m.text,m.sectionIndex,th(m,u,s,e,n,d,f));for(const e of t){const t=new Gc;t.text=e[0],t.sectionIndex=e[1],t.sections=m.sections,g.push(t);}}else g=function(t,e){const r=[],n=t.text;let i=0;for(const n of e)r.push(t.substring(i,n)),i=n;return i<n.length&&r.push(t.substring(i,n.length)),r}(m,th(m,u,s,e,n,d,f));const b=[],w={positionedLines:b,text:m.toString(),top:c[1],bottom:c[1],left:c[0],right:c[0],writingMode:h,iconsInText:!1,verticalizable:!1,hasBaseline:!1};return function(t,e,r,n,i,s,a,o,l,u,c,h){let p=0,d=0,f=0;const y=\"right\"===o?1:\"left\"===o?0:.5;let m=!1;for(const t of i){const r=t.getSections();for(const t of r){if(t.imageName)continue;const r=e[t.fontStack];if(r&&(m=void 0!==r.ascender&&void 0!==r.descender,!m))break}if(!m)break}let g=0;for(const a of i){a.trim();const i=a.getMaxScale(),o=(i-1)*sc,v={positionedGlyphs:[],lineOffset:0};t.positionedLines[g]=v;const b=v.positionedGlyphs;let w=0;if(!a.length()){d+=s,++g;continue}let _=0,A=0;for(let s=0;s<a.length();s++){const o=a.getSection(s),f=a.getSectionIndex(s),y=a.getCharCode(s);let g=o.scale,v=null,k=null,S=null,I=sc,z=0;const M=!(l===qc.horizontal||!c&&!Ms(y)||c&&(Xc[y]||(x=y,Wi(x)||Qi(x)||ts(x)||vs(x)||As(x))));if(o.imageName){const e=n[o.imageName];if(!e)continue;S=o.imageName,t.iconsInText=t.iconsInText||!0,k=e.paddedRect;const r=e.displaySize;g=g*sc/h,v={width:r[0],height:r[1],left:1,top:-3,advance:M?r[1]:r[0],localGlyph:!1},z=m?-v.height*g:i*sc-17-r[1]*g,I=v.advance;const s=(M?r[0]:r[1])*g-sc*i;s>0&&s>w&&(w=s);}else {const t=r[o.fontStack];if(!t)continue;t[y]&&(k=t[y]);const n=e[o.fontStack];if(!n)continue;const s=n.glyphs[y];if(!s)continue;if(v=s.metrics,I=8203!==y?sc:0,m){const t=void 0!==n.ascender?Math.abs(n.ascender):0,e=void 0!==n.descender?Math.abs(n.descender):0,r=(t+e)*g;_<r&&(_=r,A=(t-e)/2*g),z=-t*g;}else z=(i-g)*sc-17;}M?(t.verticalizable=!0,b.push({glyph:y,imageName:S,x:p,y:d+z,vertical:M,scale:g,localGlyph:v.localGlyph,fontStack:o.fontStack,sectionIndex:f,metrics:v,rect:k}),p+=I*g+u):(b.push({glyph:y,imageName:S,x:p,y:d+z,vertical:M,scale:g,localGlyph:v.localGlyph,fontStack:o.fontStack,sectionIndex:f,metrics:v,rect:k}),p+=v.advance*g+u);}0!==b.length&&(f=Math.max(p-u,f),m?rh(b,y,w,A,s*i/2):rh(b,y,w,0,s/2)),p=0;const k=s*i+w;v.lineOffset=Math.max(w,o),d+=k,++g;}var x;const v=d,{horizontalAlign:b,verticalAlign:w}=eh(a);(function(t,e,r,n,i,s){const a=(e-r)*i,o=-s*n;for(const e of t)for(const t of e.positionedGlyphs)t.x+=a,t.y+=o;})(t.positionedLines,y,b,w,f,v),t.top+=-w*v,t.bottom=t.top+v,t.left+=-b*f,t.right=t.left+f,t.hasBaseline=m;}(w,e,r,n,g,a,o,l,h,u,p,y),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(b)&&w}const Xc={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Kc={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function Yc(t,e,r,n,i,s){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*sc/s+i:0}{const n=r[e.fontStack],s=n&&n.glyphs[t];return s?s.metrics.advance*e.scale+i:0}}function Hc(t,e,r,n){const i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function Jc(t,e,r){let n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function Wc(t,e,r,n,i,s){let a=null,o=Hc(e,r,i,s);for(const t of n){const n=Hc(e-t.x,r,i,s)+t.badness;n<=o&&(a=t,o=n);}return {index:t,x:e,priorBreak:a,badness:o}}function Qc(t){return t?Qc(t.priorBreak).concat(t.index):[]}function th(t,e,r,n,i,s,a){if(\"point\"!==s)return [];if(!t)return [];const o=[],l=function(t,e,r,n,i,s){let a=0;for(let r=0;r<t.length();r++){const o=t.getSection(r);a+=Yc(t.getCharCode(r),o,n,i,e,s);}return a/Math.max(1,Math.ceil(a/r))}(t,e,r,n,i,a),u=t.text.indexOf(\"​\")>=0;let c=0;for(let r=0;r<t.length();r++){const s=t.getSection(r),p=t.getCharCode(r);if(Xc[p]||(c+=Yc(p,s,n,i,e,a)),r<t.length()-1){const e=!((h=p)<11904||!(ls(h)||os(h)||ws(h)||xs(h)||ps(h)||es(h)||us(h)||is(h)||ds(h)||fs(h)||hs(h)||ks(h)||ss(h)||ns(h)||rs(h)||cs(h)||as(h)||bs(h)||ms(h)||ys(h)));(Kc[p]||e||s.imageName)&&o.push(Wc(r+1,c,l,o,Jc(p,t.getCharCode(r+1),e&&u),!1));}}var h;return Qc(Wc(t.length(),c,l,o,0,!0))}function eh(t){let e=.5,r=.5;switch(t){case\"right\":case\"top-right\":case\"bottom-right\":e=1;break;case\"left\":case\"top-left\":case\"bottom-left\":e=0;}switch(t){case\"bottom\":case\"bottom-right\":case\"bottom-left\":r=1;break;case\"top\":case\"top-right\":case\"top-left\":r=0;}return {horizontalAlign:e,verticalAlign:r}}function rh(t,e,r,n,i){if(!(e||r||n||i))return;const s=t.length-1,a=t[s],o=(a.x+a.metrics.advance*a.scale)*e;for(let e=0;e<=s;e++)t[e].x-=o,t[e].y+=r+n+i;}function nh(t,e,r){const{horizontalAlign:n,verticalAlign:i}=eh(r),s=e[0]-t.displaySize[0]*n,a=e[1]-t.displaySize[1]*i;return {image:t,top:a,bottom:a+t.displaySize[1],left:s,right:s+t.displaySize[0]}}function ih(t,e,r,n,i,s){const a=t.image;let o;if(a.content){const t=a.content,e=a.pixelRatio||1;o=[t[0]/e,t[1]/e,a.displaySize[0]-t[2]/e,a.displaySize[1]-t[3]/e];}const l=e.left*s,u=e.right*s;let c,h,p,d;\"width\"===r||\"both\"===r?(d=i[0]+l-n[3],h=i[0]+u+n[1]):(d=i[0]+(l+u-a.displaySize[0])/2,h=d+a.displaySize[0]);const f=e.top*s,y=e.bottom*s;return \"height\"===r||\"both\"===r?(c=i[1]+f-n[0],p=i[1]+y+n[2]):(c=i[1]+(f+y-a.displaySize[1])/2,p=c+a.displaySize[1]),{image:a,top:c,right:h,bottom:p,left:d,collisionPadding:o}}class sh extends i{constructor(t,e,r,n,i){super(t,e),this.angle=n,this.z=r,void 0!==i&&(this.segment=i);}clone(){return new sh(this.x,this.y,this.z,this.angle,this.segment)}}function ah(t,e,r,n,i){if(void 0===e.segment)return !0;let s=e,a=e.segment+1,o=0;for(;o>-r/2;){if(a--,a<0)return !1;o-=t[a].dist(s),s=t[a];}o+=t[a].dist(t[a+1]),a++;const l=[];let u=0;for(;o<r/2;){const e=t[a],r=t[a+1];if(!r)return !1;let s=t[a-1].angleTo(e)-e.angleTo(r);for(s=Math.abs((s+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:o,angleDelta:s}),u+=s;o-l[0].distance>n;)u-=l.shift().angleDelta;if(u>i)return !1;a++,o+=e.dist(r);}return !0}function oh(t){let e=0;for(let r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function lh(t,e,r){return t?.6*e*r:0}function uh(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function ch(t,e,r,n,i,s){const a=lh(r,i,s),o=uh(r,n)*s;let l=0;const u=oh(t)/2;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1],s=n.dist(i);if(l+s>u){const c=(u-l)/s,h=Lr(n.x,i.x,c),p=Lr(n.y,i.y,c),d=new sh(h,p,0,i.angleTo(n),r);return !a||ah(t,d,o,a,e)?d:void 0}l+=s;}}function hh(t,e,r,n,i,s,a,o,l){const u=lh(n,s,a),c=uh(n,i),h=c*a,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h<e/4&&(e=h+e/4),ph(t,p?e/2*o%e:(c/2+2*s)*a*o%e,e,u,r,h,p,!1,l)}function ph(t,e,r,n,i,s,a,o,l){const u=s/2,c=oh(t);let h=0,p=e-r,d=[];for(let e=0;e<t.length-1;e++){const a=t[e],o=t[e+1],f=a.dist(o),y=o.angleTo(a);for(;p+r<h+f;){p+=r;const m=(p-h)/f,g=Lr(a.x,o.x,m),x=Lr(a.y,o.y,m);if(g>=0&&g<l&&x>=0&&x<l&&p-u>=0&&p+u<=c){const r=new sh(g,x,0,y,e);r._round(),n&&!ah(t,r,s,n,i)||d.push(r);}}h+=f;}return o||d.length||a||(d=ph(t,h/2,r,n,i,s,a,!0,l)),d}function dh(t,e,r,n,s){const a=[];for(let o=0;o<t.length;o++){const l=t[o];let u;for(let t=0;t<l.length-1;t++){let o=l[t],c=l[t+1];o.x<e&&c.x<e||(o.x<e?o=new i(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x<e&&(c=new i(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y<r&&c.y<r||(o.y<r?o=new i(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round():c.y<r&&(c=new i(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round()),o.x>=n&&c.x>=n||(o.x>=n?o=new i(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x>=n&&(c=new i(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y>=s&&c.y>=s||(o.y>=s?o=new i(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round():c.y>=s&&(c=new i(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round()),u&&o.equals(u[u.length-1])||(u=[o],a.push(u)),u.push(c)))));}}return a}Zi(\"Anchor\",sh);const fh=1e20;function yh(t,e,r,n,i,s,a,o,l){for(let u=e;u<e+n;u++)mh(t,r*s+u,s,i,a,o,l);for(let u=r;u<r+i;u++)mh(t,u*s+e,1,n,a,o,l);}function mh(t,e,r,n,i,s,a){s[0]=0,a[0]=-fh,a[1]=fh,i[0]=t[e];for(let o=1,l=0,u=0;o<n;o++){i[o]=t[e+o*r];const n=o*o;do{const t=s[l];u=(i[o]-i[t]+n-t*t)/(o-t)/2;}while(u<=a[l]&&--l>-1);l++,s[l]=o,a[l]=u,a[l+1]=fh;}for(let o=0,l=0;o<n;o++){for(;a[l+1]<o;)l++;const n=s[l],u=o-n;t[e+o*r]=i[n]+u*u;}}const gh={none:0,ideographs:1,all:2};class xh{constructor(t,e,r){this.requestManager=t,this.localGlyphMode=e,this.localFontFamily=r,this.entries={},this.localGlyphs={200:{},400:{},500:{},900:{}};}setURL(t){this.url=t;}getGlyphs(t,e){const r=[];for(const e in t)for(const n of t[e])r.push({stack:e,id:n});W(r,(({stack:t,id:e},r)=>{let n=this.entries[t];n||(n=this.entries[t]={glyphs:{},requests:{},ranges:{},ascender:void 0,descender:void 0});let i=n.glyphs[e];if(void 0!==i)return void r(null,{stack:t,id:e,glyph:i});if(i=this._tinySDF(n,t,e),i)return n.glyphs[e]=i,void r(null,{stack:t,id:e,glyph:i});const s=Math.floor(e/256);if(256*s>65535)return void r(new Error(\"glyphs > 65535 not supported\"));if(n.ranges[s])return void r(null,{stack:t,id:e,glyph:i});let a=n.requests[s];a||(a=n.requests[s]=[],xh.loadGlyphRange(t,s,this.url,this.requestManager,((t,e)=>{if(e){n.ascender=e.ascender,n.descender=e.descender;for(const t in e.glyphs)this._doesCharSupportLocalGlyph(+t)||(n.glyphs[+t]=e.glyphs[+t]);n.ranges[s]=!0;}for(const r of a)r(t,e);delete n.requests[s];}))),a.push(((n,i)=>{n?r(n):i&&r(null,{stack:t,id:e,glyph:i.glyphs[e]||null});}));}),((t,r)=>{if(t)e(t);else if(r){const t={};for(const{stack:e,id:n,glyph:i}of r)void 0===t[e]&&(t[e]={}),void 0===t[e].glyphs&&(t[e].glyphs={}),t[e].glyphs[n]=i&&{id:i.id,bitmap:i.bitmap.clone(),metrics:i.metrics},t[e].ascender=this.entries[e].ascender,t[e].descender=this.entries[e].descender;e(null,t);}}));}_doesCharSupportLocalGlyph(t){return this.localGlyphMode!==gh.none&&(this.localGlyphMode===gh.all?!!this.localFontFamily:!!this.localFontFamily&&(fs(t)||gs(t)||ss(t)||as(t))||is(t))}_tinySDF(t,e,r){const n=this.localFontFamily;if(!n||!this._doesCharSupportLocalGlyph(r))return;let i=t.tinySDF;if(!i){let r=\"400\";/bold/i.test(e)?r=\"900\":/medium/i.test(e)?r=\"500\":/light/i.test(e)&&(r=\"200\"),i=t.tinySDF=new xh.TinySDF({fontFamily:n,fontWeight:r,fontSize:48,buffer:6,radius:16}),i.fontWeight=r;}if(this.localGlyphs[i.fontWeight][r])return this.localGlyphs[i.fontWeight][r];const s=String.fromCharCode(r),{data:a,width:o,height:l,glyphWidth:u,glyphHeight:c,glyphLeft:h,glyphTop:p,glyphAdvance:d}=i.draw(s);return this.localGlyphs[i.fontWeight][r]={id:r,bitmap:new zl({width:o,height:l},a),metrics:{width:u/2,height:c/2,left:h/2,top:p/2-27,advance:d/2,localGlyph:!0}}}}function vh(t,e,r,n){const s=[],a=t.image,o=a.pixelRatio,l=a.paddedRect.w-2,u=a.paddedRect.h-2,c=t.right-t.left,h=t.bottom-t.top,p=a.stretchX||[[0,l]],d=a.stretchY||[[0,u]],f=(t,e)=>t+e[1]-e[0],y=p.reduce(f,0),m=d.reduce(f,0),g=l-y,x=u-m;let v=0,b=y,w=0,_=m,A=0,k=g,S=0,I=x;if(a.content&&n){const t=a.content;v=bh(p,0,t[0]),w=bh(d,0,t[1]),b=bh(p,t[0],t[2]),_=bh(d,t[1],t[3]),A=t[0]-v,S=t[1]-w,k=t[2]-t[0]-b,I=t[3]-t[1]-_;}const z=(n,s,l,u)=>{const p=_h(n.stretch-v,b,c,t.left),d=Ah(n.fixed-A,k,n.stretch,y),f=_h(s.stretch-w,_,h,t.top),g=Ah(s.fixed-S,I,s.stretch,m),x=_h(l.stretch-v,b,c,t.left),z=Ah(l.fixed-A,k,l.stretch,y),M=_h(u.stretch-w,_,h,t.top),T=Ah(u.fixed-S,I,u.stretch,m),B=new i(p,f),C=new i(x,f),P=new i(x,M),E=new i(p,M),D=new i(d/o,g/o),V=new i(z/o,T/o),F=e*Math.PI/180;if(F){const t=Math.sin(F),e=Math.cos(F),r=[e,-t,t,e];B._matMult(r),C._matMult(r),E._matMult(r),P._matMult(r);}const L=n.stretch+n.fixed,R=s.stretch+s.fixed;return {tl:B,tr:C,bl:E,br:P,tex:{x:a.paddedRect.x+1+L,y:a.paddedRect.y+1+R,w:l.stretch+l.fixed-L,h:u.stretch+u.fixed-R},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:D,pixelOffsetBR:V,minFontScaleX:k/o/c,minFontScaleY:I/o/h,isSDF:r}};if(n&&(a.stretchX||a.stretchY)){const t=wh(p,g,y),e=wh(d,x,m);for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)s.push(z(n,e[t],i,e[t+1]));}}else s.push(z({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return s}function bh(t,e,r){let n=0;for(const i of t)n+=Math.max(e,Math.min(r,i[1]))-Math.max(e,Math.min(r,i[0]));return n}function wh(t,e,r){const n=[{fixed:-1,stretch:0}];for(const[e,r]of t){const t=n[n.length-1];n.push({fixed:e-t.stretch,stretch:t.stretch}),n.push({fixed:e-t.stretch,stretch:t.stretch+(r-e)});}return n.push({fixed:e+1,stretch:r}),n}function _h(t,e,r,n){return t/e*r+n}function Ah(t,e,r,n){return t-e*r/n}function kh(t,e,r,n){const i=e+t.positionedLines[n].lineOffset;return 0===n?r+i/2:r+(i+(e+t.positionedLines[n-1].lineOffset))/2}xh.loadGlyphRange=function(t,e,r,n,i){const s=256*e,a=s+255,o=n.transformRequest(n.normalizeGlyphsURL(r).replace(\"{fontstack}\",t).replace(\"{range}\",`${s}-${a}`),re.Glyphs);ae(o,((t,e)=>{if(t)i(t);else if(e){const t={},r=function(t){return new gc(t).readFields(Lc,{})}(e);for(const e of r.glyphs)t[e.id]=e;i(null,{glyphs:t,ascender:r.ascender,descender:r.descender});}}));},xh.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:r=8,cutoff:n=.25,fontFamily:i=\"sans-serif\",fontWeight:s=\"normal\",fontStyle:a=\"normal\"}){this.buffer=e,this.cutoff=n,this.radius=r;const o=this.size=t+4*e,l=this._createCanvas(o),u=this.ctx=l.getContext(\"2d\",{willReadFrequently:!0});u.font=`${a} ${s} ${t}px ${i}`,u.textBaseline=\"alphabetic\",u.textAlign=\"left\",u.fillStyle=\"black\",this.gridOuter=new Float64Array(o*o),this.gridInner=new Float64Array(o*o),this.f=new Float64Array(o),this.z=new Float64Array(o+1),this.v=new Uint16Array(o);}_createCanvas(t){const e=document.createElement(\"canvas\");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:r,actualBoundingBoxDescent:n,actualBoundingBoxLeft:i,actualBoundingBoxRight:s}=this.ctx.measureText(t),a=Math.floor(r),o=Math.min(this.size-this.buffer,Math.ceil(s-i)),l=Math.min(this.size-this.buffer,Math.ceil(r)+Math.ceil(n)),u=o+2*this.buffer,c=l+2*this.buffer,h=u*c,p=new Uint8ClampedArray(h),d={data:p,width:u,height:c,glyphWidth:o,glyphHeight:l,glyphTop:a,glyphLeft:0,glyphAdvance:e};if(0===o||0===l)return d;const{ctx:f,buffer:y,gridInner:m,gridOuter:g}=this;f.clearRect(y,y,o,l),f.fillText(t,y,y+a+1);const x=f.getImageData(y,y,o,l);g.fill(fh,0,h),m.fill(0,0,h);for(let t=0;t<l;t++)for(let e=0;e<o;e++){const r=x.data[4*(t*o+e)+3]/255;if(0===r)continue;const n=(t+y)*u+e+y;if(1===r)g[n]=0,m[n]=fh;else {const t=.5-r;g[n]=t>0?t*t:0,m[n]=t<0?t*t:0;}}yh(g,0,0,u,c,u,this.f,this.v,this.z),yh(m,y,y,o,l,u,this.f,this.v,this.z);for(let t=0;t<h;t++){const e=Math.sqrt(g[t])-Math.sqrt(m[t]);p[t]=Math.round(255-255*(e/this.radius+this.cutoff));}return d}};class Sh{constructor(t=[],e=Ih){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(r(n,s)>=0)break;e[t]=s,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1),s=e[n];const a=n+1;if(a<this.length&&r(e[a],s)<0&&(n=a,s=e[a]),r(s,i)>=0)break;e[t]=s,t=n;}e[t]=i;}}function Ih(t,e){return t<e?-1:t>e?1:0}function zh(t,e=1,r=!1){let n=1/0,s=1/0,a=-1/0,o=-1/0;const l=t[0];for(let t=0;t<l.length;t++){const e=l[t];(!t||e.x<n)&&(n=e.x),(!t||e.y<s)&&(s=e.y),(!t||e.x>a)&&(a=e.x),(!t||e.y>o)&&(o=e.y);}const u=Math.min(a-n,o-s);let c=u/2;const h=new Sh([],Mh);if(0===u)return new i(n,s);for(let e=n;e<a;e+=u)for(let r=s;r<o;r+=u)h.push(new Th(e+c,r+c,c,t));let p=function(t){let e=0,r=0,n=0;const i=t[0];for(let t=0,s=i.length,a=s-1;t<s;a=t++){const s=i[t],o=i[a],l=s.x*o.y-o.x*s.y;r+=(s.x+o.x)*l,n+=(s.y+o.y)*l,e+=3*l;}return new Th(r/e,n/e,0,t)}(t),d=h.length;for(;h.length;){const n=h.pop();(n.d>p.d||!p.d)&&(p=n,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*n.d)/1e4,d)),n.max-p.d<=e||(c=n.h/2,h.push(new Th(n.p.x-c,n.p.y-c,c,t)),h.push(new Th(n.p.x+c,n.p.y-c,c,t)),h.push(new Th(n.p.x-c,n.p.y+c,c,t)),h.push(new Th(n.p.x+c,n.p.y+c,c,t)),d+=4);}return r&&(console.log(`num probes: ${d}`),console.log(`best distance: ${p.d}`)),p.p}function Mh(t,e){return e.max-t.max}function Th(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;i<e.length;i++){const s=e[i];for(let e=0,i=s.length,a=i-1;e<i;a=e++){const i=s[e],o=s[a];i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,sl(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}const Bh=Number.POSITIVE_INFINITY,Ch=Math.sqrt(2);function Ph(t,e){return e[1]!==Bh?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r;}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Ch;switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7;}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e;}return [r,n]}(t,e[0])}function Eh(t,e,r,n,i,s,a,o,l,u){t.createArrays(),t.tilePixelRatio=To/(512*t.overscaling),t.compareText={},t.iconsNeedLinear=!1;const c=t.layers[0].layout,h=t.layers[0]._unevaluatedLayout._values,p={};if(\"composite\"===t.textSizeData.kind){const{minZoom:e,maxZoom:r}=t.textSizeData;p.compositeTextSizes=[h[\"text-size\"].possiblyEvaluate(new Gs(e),o),h[\"text-size\"].possiblyEvaluate(new Gs(r),o)];}if(\"composite\"===t.iconSizeData.kind){const{minZoom:e,maxZoom:r}=t.iconSizeData;p.compositeIconSizes=[h[\"icon-size\"].possiblyEvaluate(new Gs(e),o),h[\"icon-size\"].possiblyEvaluate(new Gs(r),o)];}p.layoutTextSize=h[\"text-size\"].possiblyEvaluate(new Gs(l+1),o),p.layoutIconSize=h[\"icon-size\"].possiblyEvaluate(new Gs(l+1),o),p.textMaxSize=h[\"text-size\"].possiblyEvaluate(new Gs(18),o);const d=\"map\"===c.get(\"text-rotation-alignment\")&&\"point\"!==c.get(\"symbol-placement\"),f=c.get(\"text-size\");for(const s of t.features){const l=c.get(\"text-font\").evaluate(s,{},o).join(\",\"),h=f.evaluate(s,{},o),y=p.layoutTextSize.evaluate(s,{},o),m=(p.layoutIconSize.evaluate(s,{},o),{horizontal:{},vertical:void 0}),g=s.text;let x,v=[0,0];if(g){const n=g.toString(),a=c.get(\"text-letter-spacing\").evaluate(s,{},o)*sc,u=c.get(\"text-line-height\").evaluate(s,{},o)*sc,p=Is(n)?a:0,f=c.get(\"text-anchor\").evaluate(s,{},o),x=c.get(\"text-variable-anchor\");if(!x){const t=c.get(\"text-radial-offset\").evaluate(s,{},o);v=t?Ph(f,[t*sc,Bh]):c.get(\"text-offset\").evaluate(s,{},o).map((t=>t*sc));}let b=d?\"center\":c.get(\"text-justify\").evaluate(s,{},o);const w=c.get(\"symbol-placement\"),_=\"point\"===w,A=\"point\"===w?c.get(\"text-max-width\").evaluate(s,{},o)*sc:0,k=s=>{t.allowVerticalPlacement&&Ss(n)&&(m.vertical=Zc(g,e,r,i,l,A,u,f,s,p,v,qc.vertical,!0,w,y,h));};if(!d&&x){const t=\"auto\"===b?x.map((t=>Dh(t))):[b];let n=!1;for(let s=0;s<t.length;s++){const a=t[s];if(!m.horizontal[a])if(n)m.horizontal[a]=m.horizontal[0];else {const t=Zc(g,e,r,i,l,A,u,\"center\",a,p,v,qc.horizontal,!1,w,y,h);t&&(m.horizontal[a]=t,n=1===t.positionedLines.length);}}k(\"left\");}else {if(\"auto\"===b&&(b=Dh(f)),_||c.get(\"text-writing-mode\").indexOf(\"horizontal\")>=0||!Ss(n)){const t=Zc(g,e,r,i,l,A,u,f,b,p,v,qc.horizontal,!1,w,y,h);t&&(m.horizontal[b]=t);}k(\"point\"===w?\"left\":b);}}let b=!1;if(s.icon&&s.icon.name){const e=n[s.icon.name];e&&(x=nh(i[s.icon.name],c.get(\"icon-offset\").evaluate(s,{},o),c.get(\"icon-anchor\").evaluate(s,{},o)),b=e.sdf,void 0===t.sdfIcons?t.sdfIcons=e.sdf:t.sdfIcons!==e.sdf&&pt(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),(e.pixelRatio!==t.pixelRatio||0!==c.get(\"icon-rotate\").constantOr(1))&&(t.iconsNeedLinear=!0));}const w=Rh(m.horizontal)||m.vertical;t.iconsInText||(t.iconsInText=!!w&&w.iconsInText),(w||x)&&Vh(t,s,m,x,n,p,y,0,v,b,a,o,u);}s&&t.generateCollisionDebugBuffers(l,t.collisionBoxArray);}function Dh(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return \"right\";case\"left\":case\"top-left\":case\"bottom-left\":return \"left\"}return \"center\"}function Vh(t,e,r,n,i,s,a,o,l,u,c,h,p){let d=s.textMaxSize.evaluate(e,{},h);void 0===d&&(d=a);const f=t.layers[0].layout,y=f.get(\"icon-offset\").evaluate(e,{},h),m=Rh(r.horizontal)||r.vertical,g=a/24,x=t.tilePixelRatio*d/24,v=t.tilePixelRatio*f.get(\"symbol-spacing\"),b=f.get(\"text-padding\")*t.tilePixelRatio,w=f.get(\"icon-padding\")*t.tilePixelRatio,_=q(f.get(\"text-max-angle\")),A=\"map\"===f.get(\"text-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),k=\"map\"===f.get(\"icon-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),S=f.get(\"symbol-placement\"),I=v/2,z=f.get(\"icon-text-fit\");let M;n&&\"none\"!==z&&(t.allowVerticalPlacement&&r.vertical&&(M=ih(n,r.vertical,z,f.get(\"icon-text-fit-padding\"),y,g)),m&&(n=ih(n,m,z,f.get(\"icon-text-fit-padding\"),y,g)));const T=(a,o,d)=>{if(o.x<0||o.x>=To||o.y<0||o.y>=To)return;const{x:f,y:m,z:g}=p.projectTilePoint(o.x,o.y,d),x=new sh(f,m,g,0,void 0);!function(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y,m,g,x,v,b,w,_,A,k){const S=t.addToLineVertexArray(e,n);let I,z,M,T,B,C,P,E=0,D=0,V=0,F=0,L=-1,R=-1;const U={};let $=Ja(\"\"),O=0,j=0;if(void 0===l._unevaluatedLayout.getValue(\"text-radial-offset\")?[O,j]=l.layout.get(\"text-offset\").evaluate(b,{},k).map((t=>t*sc)):(O=l.layout.get(\"text-radial-offset\").evaluate(b,{},k)*sc,j=Bh),t.allowVerticalPlacement&&i.vertical){const t=i.vertical;if(f)C=$h(t),o&&(P=$h(o));else {const n=l.layout.get(\"text-rotate\").evaluate(b,{},k)+90;M=Uh(u,r,e,c,h,p,t,d,n,y),o&&(T=Uh(u,r,e,c,h,p,o,g,n));}}if(s){const n=l.layout.get(\"icon-rotate\").evaluate(b,{},k),i=\"none\"!==l.layout.get(\"icon-text-fit\"),a=vh(s,n,_,i),d=o?vh(o,n,_,i):void 0;z=Uh(u,r,e,c,h,p,s,g,n),E=4*a.length;const f=t.iconSizeData;let y=null;\"source\"===f.kind?(y=[ac*l.layout.get(\"icon-size\").evaluate(b,{},k)],y[0]>Fh&&pt(`${t.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)):\"composite\"===f.kind&&(y=[ac*w.compositeIconSizes[0].evaluate(b,{},k),ac*w.compositeIconSizes[1].evaluate(b,{},k)],(y[0]>Fh||y[1]>Fh)&&pt(`${t.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)),t.addSymbols(t.icon,a,y,v,x,b,!1,r,e,S.lineStartIndex,S.lineLength,-1,A,k),L=t.icon.placedSymbolArray.length-1,d&&(D=4*d.length,t.addSymbols(t.icon,d,y,v,x,b,qc.vertical,r,e,S.lineStartIndex,S.lineLength,-1,A,k),R=t.icon.placedSymbolArray.length-1);}for(const n in i.horizontal){const s=i.horizontal[n];I||($=Ja(s.text),f?B=$h(s):I=Uh(u,r,e,c,h,p,s,d,l.layout.get(\"text-rotate\").evaluate(b,{},k),y));const o=1===s.positionedLines.length;if(V+=Lh(t,r,e,s,a,l,f,b,y,S,i.vertical?qc.horizontal:qc.horizontalOnly,o?Object.keys(i.horizontal):[n],U,L,w,A,k),o)break}i.vertical&&(F+=Lh(t,r,e,i.vertical,a,l,f,b,y,S,qc.vertical,[\"vertical\"],U,R,w,A,k));let q=-1;const N=(t,e)=>t?Math.max(t,e):e;q=N(B,q),q=N(C,q),q=N(P,q);const G=q>-1?1:0;t.glyphOffsetArray.length>=Yh.MAX_GLYPHS&&pt(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey),t.symbolInstances.emplaceBack(r.x,r.y,r.z,e.x,e.y,U.right>=0?U.right:-1,U.center>=0?U.center:-1,U.left>=0?U.left:-1,U.vertical>=0?U.vertical:-1,L,R,$,void 0!==I?I:t.collisionBoxArray.length,void 0!==I?I+1:t.collisionBoxArray.length,void 0!==M?M:t.collisionBoxArray.length,void 0!==M?M+1:t.collisionBoxArray.length,void 0!==z?z:t.collisionBoxArray.length,void 0!==z?z+1:t.collisionBoxArray.length,T||t.collisionBoxArray.length,T?T+1:t.collisionBoxArray.length,c,V,F,E,D,G,0,O,j,q);}(t,o,x,a,r,n,i,M,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,b,A,l,0,w,k,y,e,s,u,c,h);};if(\"line\"===S)for(const i of dh(e.geometry,0,0,To,To)){const e=hh(i,v,_,r.vertical||m,n,24,x,t.overscaling,To);for(const r of e){const e=m;e&&Oh(t,e.text,I,r)||T(i,r,h);}}else if(\"line-center\"===S){for(const t of e.geometry)if(t.length>1){const e=ch(t,_,r.vertical||m,n,24,x);e&&T(t,e,h);}}else if(\"Polygon\"===e.type)for(const t of pu(e.geometry,0)){const e=zh(t,16);T(t[0],new sh(e.x,e.y,0,0,void 0),h);}else if(\"LineString\"===e.type)for(const t of e.geometry)T(t,new sh(t[0].x,t[0].y,0,0,void 0),h);else if(\"Point\"===e.type)for(const t of e.geometry)for(const e of t)T([e],new sh(e.x,e.y,0,0,void 0),h);}const Fh=32640;function Lh(t,e,r,n,s,a,o,l,u,c,h,p,d,f,y,m,g){const x=function(t,e,r,n,s,a,o,l){const u=[];if(0===e.positionedLines.length)return u;const c=n.layout.get(\"text-rotate\").evaluate(a,{})*Math.PI/180,h=function(t){const e=t[0],r=t[1],n=e*r;return n>0?[e,-r]:n<0?[-e,r]:0===e?[r,e]:[r,-e]}(r);let p=Math.abs(e.top-e.bottom);for(const t of e.positionedLines)p-=t.lineOffset;const d=e.positionedLines.length,f=p/d;let y=e.top-r[1];for(let t=0;t<d;++t){const n=e.positionedLines[t];y=kh(e,f,y,t);for(const t of n.positionedGlyphs){if(!t.rect)continue;const n=t.rect||{};let a=4,p=!0,d=1,f=0;if(t.imageName){const e=o[t.imageName];if(!e)continue;if(e.sdf){pt(\"SDF images are not supported in formatted text and will be ignored.\");continue}p=!1,d=e.pixelRatio,a=1/d;}const m=(s||l)&&t.vertical,g=t.metrics.advance*t.scale/2,x=t.metrics,v=t.rect;if(null===v)continue;l&&e.verticalizable&&(f=t.imageName?g-t.metrics.width*t.scale/2:0);const b=s?[t.x+g,t.y]:[0,0];let w=[0,0],_=[0,0],A=!1;s||(m?(_=[t.x+g+h[0],t.y+h[1]-f],A=!0):w=[t.x+g+r[0],t.y+r[1]-f]);const k=v.w*t.scale/(d*(t.localGlyph?2:1)),S=v.h*t.scale/(d*(t.localGlyph?2:1));let I,z,M,T;if(m){const e=t.y-y,r=new i(-g,g-e),n=-Math.PI/2,s=new i(..._);I=new i(-g+w[0],w[1]),I._rotateAround(n,r)._add(s),I.x+=-e+g,I.y-=(x.left-a)*t.scale;const o=t.imageName?x.advance*t.scale:sc*t.scale,l=String.fromCharCode(t.glyph);dc(l)?I.x+=(1-a)*t.scale:fc(l)?I.x+=o-x.height*t.scale+(-a-1)*t.scale:I.x+=t.imageName||x.width+2*a===v.w&&x.height+2*a===v.h?(o-S)/2:(o-(x.height+2*a)*t.scale)/2,z=new i(I.x,I.y-k),M=new i(I.x+S,I.y),T=new i(I.x+S,I.y-k);}else {const e=(x.left-a)*t.scale-g+w[0],r=(-x.top-a)*t.scale+w[1],n=e+k,s=r+S;I=new i(e,r),z=new i(n,r),M=new i(e,s),T=new i(n,s);}if(c){let t;t=s?new i(0,0):A?new i(h[0],h[1]):new i(r[0],r[1]),I._rotateAround(c,t),z._rotateAround(c,t),M._rotateAround(c,t),T._rotateAround(c,t);}const B=new i(0,0),C=new i(0,0);u.push({tl:I,tr:z,bl:M,br:T,tex:n,writingMode:e.writingMode,glyphOffset:b,sectionIndex:t.sectionIndex,isSDF:p,pixelOffsetTL:B,pixelOffsetBR:C,minFontScaleX:0,minFontScaleY:0});}}return u}(0,n,u,a,o,l,s,t.allowVerticalPlacement),v=t.textSizeData;let b=null;\"source\"===v.kind?(b=[ac*a.layout.get(\"text-size\").evaluate(l,{},g)],b[0]>Fh&&pt(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)):\"composite\"===v.kind&&(b=[ac*y.compositeTextSizes[0].evaluate(l,{},g),ac*y.compositeTextSizes[1].evaluate(l,{},g)],(b[0]>Fh||b[1]>Fh)&&pt(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)),t.addSymbols(t.text,x,b,u,o,l,h,e,r,c.lineStartIndex,c.lineLength,f,m,g);for(const e of p)d[e]=t.text.placedSymbolArray.length-1;return 4*x.length}function Rh(t){for(const e in t)return t[e];return null}function Uh(t,e,r,n,s,a,o,l,u,c){let h=o.top,p=o.bottom,d=o.left,f=o.right;const y=o.collisionPadding;if(y&&(d-=y[0],h-=y[1],f+=y[2],p+=y[3]),u){const t=new i(d,h),e=new i(f,h),r=new i(d,p),n=new i(f,p),s=q(u);let a=new i(0,0);c&&(a=new i(c[0],c[1])),t._rotateAround(s,a),e._rotateAround(s,a),r._rotateAround(s,a),n._rotateAround(s,a),d=Math.min(t.x,e.x,r.x,n.x),f=Math.max(t.x,e.x,r.x,n.x),h=Math.min(t.y,e.y,r.y,n.y),p=Math.max(t.y,e.y,r.y,n.y);}return t.emplaceBack(e.x,e.y,e.z,r.x,r.y,d,h,f,p,l,n,s,a),t.length-1}function $h(t){t.collisionPadding&&(t.top-=t.collisionPadding[1],t.bottom+=t.collisionPadding[3]);const e=t.bottom-t.top;return e>0?Math.max(10,e):null}function Oh(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])<r)return !0}else i[e]=[];return i[e].push(n),!1}const jh=Bu.VectorTileFeature.types,qh=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function Nh(t,e,r,n,i,s,a,o,l,u,c,h,p,d,f,y){const m=c?Math.min(Fh,Math.round(c[0])):0,g=c?Math.min(Fh,Math.round(c[1])):0;t.emplaceBack(e,r,Math.round(32*a),Math.round(32*o),l,u,(m<<1)+(h?1:0),g,16*p,16*d,256*f,256*y,n,i,s,0);}function Gh(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function Zh(t){for(const e of t.sections)if(Ps(e.text))return !0;return !1}class Xh{constructor(t){this.layoutVertexArray=new xa,this.indexArray=new ka,this.programConfigurations=t,this.segments=new Mo,this.dynamicLayoutVertexArray=new ya,this.opacityVertexArray=new va,this.placedSymbolArray=new Ra;}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Qu.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,tc.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,qh,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());}}Zi(\"SymbolBuffers\",Xh);class Kh{constructor(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new Mo,this.collisionVertexArray=new Aa,this.collisionVertexArrayExt=new ya;}upload(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,ec.members,!0),this.collisionVertexBufferExt=t.createVertexBuffer(this.collisionVertexArrayExt,rc.members,!0);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy(),this.collisionVertexBufferExt.destroy());}}Zi(\"CollisionBuffers\",Kh);class Yh{constructor(t){this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=c([]),this.placementViewportMatrix=c([]);const e=this.layers[0]._unevaluatedLayout._values;this.textSizeData=oc(this.zoom,e[\"text-size\"]),this.iconSizeData=oc(this.zoom,e[\"icon-size\"]);const r=this.layers[0].layout,n=r.get(\"symbol-sort-key\"),i=r.get(\"symbol-z-order\");this.canOverlap=r.get(\"text-allow-overlap\")||r.get(\"icon-allow-overlap\")||r.get(\"text-ignore-placement\")||r.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=\"viewport-y\"!==i&&void 0!==n.constantOr(1),this.sortFeaturesByY=(\"viewport-y\"===i||\"auto\"===i&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=r.get(\"text-writing-mode\").map((t=>qc[t])),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=t.sourceID;}createArrays(){this.text=new Xh(new xo(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new Xh(new xo(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new Oa,this.lineVertexArray=new ja,this.symbolInstances=new $a;}calculateGlyphDependencies(t,e,r,n,i){for(let r=0;r<t.length;r++)if(e[t.charCodeAt(r)]=!0,n&&i){const n=pc[t.charAt(r)];n&&(e[n.charCodeAt(0)]=!0);}}populate(t,e,r,n){const i=this.layers[0],s=i.layout,a=s.get(\"text-font\"),o=s.get(\"text-field\"),l=s.get(\"icon-image\"),u=(\"constant\"!==o.value.kind||o.value.value instanceof Ke&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=s.get(\"symbol-sort-key\");if(this.features=[],!u&&!c)return;const p=e.iconDependencies,d=e.glyphDependencies,f=e.availableImages,y=new Gs(this.zoom);for(const{feature:e,id:o,index:l,sourceLayerIndex:m}of t){const t=i._featureFilter.needGeometry,g=Yo(e,t);if(!i._featureFilter.filter(y,g,r))continue;let x,v;if(t||(g.geometry=Ko(e,r,n)),u){const t=i.getValueAndResolveTokens(\"text-field\",g,r,f),e=Ke.factory(t);Zh(e)&&(this.hasRTLText=!0),(!this.hasRTLText||\"unavailable\"===js()||this.hasRTLText&&Ns.isParsed())&&(x=hc(e,i,g));}if(c){const t=i.getValueAndResolveTokens(\"icon-image\",g,r,f);v=t instanceof Ye?t:Ye.fromString(t);}if(!x&&!v)continue;const b=this.sortFeaturesByKey?h.evaluate(g,{},r):void 0;if(this.features.push({id:o,text:x,icon:v,index:l,sourceLayerIndex:m,geometry:g.geometry,properties:e.properties,type:jh[e.type],sortKey:b}),v&&(p[v.name]=!0),x){const t=a.evaluate(g,{},r).join(\",\"),e=\"map\"===s.get(\"text-rotation-alignment\")&&\"point\"!==s.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(qc.vertical)>=0;for(const r of x.sections)if(r.image)p[r.image.name]=!0;else {const n=Ss(x.toString()),i=r.fontStack||t,s=d[i]=d[i]||{};this.calculateGlyphDependencies(r.text,s,e,this.allowVerticalPlacement,n);}}}\"line\"===s.get(\"symbol-placement\")&&(this.features=function(t){const e={},r={},n=[];let i=0;function s(e){n.push(t[e]),i++;}function a(t,e,i){const s=r[t];return delete r[t],r[e]=s,n[s].geometry[0].pop(),n[s].geometry[0]=n[s].geometry[0].concat(i[0]),s}function o(t,r,i){const s=e[r];return delete e[r],e[t]=s,n[s].geometry[0].shift(),n[s].geometry[0]=i[0].concat(n[s].geometry[0]),s}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;u<t.length;u++){const c=t[u],h=c.geometry,p=c.text?c.text.toString():null;if(!p){s(u);continue}const d=l(p,h),f=l(p,h,!0);if(d in r&&f in e&&r[d]!==e[f]){const t=o(d,f,h),i=a(d,f,n[t].geometry);delete e[d],delete r[f],r[l(p,n[i].geometry,!0)]=i,n[t].geometry=null;}else d in r?a(d,f,h):f in e?o(d,f,h):(s(u),e[d]=i-1,r[f]=i-1);}return n.filter((t=>t.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r,n){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r,n),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r,n));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length;if(void 0!==t.segment){let r=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]);const i={};for(let n=t.segment+1;n<e.length;n++)i[n]={x:e[n].x,y:e[n].y,tileUnitDistanceFromAnchor:r},n<e.length-1&&(r+=e[n+1].dist(e[n]));for(let r=t.segment||0;r>=0;r--)i[r]={x:e[r].x,y:e[r].y,tileUnitDistanceFromAnchor:n},r>0&&(n+=e[r-1].dist(e[r]));for(let t=0;t<e.length;t++){const e=i[t];this.lineVertexArray.emplaceBack(e.x,e.y,e.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(t,e,r,n,i,s,a,o,l,u,c,h,p,d){const f=t.indexArray,y=t.layoutVertexArray,m=t.segments.prepareSegment(4*e.length,y,f,this.canOverlap?s.sortKey:void 0),g=this.glyphOffsetArray.length,x=m.vertexLength,v=this.allowVerticalPlacement&&a===qc.vertical?Math.PI/2:0,b=s.text&&s.text.sections;for(let n=0;n<e.length;n++){const{tl:i,tr:a,bl:u,br:c,tex:h,pixelOffsetTL:g,pixelOffsetBR:x,minFontScaleX:w,minFontScaleY:_,glyphOffset:A,isSDF:k,sectionIndex:S}=e[n],I=m.vertexLength,z=A[1];Nh(y,o.x,o.y,o.z,l.x,l.y,i.x,z+i.y,h.x,h.y,r,k,g.x,g.y,w,_),Nh(y,o.x,o.y,o.z,l.x,l.y,a.x,z+a.y,h.x+h.w,h.y,r,k,x.x,g.y,w,_),Nh(y,o.x,o.y,o.z,l.x,l.y,u.x,z+u.y,h.x,h.y+h.h,r,k,g.x,x.y,w,_),Nh(y,o.x,o.y,o.z,l.x,l.y,c.x,z+c.y,h.x+h.w,h.y+h.h,r,k,x.x,x.y,w,_),Gh(t.dynamicLayoutVertexArray,o,v),f.emplaceBack(I,I+1,I+2),f.emplaceBack(I+1,I+2,I+3),m.vertexLength+=4,m.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(A[0]),n!==e.length-1&&S===e[n+1].sectionIndex||t.programConfigurations.populatePaintArrays(y.length,s,s.index,{},p,d,b&&b[S]);}t.placedSymbolArray.emplaceBack(o.x,o.y,o.z,l.x,l.y,g,this.glyphOffsetArray.length-g,x,u,c,l.segment,r?r[0]:0,r?r[1]:0,n[0],n[1],a,0,!1,0,h,0);}_commitLayoutVertex(t,e,r,n,i,s,a){t.emplaceBack(e,r,n,i,s,Math.round(a.x),Math.round(a.y));}_addCollisionDebugVertices(t,e,r,n,s,a,o){const l=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray),u=l.vertexLength,c=o.tileAnchorX,h=o.tileAnchorY;for(let t=0;t<4;t++)r.collisionVertexArray.emplaceBack(0,0,0,0);r.collisionVertexArrayExt.emplaceBack(e,-t.padding,-t.padding),r.collisionVertexArrayExt.emplaceBack(e,t.padding,-t.padding),r.collisionVertexArrayExt.emplaceBack(e,t.padding,t.padding),r.collisionVertexArrayExt.emplaceBack(e,-t.padding,t.padding),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x1,t.y1)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x2,t.y1)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x2,t.y2)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x1,t.y2)),l.vertexLength+=4;const p=r.indexArray;p.emplaceBack(u,u+1),p.emplaceBack(u+1,u+2),p.emplaceBack(u+2,u+3),p.emplaceBack(u+3,u),l.primitiveLength+=4;}_addTextDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceTextSize(t,s,e,a);this._addCollisionDebugVertices(n,i,this.textCollisionBox,n.projectedAnchorX,n.projectedAnchorY,n.projectedAnchorZ,s);}}_addIconDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceIconSize(t,e,a);this._addCollisionDebugVertices(n,i,this.iconCollisionBox,n.projectedAnchorX,n.projectedAnchorY,n.projectedAnchorZ,s);}}generateCollisionDebugBuffers(t,e){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Kh(wa,nc.members,Ca),this.iconCollisionBox=new Kh(wa,nc.members,Ca);const r=uc(this.iconSizeData,t),n=uc(this.textSizeData,t);for(let i=0;i<this.symbolInstances.length;i++){const s=this.symbolInstances.get(i);this._addTextDebugCollisionBoxes(n,t,e,s.textBoxStartIndex,s.textBoxEndIndex,s),this._addTextDebugCollisionBoxes(n,t,e,s.verticalTextBoxStartIndex,s.verticalTextBoxEndIndex,s),this._addIconDebugCollisionBoxes(r,t,e,s.iconBoxStartIndex,s.iconBoxEndIndex,s),this._addIconDebugCollisionBoxes(r,t,e,s.verticalIconBoxStartIndex,s.verticalIconBoxEndIndex,s);}}getSymbolInstanceTextSize(t,e,r,n){const i=this.text.placedSymbolArray.get(e.rightJustifiedTextSymbolIndex>=0?e.rightJustifiedTextSymbolIndex:e.centerJustifiedTextSymbolIndex>=0?e.centerJustifiedTextSymbolIndex:e.leftJustifiedTextSymbolIndex>=0?e.leftJustifiedTextSymbolIndex:e.verticalPlacedTextSymbolIndex>=0?e.verticalPlacedTextSymbolIndex:n),s=lc(this.textSizeData,t,i)/sc;return this.tilePixelRatio*s}getSymbolInstanceIconSize(t,e,r){const n=this.icon.placedSymbolArray.get(r),i=lc(this.iconSizeData,t,n);return this.tilePixelRatio*i}_commitDebugCollisionVertexUpdate(t,e,r){t.emplaceBack(e,-r,-r),t.emplaceBack(e,r,-r),t.emplaceBack(e,r,r),t.emplaceBack(e,-r,r);}_updateTextDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceTextSize(t,s,e,a);this._commitDebugCollisionVertexUpdate(this.textCollisionBox.collisionVertexArrayExt,i,n.padding);}}_updateIconDebugCollisionBoxes(t,e,r,n,i){for(let s=n;s<i;s++){const n=r.get(s),i=this.getSymbolInstanceIconSize(t,e,s);this._commitDebugCollisionVertexUpdate(this.iconCollisionBox.collisionVertexArrayExt,i,n.padding);}}updateCollisionDebugBuffers(t,e){if(!this.hasDebugData())return;this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexArrayExt.clear(),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexArrayExt.clear();const r=uc(this.iconSizeData,t),n=uc(this.textSizeData,t);for(let i=0;i<this.symbolInstances.length;i++){const s=this.symbolInstances.get(i);this._updateTextDebugCollisionBoxes(n,t,e,s.textBoxStartIndex,s.textBoxEndIndex,s),this._updateTextDebugCollisionBoxes(n,t,e,s.verticalTextBoxStartIndex,s.verticalTextBoxEndIndex,s),this._updateIconDebugCollisionBoxes(r,t,e,s.iconBoxStartIndex,s.iconBoxEndIndex),this._updateIconDebugCollisionBoxes(r,t,e,s.verticalIconBoxStartIndex,s.verticalIconBoxEndIndex);}this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexBufferExt&&this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexBufferExt&&this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt);}_deserializeCollisionBoxesForSymbol(t,e,r,n,i,s,a,o,l){const u={};for(let n=e;n<r;n++){const e=t.get(n);u.textBox={x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,padding:e.padding,projectedAnchorX:e.projectedAnchorX,projectedAnchorY:e.projectedAnchorY,projectedAnchorZ:e.projectedAnchorZ,tileAnchorX:e.tileAnchorX,tileAnchorY:e.tileAnchorY},u.textFeatureIndex=e.featureIndex;break}for(let e=n;e<i;e++){const r=t.get(e);u.verticalTextBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.verticalTextFeatureIndex=r.featureIndex;break}for(let e=s;e<a;e++){const r=t.get(e);u.iconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.iconFeatureIndex=r.featureIndex;break}for(let e=o;e<l;e++){const r=t.get(e);u.verticalIconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.verticalIconFeatureIndex=r.featureIndex;break}return u}deserializeCollisionBoxes(t){this.collisionArrays=[];for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;e<n;e+=4)t.indexArray.emplaceBack(e,e+1,e+2),t.indexArray.emplaceBack(e+1,e+2,e+3);}getSortedSymbolIndexes(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const e=Math.sin(t),r=Math.cos(t),n=[],i=[],s=[];for(let t=0;t<this.symbolInstances.length;++t){s.push(t);const a=this.symbolInstances.get(t);n.push(0|Math.round(e*a.tileAnchorX+r*a.tileAnchorY)),i.push(a.featureIndex);}return s.sort(((t,e)=>n[t]-n[e]||i[e]-i[t])),s}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}Zi(\"SymbolBucket\",Yh,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Yh.MAX_GLYPHS=65535,Yh.addDynamicAttributes=Gh;const Hh=new sa({\"symbol-placement\":new ta(ve.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new ta(ve.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new ta(ve.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new ea(ve.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new ta(ve.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new ta(ve.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new ta(ve.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new ta(ve.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new ta(ve.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new ea(ve.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new ta(ve.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new ta(ve.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new ea(ve.layout_symbol[\"icon-image\"]),\"icon-rotate\":new ea(ve.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new ta(ve.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new ta(ve.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new ea(ve.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new ea(ve.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new ta(ve.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new ta(ve.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new ta(ve.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new ea(ve.layout_symbol[\"text-field\"]),\"text-font\":new ea(ve.layout_symbol[\"text-font\"]),\"text-size\":new ea(ve.layout_symbol[\"text-size\"]),\"text-max-width\":new ea(ve.layout_symbol[\"text-max-width\"]),\"text-line-height\":new ea(ve.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new ea(ve.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new ea(ve.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new ea(ve.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new ta(ve.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new ea(ve.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new ta(ve.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new ta(ve.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new ea(ve.layout_symbol[\"text-rotate\"]),\"text-padding\":new ta(ve.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new ta(ve.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new ea(ve.layout_symbol[\"text-transform\"]),\"text-offset\":new ea(ve.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new ta(ve.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new ta(ve.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new ta(ve.layout_symbol[\"text-optional\"])});var Jh={paint:new sa({\"icon-opacity\":new ea(ve.paint_symbol[\"icon-opacity\"]),\"icon-color\":new ea(ve.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new ea(ve.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new ea(ve.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new ea(ve.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new ta(ve.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new ta(ve.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new ea(ve.paint_symbol[\"text-opacity\"]),\"text-color\":new ea(ve.paint_symbol[\"text-color\"],{runtimeType:Ce,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),\"text-halo-color\":new ea(ve.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new ea(ve.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new ea(ve.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new ta(ve.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new ta(ve.paint_symbol[\"text-translate-anchor\"])}),layout:Hh};class Wh{constructor(t){this.type=t.property.overrides?t.property.overrides.runtimeType:ze,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}Zi(\"FormatSectionOverride\",Wh,{omit:[\"defaultValue\"]});class Qh extends So{constructor(t){super(t,Jh);}recalculate(t,e){super.recalculate(t,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(this.layout._values[\"icon-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(this.layout._values[\"text-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\"));const r=this.layout.get(\"text-writing-mode\");if(r){const t=[];for(const e of r)t.indexOf(e)<0&&t.push(e);this.layout._values[\"text-writing-mode\"]=t;}else this.layout._values[\"text-writing-mode\"]=\"point\"===this.layout.get(\"symbol-placement\")?[\"horizontal\"]:[\"horizontal\",\"vertical\"];this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),s=this._unevaluatedLayout._values[t];return s.isDataDriven()||Nn(s.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>r in t?String(t[r]):\"\"))}(e.properties,i)}createBucket(t){return new Yh(t)}queryRadius(){return 0}queryIntersectsFeature(){return !1}_setPaintOverrides(){for(const t of Jh.paint.overridableProperties){if(!Qh.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new Wh(e),n=new qn(r,e.property.specification);let i=null;i=\"constant\"===e.value.kind||\"source\"===e.value.kind?new Zn(\"source\",n):new Xn(\"composite\",n,e.value.zoomStops,e.value._interpolationType),this.paint._values[t]=new Ws(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&Qh.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get(\"text-field\"),n=Jh.paint.properties[e];let i=!1;const s=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if(\"constant\"===r.value.kind&&r.value.value instanceof Ke)s(r.value.value.sections);else if(\"source\"===r.value.kind){const t=e=>{i||(e instanceof tr&&We(e.value)===Ve?s(e.value.sections):e instanceof ir?s(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}getProgramConfiguration(t){return new go(this,t)}}var tp={paint:new sa({\"background-color\":new ta(ve.paint_background[\"background-color\"]),\"background-pattern\":new na(ve.paint_background[\"background-pattern\"]),\"background-opacity\":new ta(ve.paint_background[\"background-opacity\"])})},ep={paint:new sa({\"raster-opacity\":new ta(ve.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new ta(ve.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new ta(ve.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new ta(ve.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new ta(ve.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new ta(ve.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new ta(ve.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new ta(ve.paint_raster[\"raster-fade-duration\"])})};class rp extends So{constructor(t){super(t,{}),this.implementation=t;}is3D(){return \"3d\"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){}serialize(){}onAdd(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);}onRemove(t){this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);}}var np={paint:new sa({\"sky-type\":new ta(ve.paint_sky[\"sky-type\"]),\"sky-atmosphere-sun\":new ta(ve.paint_sky[\"sky-atmosphere-sun\"]),\"sky-atmosphere-sun-intensity\":new ta(ve.paint_sky[\"sky-atmosphere-sun-intensity\"]),\"sky-gradient-center\":new ta(ve.paint_sky[\"sky-gradient-center\"]),\"sky-gradient-radius\":new ta(ve.paint_sky[\"sky-gradient-radius\"]),\"sky-gradient\":new ia(ve.paint_sky[\"sky-gradient\"]),\"sky-atmosphere-halo-color\":new ta(ve.paint_sky[\"sky-atmosphere-halo-color\"]),\"sky-atmosphere-color\":new ta(ve.paint_sky[\"sky-atmosphere-color\"]),\"sky-opacity\":new ta(ve.paint_sky[\"sky-opacity\"])})};function ip(t,e,r){const n=b(0,0,1),i=R(L());return function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);t[0]=n*l-s*o,t[1]=i*l+a*o,t[2]=s*l+n*o,t[3]=a*l-i*o;}(i,i,r?-q(t)+Math.PI:q(t)),U(i,i,-q(e)),C(n,n,i),z(n,n)}const sp={circle:class extends So{constructor(t){super(t,yl);}createBucket(t){return new Jo(t)}queryRadius(t){const e=t;return cl(\"circle-radius\",this,e)+cl(\"circle-stroke-width\",this,e)+hl(this.paint.get(\"circle-translate\"))}queryIntersectsFeature(t,e,r,n,i,s,a,o){const l=dl(this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),s.angle,t.pixelToTileUnitsFactor),u=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r);return xl(t,n,s,a,o,\"map\"===this.paint.get(\"circle-pitch-alignment\"),\"map\"===this.paint.get(\"circle-pitch-scale\"),l,u)}getProgramIds(){return [\"circle\"]}getProgramConfiguration(t){return new go(this,t)}},heatmap:class extends So{createBucket(t){return new Al(t)}constructor(t){super(t,Tl),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"heatmap-color\"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=Bl({expression:this._transitionablePaint._values[\"heatmap-color\"].value.expression,evaluationKey:\"heatmapDensity\",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);}queryRadius(t){return cl(\"heatmap-radius\",this,t)}queryIntersectsFeature(t,e,r,n,s,a,o,l){const u=this.paint.get(\"heatmap-radius\").evaluate(e,r);return xl(t,n,a,o,l,!0,!0,new i(0,0),u)}hasOffscreenPass(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility}getProgramIds(){return [\"heatmap\",\"heatmapTexture\"]}getProgramConfiguration(t){return new go(this,t)}},hillshade:class extends So{constructor(t){super(t,Cl);}hasOffscreenPass(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility}getProgramIds(){return [\"hillshade\",\"hillshadePrepare\"]}getProgramConfiguration(t){return new go(this,t)}},fill:class extends So{constructor(t){super(t,xu);}getProgramIds(){const t=this.paint.get(\"fill-pattern\"),e=t&&t.constantOr(1),r=[e?\"fillPattern\":\"fill\"];return this.paint.get(\"fill-antialias\")&&r.push(e&&!this.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\"),r}getProgramConfiguration(t){return new go(this,t)}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values[\"fill-outline-color\"];\"constant\"===r.value.kind&&void 0===r.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);}createBucket(t){return new mu(t)}queryRadius(){return hl(this.paint.get(\"fill-translate\"))}queryIntersectsFeature(t,e,r,n,i,s){return !t.queryGeometry.isAboveHorizon&&tl(pl(t.tilespaceGeometry,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),s.angle,t.pixelToTileUnitsFactor),n)}isTileClipped(){return !0}},\"fill-extrusion\":class extends So{constructor(t){super(t,Lu);}createBucket(t){return new Vu(t)}queryRadius(){return hl(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return !0}getProgramIds(){return [this.paint.get(\"fill-extrusion-pattern\").constantOr(1)?\"fillExtrusionPattern\":\"fillExtrusion\"]}getProgramConfiguration(t){return new go(this,t)}queryIntersectsFeature(t,e,r,n,s,a,o,l,u){const c=dl(this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),a.angle,t.pixelToTileUnitsFactor),h=this.paint.get(\"fill-extrusion-height\").evaluate(e,r),p=this.paint.get(\"fill-extrusion-base\").evaluate(e,r),d=[0,0],f=l&&a.elevation,y=a.elevation?a.elevation.exaggeration():1;if(f){const e=t.tile.getBucket(this).centroidVertexArray,r=u+1;if(r<e.length){const t=e.get(r);d[0]=t.a_centroid_pos0,d[1]=t.a_centroid_pos1;}}if(0===d[0]&&1===d[1])return !1;const m=function(t,e,r,n,s,a,o,l,u){return a?function(t,e,r,n,i,s,a,o,l){const u=[],c=[],h=[0,0,0,1];for(const p of t){const t=[],d=[];for(const u of p){const c=u.x+n.x,p=u.y+n.y,f=Ou(c,p,e,r,s,a,o,l);h[0]=c,h[1]=p,h[2]=f.base,h[3]=1,F(h,h,i),h[3]=Math.max(h[3],1e-5);const y=$u([h[0]/h[3],h[1]/h[3],h[2]/h[3]]);h[0]=c,h[1]=p,h[2]=f.top,h[3]=1,F(h,h,i),h[3]=Math.max(h[3],1e-5);const m=$u([h[0]/h[3],h[1]/h[3],h[2]/h[3]]);t.push(y),d.push(m);}u.push(t),c.push(d);}return [u,c]}(t,e,r,n,s,a,o,l,u):function(t,e,r,n,s){const a=[],o=[],l=s[8]*e,u=s[9]*e,c=s[10]*e,h=s[11]*e,p=s[8]*r,d=s[9]*r,f=s[10]*r,y=s[11]*r;for(const e of t){const t=[],r=[];for(const a of e){const e=a.x+n.x,o=a.y+n.y,m=s[0]*e+s[4]*o+s[12],g=s[1]*e+s[5]*o+s[13],x=s[2]*e+s[6]*o+s[14],v=s[3]*e+s[7]*o+s[15],b=m+l,w=g+u,_=x+c,A=Math.max(v+h,1e-5),k=m+p,S=g+d,I=x+f,z=Math.max(v+y,1e-5),M=new i(b/A,w/A);M.z=_/A,t.push(M);const T=new i(k/z,S/z);T.z=I/z,r.push(T);}a.push(t),o.push(r);}return [a,o]}(t,e,r,n,s)}(n,p,h,c,o,f?l:null,d,y,a.center.lat),g=t.queryGeometry;return function(t,e,r){let n=1/0;tl(r,e)&&(n=Uu(r,e[0]));for(let i=0;i<e.length;i++){const s=e[i],a=t[i];for(let t=0;t<s.length-1;t++){const e=s[t],i=[e,s[t+1],a[t+1],a[t],e];Wo(r,i)&&(n=Math.min(n,Uu(r,i)));}}return n!==1/0&&n}(m[0],m[1],g.isPointQuery()?g.screenBounds:g.screenGeometry)}},line:class extends So{constructor(t){super(t,Hu),this.gradientVersion=0;}_handleSpecialPaintPropertyUpdate(t){if(\"line-gradient\"===t){const t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.stepInterpolant=t._styleExpression&&t._styleExpression.expression instanceof Fr,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values[\"line-floorwidth\"]=Ju.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,t);}createBucket(t){return new Ku(t)}getProgramIds(){return [this.paint.get(\"line-pattern\").constantOr(1)?\"linePattern\":\"line\"]}getProgramConfiguration(t){return new go(this,t)}queryRadius(t){const e=t,r=Wu(cl(\"line-width\",this,e),cl(\"line-gap-width\",this,e)),n=cl(\"line-offset\",this,e);return r/2+Math.abs(n)+hl(this.paint.get(\"line-translate\"))}queryIntersectsFeature(t,e,r,n,s,a){if(t.queryGeometry.isAboveHorizon)return !1;const o=pl(t.tilespaceGeometry,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),a.angle,t.pixelToTileUnitsFactor),l=t.pixelToTileUnitsFactor/2*Wu(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){const r=[],n=new i(0,0);for(let i=0;i<t.length;i++){const s=t[i],a=[];for(let t=0;t<s.length;t++){const r=s[t-1],i=s[t],o=s[t+1],l=0===t?n:i.sub(r)._unit()._perp(),u=t===s.length-1?n:o.sub(i)._unit()._perp(),c=l._add(u)._unit();c._mult(1/(c.x*u.x+c.y*u.y)),a.push(c._mult(e)._add(i));}r.push(a);}return r}(n,u*t.pixelToTileUnitsFactor)),function(t,e,r){for(let n=0;n<e.length;n++){const i=e[n];if(t.length>=3)for(let e=0;e<i.length;e++)if(ol(t,i[e]))return !0;if(el(t,i,r))return !0}return !1}(o,n,l)}isTileClipped(){return !0}},symbol:Qh,background:class extends So{constructor(t){super(t,tp);}getProgramIds(){return [this.paint.get(\"background-pattern\")?\"backgroundPattern\":\"background\"]}},raster:class extends So{constructor(t){super(t,ep);}getProgramIds(){return [\"raster\"]}},sky:class extends So{constructor(t){super(t,np),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"sky-gradient\"===t?this._updateColorRamp():\"sky-atmosphere-sun\"!==t&&\"sky-atmosphere-halo-color\"!==t&&\"sky-atmosphere-color\"!==t&&\"sky-atmosphere-sun-intensity\"!==t||(this._skyboxInvalidated=!0);}_updateColorRamp(){this.colorRamp=Bl({expression:this._transitionablePaint._values[\"sky-gradient\"].value.expression,evaluationKey:\"skyRadialProgress\"}),this.colorRampTexture&&(this.colorRampTexture.destroy(),this.colorRampTexture=null);}needsSkyboxCapture(t){if(this._skyboxInvalidated||!this.skyboxTexture||!this.skyboxGeometry)return !0;if(!this.paint.get(\"sky-atmosphere-sun\")){const e=t.style.light.properties.get(\"position\");return this._lightPosition.azimuthal!==e.azimuthal||this._lightPosition.polar!==e.polar}}getCenter(t,e){const r=this.paint.get(\"sky-type\");if(\"atmosphere\"===r){const r=this.paint.get(\"sky-atmosphere-sun\"),n=!r,i=t.style.light,s=i.properties.get(\"position\");return n&&\"viewport\"===i.properties.get(\"anchor\")&&pt(\"The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly.\"),n?ip(s.azimuthal,90-s.polar,e):ip(r[0],90-r[1],e)}if(\"gradient\"===r){const t=this.paint.get(\"sky-gradient-center\");return ip(t[0],90-t[1],e)}}is3D(){return !1}isSky(){return !0}markSkyboxValid(t){this._skyboxInvalidated=!1,this._lightPosition=t.style.light.properties.get(\"position\");}hasOffscreenPass(){return !0}getProgramIds(){const t=this.paint.get(\"sky-type\");return \"atmosphere\"===t?[\"skyboxCapture\",\"skybox\"]:\"gradient\"===t?[\"skyboxGradient\"]:null}}},{HTMLImageElement:ap,HTMLCanvasElement:op,HTMLVideoElement:lp,ImageData:up,ImageBitmap:cp}=a;class hp{constructor(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n);}update(t,e,r){const{width:n,height:i}=t,{context:s}=this,{gl:a}=s;if(a.bindTexture(a.TEXTURE_2D,this.texture),s.pixelStoreUnpackFlipY.set(!1),s.pixelStoreUnpack.set(1),s.pixelStoreUnpackPremultiplyAlpha.set(this.format===a.RGBA&&(!e||!1!==e.premultiply)),r||this.size&&this.size[0]===n&&this.size[1]===i){const{x:e,y:s}=r||{x:0,y:0};t instanceof ap||t instanceof op||t instanceof lp||t instanceof up||cp&&t instanceof cp?a.texSubImage2D(a.TEXTURE_2D,0,e,s,a.RGBA,a.UNSIGNED_BYTE,t):a.texSubImage2D(a.TEXTURE_2D,0,e,s,n,i,a.RGBA,a.UNSIGNED_BYTE,t.data);}else this.size=[n,i],t instanceof ap||t instanceof op||t instanceof lp||t instanceof up||cp&&t instanceof cp?a.texImage2D(a.TEXTURE_2D,0,this.format,this.format,a.UNSIGNED_BYTE,t):a.texImage2D(a.TEXTURE_2D,0,this.format,n,i,0,this.format,a.UNSIGNED_BYTE,t.data);this.useMipmap=Boolean(e&&e.useMipmap&&this.isSizePowerOfTwo()),this.useMipmap&&a.generateMipmap(a.TEXTURE_2D);}bind(t,e){const{context:r}=this,{gl:n}=r;n.bindTexture(n.TEXTURE_2D,this.texture),t!==this.filter&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,this.useMipmap?t===n.NEAREST?n.NEAREST_MIPMAP_NEAREST:n.LINEAR_MIPMAP_NEAREST:t),this.filter=t),e!==this.wrap&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,e),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,e),this.wrap=e);}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null;}}class pp{constructor(t,e){this.width=t,this.height=e,this.nextRow=0,this.image=new zl({width:t,height:e}),this.positions={},this.uploaded=!1;}getDash(t,e){const r=this.getKey(t,e);return this.positions[r]}trim(){const t=this.width,e=this.height=it(this.nextRow);this.image.resize({width:t,height:e});}getKey(t,e){return t.join(\",\")+e}getDashRanges(t,e,r){const n=[];let i=t.length%2==1?-t[t.length-1]*r:0,s=t[0]*r,a=!0;n.push({left:i,right:s,isDash:a,zeroLength:0===t[0]});let o=t[0];for(let e=1;e<t.length;e++){a=!a;const l=t[e];i=o*r,o+=l,s=o*r,n.push({left:i,right:s,isDash:a,zeroLength:0===l});}return n}addRoundDash(t,e,r){const n=e/2;for(let e=-r;e<=r;e++){const i=this.width*(this.nextRow+r+e);let s=0,a=t[s];for(let o=0;o<this.width;o++){o/a.right>1&&(a=t[++s]);const l=Math.abs(o-a.left),u=Math.abs(o-a.right),c=Math.min(l,u);let h;const p=e/r*(n+1);if(a.isDash){const t=n-Math.abs(p);h=Math.sqrt(c*c+t*t);}else h=n-Math.sqrt(c*c+p*p);this.image.data[i+o]=Math.max(0,Math.min(255,h+128));}}}addRegularDash(t,e){for(let e=t.length-1;e>=0;--e){const r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1));}const r=t[0],n=t[t.length-1];r.isDash===n.isDash&&(r.left=n.left-this.width,n.right=r.right+this.width);const i=this.width*this.nextRow;let s=0,a=t[s];for(let r=0;r<this.width;r++){r/a.right>1&&(a=t[++s]);const n=Math.abs(r-a.left),o=Math.abs(r-a.right),l=Math.min(n,o);this.image.data[i+r]=Math.max(0,Math.min(255,(a.isDash?l:-l)+e+128));}}addDash(t,e){const r=this.getKey(t,e);if(this.positions[r])return this.positions[r];const n=\"round\"===e,i=n?7:0,s=2*i+1;if(this.nextRow+s>this.height)return pt(\"LineAtlas out of space\"),null;0===t.length&&t.push(1);let a=0;for(let e=0;e<t.length;e++)t[e]<0&&(pt(\"Negative value is found in line dasharray, replacing values with 0\"),t[e]=0),a+=t[e];if(0!==a){const r=this.width/a,s=this.getDashRanges(t,this.width,r);n?this.addRoundDash(s,r,i):this.addRegularDash(s,\"square\"===e?.5*r:0);}const o=this.nextRow+i;this.nextRow+=s;const l={tl:[o,i],br:[a,0]};return this.positions[r]=l,l}}Zi(\"LineAtlas\",pp);class dp{constructor(t){this._callback=t,this._triggered=!1,\"undefined\"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback();}),0));}remove(){delete this._channel,this._callback=()=>{};}}const fp=a.performance;function yp(t){const e=t?t.url.toString():void 0;return fp.getEntriesByName(e)}class mp{constructor(){this.tasks={},this.taskQueue=[],at([\"process\"],this),this.invoker=new dp(this.process),this.nextId=0;}add(t,e){const r=this.nextId++,n=function({type:t,isSymbolTile:e,zoom:r}){return r=r||0,\"message\"===t?0:\"maybePrepare\"!==t||e?\"parseTile\"!==t||e?\"parseTile\"===t&&e?300-r:\"maybePrepare\"===t&&e?400-r:500:200-r:100-r}(e);if(0===n){yt();try{t();}finally{}return {cancel:()=>{}}}return this.tasks[r]={fn:t,metadata:e,priority:n,id:r},this.taskQueue.push(r),this.invoker.trigger(),{cancel:()=>{delete this.tasks[r];}}}process(){yt();try{if(this.taskQueue=this.taskQueue.filter((t=>!!this.tasks[t])),!this.taskQueue.length)return;const t=this.pick();if(null===t)return;const e=this.tasks[t];if(delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),!e)return;e.fn();}finally{}}pick(){let t=null,e=1/0;for(let r=0;r<this.taskQueue.length;r++){const n=this.tasks[this.taskQueue[r]];n.priority<e&&(e=n.priority,t=r);}if(null===t)return null;const r=this.taskQueue[t];return this.taskQueue.splice(t,1),r}remove(){this.invoker.remove();}}function gp(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class xp{constructor(t,e,r){this.z=t,this.x=e,this.y=r,this.key=wp(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e){const r=function(t,e,r){var n=gp(256*t,256*(e=Math.pow(2,r)-e-1),r),i=gp(256*(t+1),256*(e+1),r);return n[0]+\",\"+n[1]+\",\"+i[0]+\",\"+i[1]}(this.x,this.y,this.z),n=function(t,e,r){let n,i=\"\";for(let s=t;s>0;s--)n=1<<s-1,i+=(e&n?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(this.z)).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===e?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",n).replace(\"{bbox-epsg-3857}\",r)}toString(){return `${this.z}/${this.x}/${this.y}`}}class vp{constructor(t,e){this.wrap=t,this.canonical=e,this.key=wp(t,e.z,e.z,e.x,e.y);}}class bp{constructor(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=new xp(r,+n,+i),this.key=0===e&&t===r?this.canonical.key:wp(e,t,r,n,i);}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){const e=this.canonical.z-t;return t>this.canonical.z?new bp(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new bp(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e=!0){if(this.overscaledZ===t&&e)return this.key;if(t>this.canonical.z)return wp(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y);{const r=this.canonical.z-t;return wp(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}}isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new bp(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new bp(e,this.wrap,e,r,n),new bp(e,this.wrap,e,r+1,n),new bp(e,this.wrap,e,r,n+1),new bp(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))}wrapped(){return new bp(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new bp(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new vp(this.wrap,this.canonical)}toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}}function wp(t,e,r,n,i){const s=1<<Math.min(r,22);let a=s*(i%s)+n%s;return t&&r<22&&(a+=s*s*((t<0?-2*t-1:2*t)%(1<<2*(22-r)))),16*(32*a+r)+(e-r)}Zi(\"CanonicalTileID\",xp),Zi(\"OverscaledTileID\",bp,{omit:[\"projMatrix\"]});class _p{constructor(t,e,r){this.func=t,this.mask=e,this.range=r;}}_p.ReadOnly=!1,_p.ReadWrite=!0,_p.disabled=new _p(519,_p.ReadOnly,[0,1]);const Ap=7680;class kp{constructor(t,e,r,n,i,s){this.test=t,this.ref=e,this.mask=r,this.fail=n,this.depthFail=i,this.pass=s;}}kp.disabled=new kp({func:519,mask:0},0,0,Ap,Ap,Ap);class Sp{constructor(t,e,r){this.blendFunction=t,this.blendColor=e,this.mask=r;}}Sp.Replace=[1,0],Sp.disabled=new Sp(Sp.Replace,Ge.transparent,[!1,!1,!1,!1]),Sp.unblended=new Sp(Sp.Replace,Ge.transparent,[!0,!0,!0,!0]),Sp.alphaBlended=new Sp([1,771],Ge.transparent,[!0,!0,!0,!0]);const Ip=1029,zp=2305;class Mp{constructor(t,e,r){this.enable=t,this.mode=e,this.frontFace=r;}}Mp.disabled=new Mp(!1,Ip,zp),Mp.backCCW=new Mp(!0,Ip,zp),Mp.backCW=new Mp(!0,Ip,2304),Mp.frontCW=new Mp(!0,1028,2304),Mp.frontCCW=new Mp(!0,1028,zp);class Tp{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e<t.length;e++){const r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}}encode(t){return this._stringToNumber[t]}decode(t){return this._numberToString[t]}}class Bp{constructor(t,e,r,n,i){this.type=\"Feature\",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,this.id=i;}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={geometry:this.geometry};for(const e in this)\"_geometry\"!==e&&\"_vectorTileFeature\"!==e&&(t[e]=this[e]);return t}}class Cp{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(t,e,r){const n=String(e);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][n]=this.stateChanges[t][n]||{},tt(this.stateChanges[t][n],r),null===this.deletedStates[t]){this.deletedStates[t]={};for(const e in this.state[t])e!==n&&(this.deletedStates[t][e]=null);}else if(this.deletedStates[t]&&null===this.deletedStates[t][n]){this.deletedStates[t][n]={};for(const e in this.state[t][n])r[e]||(this.deletedStates[t][n][e]=null);}else for(const e in r)this.deletedStates[t]&&this.deletedStates[t][n]&&null===this.deletedStates[t][n][e]&&delete this.deletedStates[t][n][e];}removeFeatureState(t,e,r){if(null===this.deletedStates[t])return;const n=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},r&&void 0!==e)null!==this.deletedStates[t][n]&&(this.deletedStates[t][n]=this.deletedStates[t][n]||{},this.deletedStates[t][n][r]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][n])for(r in this.deletedStates[t][n]={},this.stateChanges[t][n])this.deletedStates[t][n][r]=null;else this.deletedStates[t][n]=null;else this.deletedStates[t]=null;}getState(t,e){const r=String(e),n=tt({},(this.state[t]||{})[r],(this.stateChanges[t]||{})[r]);if(null===this.deletedStates[t])return {};if(this.deletedStates[t]){const r=this.deletedStates[t][e];if(null===r)return {};for(const t in r)delete n[t];}return n}initializeTileState(t,e){t.setFeatureState(this.state,e);}coalesceChanges(t,e){const r={};for(const t in this.stateChanges){this.state[t]=this.state[t]||{};const e={};for(const r in this.stateChanges[t])this.state[t][r]||(this.state[t][r]={}),tt(this.state[t][r],this.stateChanges[t][r]),e[r]=this.state[t][r];r[t]=e;}for(const t in this.deletedStates){this.state[t]=this.state[t]||{};const e={};if(null===this.deletedStates[t])for(const r in this.state[t])e[r]={},this.state[t][r]={};else for(const r in this.deletedStates[t]){if(null===this.deletedStates[t][r])this.state[t][r]={};else for(const e of Object.keys(this.deletedStates[t][r]))delete this.state[t][r][e];e[r]=this.state[t][r];}r[t]=r[t]||{},tt(r[t],e);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(r).length)for(const n in t)t[n].setFeatureState(r,e);}}class Pp{constructor(t){this.size=t,this.minimums=[],this.maximums=[],this.leaves=[];}getElevation(t,e){const r=this.toIdx(t,e);return {min:this.minimums[r],max:this.maximums[r]}}isLeaf(t,e){return this.leaves[this.toIdx(t,e)]}toIdx(t,e){return e*this.size+t}}function Ep(t,e,r,n){let i=0,s=Number.MAX_VALUE;for(let a=0;a<3;a++)if(Math.abs(n[a])<1e-15){if(r[a]<t[a]||r[a]>e[a])return null}else {const o=1/n[a];let l=(t[a]-r[a])*o,u=(e[a]-r[a])*o;if(l>u){const t=l;l=u,u=t;}if(l>i&&(i=l),u<s&&(s=u),i>s)return null}return i}function Dp(t,e,r,n,i,s,a,o,l,u,c){const h=n-t,p=i-e,d=s-r,f=a-t,y=o-e,m=l-r,g=c[1]*m-c[2]*y,x=c[2]*f-c[0]*m,v=c[0]*y-c[1]*f,b=h*g+p*x+d*v;if(Math.abs(b)<1e-15)return null;const w=1/b,_=u[0]-t,A=u[1]-e,k=u[2]-r,S=(_*g+A*x+k*v)*w;if(S<0||S>1)return null;const I=A*d-k*p,z=k*h-_*d,M=_*p-A*h,T=(c[0]*I+c[1]*z+c[2]*M)*w;return T<0||S+T>1?null:(f*I+y*z+m*M)*w}function Vp(t,e,r){return (t-e)/(r-e)}function Fp(t,e,r,n,i,s,a,o,l){const u=1<<r,c=s-n,h=a-i,p=(t+1)/u*c+n,d=(e+0)/u*h+i,f=(e+1)/u*h+i;o[0]=(t+0)/u*c+n,o[1]=d,l[0]=p,l[1]=f;}class Lp{constructor(t){if(this.maximums=[],this.minimums=[],this.leaves=[],this.childOffsets=[],this.nodeCount=0,this.dem=t,this._siblingOffset=[[0,0],[1,0],[0,1],[1,1]],!this.dem)return;const e=function(t){const e=Math.ceil(Math.log2(t.dim/8)),r=[];let n=Math.ceil(Math.pow(2,e));const i=1/n,s=(t,e,r,n,i)=>{const s=n?1:0,a=(t+1)*r-s,o=e*r,l=(e+1)*r-s;i[0]=t*r,i[1]=o,i[2]=a,i[3]=l;};let a=new Pp(n);const o=[];for(let e=0;e<n*n;e++){s(e%n,Math.floor(e/n),i,!1,o);const r=Up(o[0],o[1],t),l=Up(o[2],o[1],t),u=Up(o[2],o[3],t),c=Up(o[0],o[3],t);a.minimums.push(Math.min(r,l,u,c)),a.maximums.push(Math.max(r,l,u,c)),a.leaves.push(1);}for(r.push(a),n/=2;n>=1;n/=2){const t=r[r.length-1];a=new Pp(n);for(let e=0;e<n*n;e++){s(e%n,Math.floor(e/n),2,!0,o);const r=t.getElevation(o[0],o[1]),i=t.getElevation(o[2],o[1]),l=t.getElevation(o[2],o[3]),u=t.getElevation(o[0],o[3]),c=t.isLeaf(o[0],o[1]),h=t.isLeaf(o[2],o[1]),p=t.isLeaf(o[2],o[3]),d=t.isLeaf(o[0],o[3]),f=Math.min(r.min,i.min,l.min,u.min),y=Math.max(r.max,i.max,l.max,u.max),m=c&&h&&p&&d;a.maximums.push(y),a.minimums.push(f),a.leaves.push(y-f<=5&&m?1:0);}r.push(a);}return r}(this.dem),r=e.length-1,n=e[r];this._addNode(n.minimums[0],n.maximums[0],n.leaves[0]),this._construct(e,0,0,r,0);}raycastRoot(t,e,r,n,i,s,a=1){return Ep([t,e,-100],[r,n,this.maximums[0]*a],i,s)}raycast(t,e,r,n,i,s,a=1){if(!this.nodeCount)return null;const o=this.raycastRoot(t,e,r,n,i,s,a);if(null==o)return null;const l=[],u=[],c=[],h=[],p=[{idx:0,t:o,nodex:0,nodey:0,depth:0}];for(;p.length>0;){const{idx:o,t:d,nodex:f,nodey:y,depth:m}=p.pop();if(this.leaves[o]){Fp(f,y,m,t,e,r,n,c,h);const o=1<<m,l=(f+0)/o,u=(f+1)/o,p=(y+0)/o,g=(y+1)/o,x=Up(l,p,this.dem)*a,v=Up(u,p,this.dem)*a,b=Up(u,g,this.dem)*a,w=Up(l,g,this.dem)*a,_=Dp(c[0],c[1],x,h[0],c[1],v,h[0],h[1],b,i,s),A=Dp(h[0],h[1],b,c[0],h[1],w,c[0],c[1],x,i,s),k=Math.min(null!==_?_:Number.MAX_VALUE,null!==A?A:Number.MAX_VALUE);if(k!==Number.MAX_VALUE)return k;{const t=I([],i,s,d);if(Rp(x,v,w,b,Vp(t[0],c[0],h[0]),Vp(t[1],c[1],h[1]))>=t[2])return d}continue}let g=0;for(let p=0;p<this._siblingOffset.length;p++){Fp((f<<1)+this._siblingOffset[p][0],(y<<1)+this._siblingOffset[p][1],m+1,t,e,r,n,c,h),c[2]=-100,h[2]=this.maximums[this.childOffsets[o]+p]*a;const d=Ep(c,h,i,s);if(null!=d){const t=d;l[p]=t;let e=!1;for(let r=0;r<g&&!e;r++)t>=l[u[r]]&&(u.splice(r,0,p),e=!0);e||(u[g]=p),g++;}}for(let t=0;t<g;t++){const e=u[t];p.push({idx:this.childOffsets[o]+e,t:l[e],nodex:(f<<1)+this._siblingOffset[e][0],nodey:(y<<1)+this._siblingOffset[e][1],depth:m+1});}}return null}_addNode(t,e,r){return this.minimums.push(t),this.maximums.push(e),this.leaves.push(r),this.childOffsets.push(0),this.nodeCount++}_construct(t,e,r,n,i){if(1===t[n].isLeaf(e,r))return;this.childOffsets[i]||(this.childOffsets[i]=this.nodeCount);const s=n-1,a=t[s];let o,l=0;for(let t=0;t<this._siblingOffset.length;t++){const n=2*e+this._siblingOffset[t][0],i=2*r+this._siblingOffset[t][1],s=a.getElevation(n,i),u=a.isLeaf(n,i),c=this._addNode(s.min,s.max,u);u&&(l|=1<<t),o||(o=c);}for(let n=0;n<this._siblingOffset.length;n++)l&1<<n||this._construct(t,2*e+this._siblingOffset[n][0],2*r+this._siblingOffset[n][1],s,o+n);}}function Rp(t,e,r,n,i,s){return Lr(Lr(t,r,s),Lr(e,n,s),i)}function Up(t,e,r){const n=r.dim,i=Y(t*n-.5,0,n-1),s=Y(e*n-.5,0,n-1),a=Math.floor(i),o=Math.floor(s),l=Math.min(a+1,n-1),u=Math.min(o+1,n-1);return Rp(r.get(a,o),r.get(l,o),r.get(a,u),r.get(l,u),i-a,s-o)}const $p={mapbox:[6553.6,25.6,.1,1e4],terrarium:[256,1,1/256,32768]};class Op{get tree(){return this._tree||this._buildQuadTree(),this._tree}constructor(t,e,r,n=!1,i=!1){if(this.uid=t,e.height!==e.width)throw new RangeError(\"DEM tiles must be square\");if(r&&\"mapbox\"!==r&&\"terrarium\"!==r)return pt(`\"${r}\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".`);this.stride=e.height;const s=this.dim=e.height-2;if(this.data=new Uint32Array(e.data.buffer),this.encoding=r||\"mapbox\",this.borderReady=n,!n){for(let t=0;t<s;t++)this.data[this._idx(-1,t)]=this.data[this._idx(0,t)],this.data[this._idx(s,t)]=this.data[this._idx(s-1,t)],this.data[this._idx(t,-1)]=this.data[this._idx(t,0)],this.data[this._idx(t,s)]=this.data[this._idx(t,s-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(s,-1)]=this.data[this._idx(s-1,0)],this.data[this._idx(-1,s)]=this.data[this._idx(0,s-1)],this.data[this._idx(s,s)]=this.data[this._idx(s-1,s-1)],i&&this._buildQuadTree();}}_buildQuadTree(){this._tree=new Lp(this);}get(t,e,r=!1){const n=new Uint8Array(this.data.buffer);r&&(t=Y(t,-1,this.dim),e=Y(e,-1,this.dim));const i=4*this._idx(t,e);return (\"terrarium\"===this.encoding?this._unpackTerrarium:this._unpackMapbox)(n[i],n[i+1],n[i+2])}static getUnpackVector(t){return $p[t]}get unpackVector(){return $p[this.encoding]}_idx(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)}_unpackMapbox(t,e,r){return (256*t*256+256*e+r)/10-1e4}_unpackTerrarium(t,e,r){return 256*t+e+r/256-32768}static pack(t,e){const r=[0,0,0,0],n=Op.getUnpackVector(e);let i=Math.floor((t+n[3])/n[2]);return r[2]=i%256,i=Math.floor(i/256),r[1]=i%256,i=Math.floor(i/256),r[0]=i,r}getPixels(){return new Ml({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");let n=e*this.dim,i=e*this.dim+this.dim,s=r*this.dim,a=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:s=a-1;break;case 1:a=s+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=s;e<a;e++)for(let r=n;r<i;r++)this.data[this._idx(r,e)]=t.data[this._idx(r+o,e+l)];}onDeserialize(){this._tree&&(this._tree.dem=this);}}Zi(\"DEMData\",Op),Zi(\"DemMinMaxQuadTree\",Lp,{omit:[\"dem\"]});class jp{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,r){const n=t.wrapped().key;void 0===this.data[n]&&(this.data[n]=[]);const i={value:e,timeout:void 0};if(void 0!==r&&(i.timeout=setTimeout((()=>{this.remove(t,i);}),r)),this.data[n].push(i),this.order.push(n),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const r in this.data)for(const n of this.data[r])t(n.value)||e.push(n);for(const t of e)this.remove(t.value.tileID,t);}}class qp extends xe{constructor(t,e,r){super(),this.id=t,this._onlySymbols=r,e.on(\"data\",(t=>{\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform));})),e.on(\"error\",(()=>{this._sourceErrored=!0;})),this._source=e,this._tiles={},this._cache=new jp(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=null,this._maxTileCacheSize=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Cp;}onAdd(t){this.map=t,this._minTileCacheSize=t?t._minTileCacheSize:null,this._maxTileCacheSize=t?t._maxTileCacheSize:null;}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;for(const t in this._tiles){const e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform);}_loadTile(t,e){return t.isSymbolTile=this._onlySymbols,this._source.loadTile(t,e)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(t){if(this._source.abortTile)return this._source.abortTile(t,(()=>{}))}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const e in this._tiles){const r=this._tiles[e];r.upload(t),r.prepare(this.map.style.imageManager);}}getIds(){return Q(this._tiles).map((t=>t.tileID)).sort(Np).map((t=>t.key))}getRenderableIds(t){const e=[];for(const r in this._tiles)this._isIdRenderable(+r,t)&&e.push(this._tiles[r]);return t?e.sort(((t,e)=>{const r=t.tileID,n=e.tileID,s=new i(r.canonical.x,r.canonical.y)._rotate(this.transform.angle),a=new i(n.canonical.x,n.canonical.y)._rotate(this.transform.angle);return r.overscaledZ-n.overscaledZ||a.y-s.y||a.x-s.x})).map((t=>t.tileID.key)):e.map((t=>t.tileID)).sort(Np).map((t=>t.key))}hasRenderableParent(t){const e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)\"errored\"!==this._tiles[t].state&&this._reloadTile(+t,\"reloading\");}}_reloadTile(t,e){const r=this._tiles[t];r&&(\"loading\"!==r.state&&(r.state=e),this._loadTile(r,this._tileLoaded.bind(this,r,t,e)));}_tileLoaded(t,e,r,n){if(n)if(t.state=\"errored\",404!==n.status)this._source.fire(new ge(n,{tile:t}));else if(\"raster-dem\"===this._source.type&&this.usedForTerrain&&this.map.painter.terrain){const t=this.map.painter.terrain;this.update(this.transform,t.getScaledDemTileSize(),!0),t.resetTileLookupCache(this.id);}else this.update(this.transform);else t.timeAdded=At.now(),\"expired\"===r&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(e,t),\"raster-dem\"===this._source.type&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),this._source.fire(new me(\"data\",{dataType:\"source\",tile:t,coord:t.tileID,sourceCacheId:this.id}));}_backfillDEM(t){const e=this.getRenderableIds();for(let n=0;n<e.length;n++){const i=e[n];if(t.neighboringTiles&&t.neighboringTiles[i]){const e=this.getTileByID(i);r(t,e),r(e,t);}}function r(t,e){if(!t.dem||t.dem.borderReady)return;t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0;let r=e.tileID.canonical.x-t.tileID.canonical.x;const n=e.tileID.canonical.y-t.tileID.canonical.y,i=Math.pow(2,t.tileID.canonical.z),s=e.tileID.key;0===r&&0===n||Math.abs(n)>1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[s]&&(t.neighboringTiles[s].backfilled=!0)));}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,r,n){for(const i in this._tiles){let s=this._tiles[i];if(n[i]||!s.hasData()||s.tileID.overscaledZ<=e||s.tileID.overscaledZ>r)continue;let a=s.tileID;for(;s&&s.tileID.overscaledZ>e+1;){const t=s.tileID.scaledTo(s.tileID.overscaledZ-1);s=this._tiles[t.key],s&&s.hasData()&&(a=t);}let o=a;for(;o.overscaledZ>e;)if(o=o.scaledTo(o.overscaledZ-1),t[o.key]){n[a.key]=a;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){const r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(let r=t.overscaledZ-1;r>=e;r--){const e=t.scaledTo(r),n=this._getLoadedTile(e);if(n)return n}}_getLoadedTile(t){const e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(this._source.reparseOverscaled?t.wrapped().key:t.canonical.key)}updateCacheSize(t,e){e=e||this._source.tileSize;const r=Math.ceil(t.width/e)+1,n=Math.ceil(t.height/e)+1,i=Math.floor(r*n*5),s=\"number\"==typeof this._minTileCacheSize?Math.max(this._minTileCacheSize,i):i,a=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,s):s;this._cache.setMaxSize(a);}handleWrapJump(t){const e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){const t={};for(const r in this._tiles){const n=this._tiles[r];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),t[n.tileID.key]=n;}this._tiles=t;for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t in this._tiles)this._setTileReloadTimer(+t,this._tiles[t]);}}update(t,e,r){if(this.transform=t,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage)return;if(this.usedForTerrain&&!r)return;let n;this.updateCacheSize(t,e),\"globe\"!==this.transform.projection.name&&this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?n=t.getVisibleUnwrappedCoordinates(this._source.tileID).map((t=>new bp(t.canonical.z,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y))):(n=t.coveringTiles({tileSize:e||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!r,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain}),this._source.hasTile&&(n=n.filter((t=>this._source.hasTile(t))))):n=[];const i=this._updateRetainedTiles(n);if(Gp(this._source.type)&&0!==n.length){const t={},e={},r=Object.keys(i);for(const n of r){const r=i[n],s=this._tiles[n];if(!s||s.fadeEndTime&&s.fadeEndTime<=At.now())continue;const a=this.findLoadedParent(r,Math.max(r.overscaledZ-qp.maxOverzooming,this._source.minzoom));a&&(this._addTile(a.tileID),t[a.tileID.key]=a.tileID),e[n]=r;}const s=n[n.length-1].overscaledZ;for(const t in this._tiles){const r=this._tiles[t];if(i[t]||!r.hasData())continue;let n=r.tileID;for(;n.overscaledZ>s;){n=n.scaledTo(n.overscaledZ-1);const s=this._tiles[n.key];if(s&&s.hasData()&&e[n.key]){i[t]=r.tileID;break}}}for(const e in t)i[e]||(this._coveredTiles[e]=!0,i[e]=t[e]);}for(const t in i)this._tiles[t].clearFadeHold();const s=function(t,e){const r=[];for(const n in t)n in e||r.push(n);return r}(this._tiles,i);for(const t of s){const e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(+t);}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate();}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(+t);}_updateRetainedTiles(t){const e={};if(0===t.length)return e;const r={},n=t.reduce(((t,e)=>Math.min(t,e.overscaledZ)),1/0),i=t[0].overscaledZ,s=Math.max(i-qp.maxOverzooming,this._source.minzoom),a=Math.max(i+qp.maxUnderzooming,this._source.minzoom),o={};for(const r of t){const t=this._addTile(r);e[r.key]=r,t.hasData()||n<this._source.maxzoom&&(o[r.key]=r);}this._retainLoadedChildren(o,n,a,e);for(const n of t){let t=this._tiles[n.key];if(t.hasData())continue;if(n.canonical.z>=this._source.maxzoom){const t=n.children(this._source.maxzoom)[0],r=this.getTile(t);if(r&&r.hasData()){e[t.key]=t;continue}}else {const t=n.children(this._source.maxzoom);if(e[t[0].key]&&e[t[1].key]&&e[t[2].key]&&e[t[3].key])continue}let i=t.wasRequested();for(let a=n.overscaledZ-1;a>=s;--a){const s=n.scaledTo(a);if(r[s.key])break;if(r[s.key]=!0,t=this.getTile(s),!t&&i&&(t=this._addTile(s)),t&&(e[s.key]=s,i=t.wasRequested(),t.hasData()))break}}return e}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const e=[];let r,n=this._tiles[t].tileID;for(;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);const t=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(t),r)break;n=t;}for(const t of e)this._loadedParentTiles[t]=r;}}_addTile(t){let e=this._tiles[t.key];if(e)return e;e=this._cache.getAndRemove(t),e&&(this._setTileReloadTimer(t.key,e),e.tileID=t,this._state.initializeTileState(e,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,e)));const r=Boolean(e);if(!r){const r=this.map?this.map.painter:null,n=\"raster\"===this._source.type||\"raster-dem\"===this._source.type;e=new ad(t,this._source.tileSize*t.overscaleFactor(),this.transform.tileZoom,r,n),this._loadTile(e,this._tileLoaded.bind(this,e,t.key,e.state));}return e?(e.uses++,this._tiles[t.key]=e,r||this._source.fire(new me(\"dataloading\",{tile:e,coord:e.tileID,dataType:\"source\"})),e):null}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const r=e.getExpiryTimeout();r&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,\"expired\"),delete this._timers[t];}),r));}_removeTile(t){const e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(+t);this._source._clear&&this._source._clear(),this._cache.reset();}tilesIn(t,e,r){const n=[],i=this.transform;if(!i)return n;for(const s in this._tiles){const a=this._tiles[s];if(r&&a.clearQueryDebugViz(),a.holdingForFade())continue;const o=t.containsTile(a,i,e);o&&n.push(o);}return n}getVisibleCoordinates(t){const e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(const t of e)t.projMatrix=this.transform.calculateProjMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return !0;if(Gp(this._source.type))for(const t in this._tiles){const e=this._tiles[t];if(void 0!==e.fadeEndTime&&e.fadeEndTime>=At.now())return !0}return !1}setFeatureState(t,e,r){this._state.updateState(t=t||\"_geojsonTileLayer\",e,r);}removeFeatureState(t,e,r){this._state.removeFeatureState(t=t||\"_geojsonTileLayer\",e,r);}getFeatureState(t,e){return this._state.getState(t=t||\"_geojsonTileLayer\",e)}setDependencies(t,e,r){const n=this._tiles[t];n&&n.setDependencies(e,r);}reloadTilesForDependencies(t,e){for(const r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(+r,\"reloading\");this._cache.filter((r=>!r.hasDependency(t,e)));}_preloadTiles(t,e){const r=new Map,n=Array.isArray(t)?t:[t],i=this.map.painter.terrain,s=this.usedForTerrain&&i?i.getScaledDemTileSize():this._source.tileSize;for(const t of n){const e=t.coveringTiles({tileSize:s,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const t of e)r.set(t.key,t);this.usedForTerrain&&t.updateElevation(!1);}const a=Array.from(r.values()),o=\"raster\"===this._source.type||\"raster-dem\"===this._source.type;W(a,((t,e)=>{const r=new ad(t,this._source.tileSize*t.overscaleFactor(),this.transform.tileZoom,this.map.painter,o);this._loadTile(r,(t=>{\"raster-dem\"===this._source.type&&r.dem&&this._backfillDEM(r),e(t,r);}));}),e);}}function Np(t,e){const r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Gp(t){return \"raster\"===t||\"image\"===t||\"video\"===t}qp.maxOverzooming=10,qp.maxUnderzooming=3;class Zp{constructor(t,e,r){this._demTile=t,this._dem=this._demTile.dem,this._scale=e,this._offset=r;}static create(t,e,r){const n=r||t.findDEMTileFor(e);if(!n||!n.dem)return;const i=n.dem,s=n.tileID,a=1<<e.canonical.z-s.canonical.z;return new Zp(n,n.tileSize/To/a,[(e.canonical.x/a-s.canonical.x)*i.dim,(e.canonical.y/a-s.canonical.y)*i.dim])}tileCoordToPixel(t,e){const r=e*this._scale+this._offset[1],n=Math.floor(t*this._scale+this._offset[0]),s=Math.floor(r);return new i(n,s)}getElevationAt(t,e,r,n){const i=t*this._scale+this._offset[0],s=e*this._scale+this._offset[1],a=Math.floor(i),o=Math.floor(s),l=this._dem;return n=!!n,r?Lr(Lr(l.get(a,o,n),l.get(a,o+1,n),s-o),Lr(l.get(a+1,o,n),l.get(a+1,o+1,n),s-o),i-a):l.get(a,o,n)}getElevationAtPixel(t,e,r){return this._dem.get(t,e,!!r)}getMeterToDEM(t){return (1<<this._demTile.tileID.canonical.z)*Lo(1,t)*this._dem.stride}}class Xp{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new Oi(To,16,0),this.featureIndexArray=new Na,this.promoteId=e;}insert(t,e,r,n,i,s=0){const a=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i,s);const o=this.grid;for(let t=0;t<e.length;t++){const r=e[t],n=[1/0,1/0,-1/0,-1/0];for(let t=0;t<r.length;t++){const e=r[t];n[0]=Math.min(n[0],e.x),n[1]=Math.min(n[1],e.y),n[2]=Math.max(n[2],e.x),n[3]=Math.max(n[3],e.y);}n[0]<To&&n[1]<To&&n[2]>=0&&n[3]>=0&&o.insert(a,n[0],n[1],n[2],n[3]);}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new Bu.VectorTile(new gc(this.rawTileData)).layers,this.sourceLayerCoder=new Tp(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"]),this.vtFeatures={};for(const t in this.vtLayers)this.vtFeatures[t]=[];}return this.vtLayers}query(t,e,r,n){this.loadVTLayers();const i=t.params||{},s=si(i.filter),a=t.tileResult,o=t.transform,l=a.bufferedTilespaceBounds,u=this.grid.query(l.min.x,l.min.y,l.max.x,l.max.y,((t,e,r,n)=>ll(a.bufferedTilespaceGeometry,t,e,r,n)));u.sort(Yp);let c=null;o.elevation&&u.length>0&&(c=Zp.create(o.elevation,this.tileID));const h={};let p;for(let o=0;o<u.length;o++){const l=u[o];if(l===p)continue;p=l;const d=this.featureIndexArray.get(l);let f=null;this.loadMatchingFeature(h,d,s,i.layers,i.availableImages,e,r,n,((e,r,n,i=0)=>(f||(f=Ko(e,this.tileID.canonical,t.tileTransform)),r.queryIntersectsFeature(a,e,n,f,this.z,t.transform,t.pixelPosMatrix,c,i))));}return h}loadMatchingFeature(t,e,r,n,i,s,a,o,l){const{featureIndex:u,bucketIndex:c,sourceLayerIndex:h,layoutVertexArrayOffset:p}=e,d=this.bucketLayerIDs[c];if(n&&!function(t,e){for(let r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(n,d))return;const f=this.sourceLayerCoder.decode(h),y=this.vtLayers[f].feature(u);if(r.needGeometry){const t=Yo(y,!0);if(!r.filter(new Gs(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!r.filter(new Gs(this.tileID.overscaledZ),y))return;const m=this.getId(y,f);for(let e=0;e<d.length;e++){const r=d[e];if(n&&n.indexOf(r)<0)continue;const c=s[r];if(!c)continue;let h={};void 0!==m&&o&&(h=o.getState(c.sourceLayer||\"_geojsonTileLayer\",m));const f=tt({},a[r]);f.paint=Kp(f.paint,c.paint,y,h,i),f.layout=Kp(f.layout,c.layout,y,h,i);const g=!l||l(y,c,h,p);if(!g)continue;const x=new Bp(y,this.z,this.x,this.y,m);x.layer=f;let v=t[r];void 0===v&&(v=t[r]=[]),v.push({featureIndex:u,feature:x,intersectionZ:g});}}lookupSymbolFeatures(t,e,r,n,i,s,a,o){const l={};this.loadVTLayers();const u=si(i);for(const i of t)this.loadMatchingFeature(l,{bucketIndex:r,sourceLayerIndex:n,featureIndex:i,layoutVertexArrayOffset:0},u,s,a,o,e);return l}loadFeature(t){const{featureIndex:e,sourceLayerIndex:r}=t;this.loadVTLayers();const n=this.sourceLayerCoder.decode(r),i=this.vtFeatures[n];if(i[e])return i[e];const s=this.vtLayers[n].feature(e);return i[e]=s,s}hasLayer(t){for(const e of this.bucketLayerIDs)for(const r of e)if(t===r)return !0;return !1}getId(t,e){let r=t.id;return this.promoteId&&(r=t.properties[\"string\"==typeof this.promoteId?this.promoteId:this.promoteId[e]],\"boolean\"==typeof r&&(r=Number(r))),r}}function Kp(t,e,r,n,i){return lt(t,((t,s)=>{const a=e instanceof Qs?e.get(s):null;return a&&a.evaluate?a.evaluate(r,n,i):a}))}function Yp(t,e){return e-t}Zi(\"FeatureIndex\",Xp,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});var Hp=ca([{name:\"a_pos\",type:\"Int16\",components:2}]);const Jp=32,Wp=33,Qp=new Uint16Array(8184);for(let t=0;t<2046;t++){let e=t+2,r=0,n=0,i=0,s=0,a=0,o=0;for(1&e?i=s=a=Jp:r=n=o=Jp;(e>>=1)>1;){const t=r+i>>1,l=n+s>>1;1&e?(i=r,s=n,r=a,n=o):(r=i,n=s,i=a,s=o),a=t,o=l;}const l=4*t;Qp[l+0]=r,Qp[l+1]=n,Qp[l+2]=i,Qp[l+3]=s;}const td=new Uint16Array(2178),ed=new Uint8Array(1089),rd=new Uint16Array(1089);function nd(t){return 0===t?-.03125:32===t?.03125:0}var id=ca([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);const sd={type:2,extent:To,loadGeometry:()=>[[new i(0,0),new i(8193,0),new i(8193,8193),new i(0,8193),new i(0,0)]]};class ad{constructor(t,e,r,n,i){this.tileID=t,this.uid=rt(),this.uses=0,this.tileSize=e,this.tileZoom=r,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=i,this.expiredRequestCount=0,this.state=\"loading\",n&&n.transform&&(this.projection=n.transform.projection);}registerFadeDuration(t){const e=t+this.timeAdded;e<At.now()||this.fadeEndTime&&e<this.fadeEndTime||(this.fadeEndTime=e);}wasRequested(){return \"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state}get tileTransform(){return this._tileTransform||(this._tileTransform=Ad(this.tileID.canonical,this.projection)),this._tileTransform}loadVectorData(t,e,r){if(this.unloadVectorData(),this.state=\"loaded\",t){t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(t,e){const r={};if(!e)return r;for(const n of t){const t=n.layerIds.map((t=>e.getLayer(t))).filter(Boolean);if(0!==t.length){n.layers=t,n.stateDependentLayerIds&&(n.stateDependentLayers=n.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(const e of t)r[e.id]=n;}}return r}(t.buckets,e.style),this.hasSymbolBuckets=!1;for(const t in this.buckets){const e=this.buckets[t];if(e instanceof Yh){if(this.hasSymbolBuckets=!0,!r)break;e.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const t in this.buckets){const e=this.buckets[t];if(e instanceof Yh&&e.hasRTLText){this.hasRTLText=!0,Ns.isLoading()||Ns.isLoaded()||\"deferred\"!==js()||qs();break}}this.queryPadding=0;for(const t in this.buckets){const r=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,e.style.getLayer(t).queryRadius(r));}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage),t.lineAtlas&&(this.lineAtlas=t.lineAtlas);}else this.collisionBoxArray=new Fa;}unloadVectorData(){if(this.hasData()){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugIndexBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this.globeGridBuffer&&(this.globeGridBuffer.destroy(),this.globeGridBuffer=null),this.globePoleBuffer&&(this.globePoleBuffer.destroy(),this.globePoleBuffer=null),this.latestFeatureIndex=null,this.state=\"unloaded\";}}getBucket(t){return this.buckets[t.id]}upload(t){for(const e in this.buckets){const r=this.buckets[e];r.uploadPending()&&r.upload(t);}const e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new hp(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new hp(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new hp(t,this.lineAtlas.image,e.ALPHA),this.lineAtlas.uploaded=!0);}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);}queryRenderedFeatures(t,e,r,n,i,s,a,o){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({tileResult:n,pixelPosMatrix:a,transform:s,params:i,tileTransform:this.tileTransform},t,e,r):{}}querySourceFeatures(t,e){const r=this.latestFeatureIndex;if(!r||!r.rawTileData)return;const n=r.loadVTLayers(),i=e?e.sourceLayer:\"\",s=n._geojsonTileLayer||n[i];if(!s)return;const a=si(e&&e.filter),{z:o,x:l,y:u}=this.tileID.canonical,c={z:o,x:l,y:u};for(let e=0;e<s.length;e++){const n=s.feature(e);if(a.needGeometry){const t=Yo(n,!0);if(!a.filter(new Gs(this.tileID.overscaledZ),t,this.tileID.canonical))continue}else if(!a.filter(new Gs(this.tileID.overscaledZ),n))continue;const h=r.getId(n,i),p=new Bp(n,o,l,u,h);p.tile=c,t.push(p);}}hasData(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(t){const e=this.expirationTime;if(t.cacheControl){const e=mt(t.cacheControl);e[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*e[\"max-age\"]);}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){const t=Date.now();let r=!1;if(this.expirationTime>t)r=!1;else if(e)if(this.expirationTime<e)r=!0;else {const n=this.expirationTime-e;n?this.expirationTime=t+Math.max(n,3e4):r=!0;}else r=!0;r?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0;}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(t,e){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(t).length||!e)return;const r=this.latestFeatureIndex.loadVTLayers(),n=e.style.listImages();for(const i in this.buckets){if(!e.style.hasLayer(i))continue;const s=this.buckets[i],a=s.layers[0].sourceLayer||\"_geojsonTileLayer\",o=r[a],l=t[a];if(!o||!l||0===Object.keys(l).length)continue;if(s.update(l,o,n,this.imageAtlas&&this.imageAtlas.patternPositions||{}),s instanceof Ku||s instanceof mu){const t=e.style._getSourceCache(s.layers[0].source);e._terrain&&e._terrain.enabled&&t&&s.programConfigurations.needsUpload&&e._terrain._clearRenderCacheForTile(t.id,this.tileID);}const u=e&&e.style&&e.style.getLayer(i);u&&(this.queryPadding=Math.max(this.queryPadding,u.queryRadius(s)));}}holdingForFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<At.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0;}setHoldDuration(t){this.symbolFadeHoldUntil=At.now()+t;}setDependencies(t,e){const r={};for(const t of e)r[t]=!0;this.dependencies[t]=r;}hasDependency(t,e){for(const r of t){const t=this.dependencies[r];if(t)for(const r of e)if(t[r])return !0}return !1}clearQueryDebugViz(){}_makeDebugTileBoundsBuffers(t,e){if(!e||\"mercator\"===e.name||this._tileDebugBuffer)return;const r=Ko(sd,this.tileID.canonical,this.tileTransform)[0],n=new pa,i=new Pa;for(let t=0;t<r.length;t++){const{x:e,y:s}=r[t];n.emplaceBack(e,s),i.emplaceBack(t);}i.emplaceBack(0),this._tileDebugIndexBuffer=t.createIndexBuffer(i),this._tileDebugBuffer=t.createVertexBuffer(n,id.members),this._tileDebugSegments=Mo.simpleSegment(0,0,n.length,i.length);}_makeTileBoundsBuffers(t,e){if(this._tileBoundsBuffer||!e||\"mercator\"===e.name)return;const r=Ko(sd,this.tileID.canonical,this.tileTransform)[0];let n,i;if(this.isRaster){const t=function(t,e){const r=Ad(t,e),n=Math.pow(2,t.z);for(let i=0;i<Wp;i++)for(let s=0;s<Wp;s++){const a=Ro((t.x+(s+nd(s))/Jp)/n),o=Uo((t.y+(i+nd(i))/Jp)/n),l=e.project(a,o),u=i*Wp+s;td[2*u+0]=Math.round((l.x*r.scale-r.x)*To),td[2*u+1]=Math.round((l.y*r.scale-r.y)*To);}ed.fill(0),rd.fill(0);for(let t=2045;t>=0;t--){const e=4*t,r=Qp[e+0],n=Qp[e+1],i=Qp[e+2],s=Qp[e+3],a=r+i>>1,o=n+s>>1,l=a+o-n,u=o+r-a,c=n*Wp+r,h=s*Wp+i,p=o*Wp+a,d=Math.hypot((td[2*c+0]+td[2*h+0])/2-td[2*p+0],(td[2*c+1]+td[2*h+1])/2-td[2*p+1])>=16;if(ed[p]=ed[p]||(d?1:0),t<1022){const t=(n+u>>1)*Wp+(r+l>>1),e=(s+u>>1)*Wp+(i+l>>1);ed[p]=ed[p]||ed[t]||ed[e];}}const i=new da,s=new ka;let a=0;function o(t,e){const r=e*Wp+t;return 0===rd[r]&&(i.emplaceBack(td[2*r+0],td[2*r+1],t*To/Jp,e*To/Jp),rd[r]=++a),rd[r]-1}function l(t,e,r,n,i,a){const u=t+r>>1,c=e+n>>1;if(Math.abs(t-i)+Math.abs(e-a)>1&&ed[c*Wp+u])l(i,a,t,e,u,c),l(r,n,i,a,u,c);else {const l=o(t,e),u=o(r,n),c=o(i,a);s.emplaceBack(l,u,c);}}return l(0,0,Jp,Jp,Jp,0),l(Jp,Jp,0,0,0,Jp),{vertices:i,indices:s}}(this.tileID.canonical,e);n=t.vertices,i=t.indices;}else {n=new da,i=new ka;for(const{x:t,y:e}of r)n.emplaceBack(t,e,0,0);const t=Dl(n.int16,void 0,4);for(let e=0;e<t.length;e+=3)i.emplaceBack(t[e],t[e+1],t[e+2]);}this._tileBoundsBuffer=t.createVertexBuffer(n,id.members),this._tileBoundsIndexBuffer=t.createIndexBuffer(i),this._tileBoundsSegments=Mo.simpleSegment(0,0,n.length,i.length);}}const od=ca([{type:\"Float32\",name:\"a_globe_pos\",components:3},{type:\"Float32\",name:\"a_merc_pos\",components:2},{type:\"Float32\",name:\"a_uv\",components:2}]),ld=ca([{type:\"Float32\",name:\"a_pos\",components:3},{type:\"Float32\",name:\"a_uv\",components:2}]),{members:ud}=od;function cd(t,e){const r=t.fovAboveCenter,n=t.elevation?t.elevation.getMinElevationBelowMSL()*e:0,i=(t._camera.position[2]*t.worldSize-n)/Math.cos(t._pitch),s=Math.sin(r)*i/Math.sin(Math.max(Math.PI/2-t._pitch-r,.01)),a=Math.sin(t._pitch)*s+i;return Math.min(1.01*a,i*(1/t._horizonShift))}const hd=To/Math.PI/2,pd=-hd,dd=hd,fd=[new gl([pd,pd,pd],[dd,dd,dd]),new gl([pd,pd,pd],[0,0,dd]),new gl([0,pd,pd],[dd,0,dd]),new gl([pd,0,pd],[0,dd,dd]),new gl([0,0,pd],[dd,dd,dd])];function yd(t){if(t.z<=1)return fd[t.z+2*t.y+t.x];const[e,r]=md(t),n=[xd(e[0],e[1]),xd(e[0],r[1]),xd(r[0],e[1]),xd(r[0],r[1])],i=[dd,dd,dd],s=[pd,pd,pd];for(const t of n)i[0]=Math.min(i[0],t[0]),i[1]=Math.min(i[1],t[1]),i[2]=Math.min(i[2],t[2]),s[0]=Math.max(s[0],t[0]),s[1]=Math.max(s[1],t[1]),s[2]=Math.max(s[2],t[2]);return new gl(i,s)}function md(t){const e=Math.pow(2,t.z),r=t.x/e,n=(t.x+1)/e,i=(t.y+1)/e;return [[Uo(t.y/e),Ro(r)],[Uo(i),Ro(n)]]}function gd(t,e,r,n){return r=q(r),n||(n=hd),[t*Math.sin(r)*n,-e*n,t*Math.cos(r)*n]}function xd(t,e,r){return gd(Math.cos(q(t)),Math.sin(q(t)),e,r)}function vd(t){return 16383/Math.max(...E([],t.max,t.min))}function bd(t){const e=c(new Float64Array(16)),r=1/vd(t);return p(e,e,t.min),d(e,e,[r,r,r]),e}function wd(t,e,r){const n=e/(2*Math.PI),i=function(t){const e=To/(2*Math.PI);return t/(2*Math.PI)/e}(e);if(!r){const n=Y(t.center.lat,-85.051129,Oo);r=[Vo(t.center.lng)*e,Fo(n)*e];}const s=c(new Float64Array(16));return p(s,s,[r[0],r[1],-n]),d(s,s,[i,i,i]),f(s,s,q(-t._center.lat)),y(s,s,q(-t._center.lng)),s}class _d{constructor(t){const e=this._createGridIndices();this.gridIndexBuffer=t.createIndexBuffer(e,!0),this.gridSegments=Mo.simpleSegment(0,0,4225,8192);const r=this._createPoleTriangleIndices();this.poleIndexBuffer=t.createIndexBuffer(r,!0),this.poleSegments=Mo.simpleSegment(0,0,66,64);const n=new Ta;n.emplaceBack(-1,1,1,0,0,0,0),n.emplaceBack(1,1,1,0,0,1,0),n.emplaceBack(1,-1,1,0,0,1,1),n.emplaceBack(-1,-1,1,0,0,0,1);const i=new ka;i.emplaceBack(0,1,2),i.emplaceBack(2,3,0),this.atmosphereVertexBuffer=t.createVertexBuffer(n,ld.members),this.atmosphereIndexBuffer=t.createIndexBuffer(i),this.atmosphereSegments=Mo.simpleSegment(0,0,4,2);}destroy(){this.poleIndexBuffer.destroy(),this.gridIndexBuffer.destroy(),this.poleSegments.destroy(),this.gridSegments.destroy(),this.atmosphereVertexBuffer.destroy(),this.atmosphereIndexBuffer.destroy(),this.atmosphereSegments.destroy(),this.wireframeIndexBuffer&&(this.wireframeIndexBuffer.destroy(),this.wireframeSegments.destroy());}static createPoleTriangleVertices(t,e,r){const n=new Ta,i=e/Math.PI/2;n.emplaceBack(0,-i,0,0,0,.5,r?0:1);const s=360/t,a=Math.cos(q(85)),o=Math.sin(q(85));for(let t=0;t<=64;t++){const e=t/64,u=gd(a,o,0*(1-(l=e))+s*l,i);n.emplaceBack(u[0],u[1],u[2],0,0,e,r?0:1);}var l;return n}_createPoleTriangleIndices(){const t=new ka;for(let e=0;e<=64;e++)t.emplaceBack(0,e+1,e+2);return t}static createGridVertices(t){const e=Math.pow(2,t.z),r=(t,e,r)=>t*(1-r)+e*r,[n,i]=md(t),s=new Ta,a=function(t){const e=c(new Float64Array(16)),r=vd(t);var n,i;return d(e,e,[r,r,r]),p(e,e,((n=[])[0]=-(i=t.min)[0],n[1]=-i[1],n[2]=-i[2],n)),e}(yd(t));s.reserve(4096);for(let o=0;o<65;o++){const l=r(n[0],i[0],o/64),u=Fo(l),c=u*e-t.y,h=Math.sin(q(l)),p=Math.cos(q(l));for(let t=0;t<65;t++){const e=t/64,o=r(n[1],i[1],e),l=gd(p,h,o);B(l,l,a);const d=Vo(o);s.emplaceBack(l[0],l[1],l[2],d,u,e,c);}}return s}_createGridIndices(){const t=new ka,e=(e,r)=>{const n=65*r+e;t.emplaceBack(n+1,n,n+65),t.emplaceBack(n+65,n+65+1,n+1);};for(let t=0;t<64;t++)for(let r=0;r<64;r++)e(r,t);return t}getWirefameBuffer(t){if(!this.wireframeSegments){const e=this._createWireframeGrid();this.wireframeIndexBuffer=t.createIndexBuffer(e),this.wireframeSegments=Mo.simpleSegment(0,0,4096,e.length);}return [this.wireframeIndexBuffer,this.wireframeSegments]}_createWireframeGrid(){const t=new Ca,e=(e,r)=>{const n=65*r+e;t.emplaceBack(n,n+1),t.emplaceBack(n,n+65),t.emplaceBack(n,n+65+1);};for(let t=0;t<64;t++)for(let r=0;r<64;r++)e(r,t);return t}}function Ad(t,e){if(!e.isReprojectedInTileSpace)return {scale:1<<t.z,x:t.x,y:t.y,x2:t.x+1,y2:t.y+1,projection:e};const r=Math.pow(2,-t.z),n=t.x*r,i=(t.x+1)*r,s=t.y*r,a=(t.y+1)*r,o=Ro(n),l=Ro(i),u=Uo(s),c=Uo(a),h=e.project(o,u),p=e.project(l,u),d=e.project(l,c),f=e.project(o,c);let y=Math.min(h.x,p.x,d.x,f.x),m=Math.min(h.y,p.y,d.y,f.y),g=Math.max(h.x,p.x,d.x,f.x),x=Math.max(h.y,p.y,d.y,f.y);const v=r/16;function b(t,r,n,i,s,a){const o=(n+s)/2,l=(i+a)/2,u=e.project(Ro(o),Uo(l)),c=Math.max(0,y-u.x,m-u.y,u.x-g,u.y-x);y=Math.min(y,u.x),g=Math.max(g,u.x),m=Math.min(m,u.y),x=Math.max(x,u.y),c>v&&(b(t,u,n,i,o,l),b(u,r,o,l,s,a));}b(h,p,n,s,i,s),b(p,d,i,s,i,a),b(d,f,i,a,n,a),b(f,h,n,a,n,s),y-=v,m-=v,g+=v,x+=v;const w=1/Math.max(g-y,x-m);return {scale:w,x:y*w,y:m*w,x2:g*w,y2:x*w,projection:e}}class kd{constructor(t){const e={},r=[];for(const n in t){const i=t[n],s=e[n]={};for(const t in i.glyphs){const e=i.glyphs[+t];if(!e||0===e.bitmap.width||0===e.bitmap.height)continue;const n=e.metrics.localGlyph?2:1,a={x:0,y:0,w:e.bitmap.width+2*n,h:e.bitmap.height+2*n};r.push(a),s[t]=a;}}const{w:n,h:i}=$c(r),s=new zl({width:n||1,height:i||1});for(const r in t){const n=t[r];for(const t in n.glyphs){const i=n.glyphs[+t];if(!i||0===i.bitmap.width||0===i.bitmap.height)continue;const a=e[r][t],o=i.metrics.localGlyph?2:1;zl.copy(i.bitmap,s,{x:0,y:0},{x:a.x+o,y:a.y+o},i.bitmap);}}this.image=s,this.positions=e;}}Zi(\"GlyphAtlas\",kd);class Sd{constructor(t){this.tileID=new bp(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.tileZoom=t.tileZoom,this.uid=t.uid,this.zoom=t.zoom,this.canonical=t.tileID.canonical,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.enableTerrain=!!t.enableTerrain,this.isSymbolTile=t.isSymbolTile,this.tileTransform=Ad(t.tileID.canonical,t.projection),this.projection=t.projection;}parse(t,e,r,n,i){this.status=\"parsing\",this.data=t,this.collisionBoxArray=new Fa;const s=new Tp(Object.keys(t.layers).sort()),a=new Xp(this.tileID,this.promoteId);a.bucketLayerIDs=[];const o={},l=new pp(256,256),u={featureIndex:a,iconDependencies:{},patternDependencies:{},glyphDependencies:{},lineAtlas:l,availableImages:r},c=e.familiesBySource[this.source];for(const e in c){const n=t.layers[e];if(!n)continue;let i=!1,l=!1;for(const t of c[e])\"symbol\"===t[0].type?i=!0:l=!0;if(!0===this.isSymbolTile&&!i)continue;if(!1===this.isSymbolTile&&!l)continue;1===n.version&&pt(`Vector tile source \"${this.source}\" layer \"${e}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);const h=s.encode(e),p=[];for(let t=0;t<n.length;t++){const r=n.feature(t),i=a.getId(r,e);p.push({feature:r,id:i,index:t,sourceLayerIndex:h});}for(const t of c[e]){const e=t[0];void 0!==this.isSymbolTile&&\"symbol\"===e.type!==this.isSymbolTile||e.minzoom&&this.zoom<Math.floor(e.minzoom)||e.maxzoom&&this.zoom>=e.maxzoom||\"none\"!==e.visibility&&(Id(t,this.zoom,r),(o[e.id]=e.createBucket({index:a.bucketLayerIDs.length,layers:t,zoom:this.zoom,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:h,sourceID:this.source,enableTerrain:this.enableTerrain,availableImages:r})).populate(p,u,this.tileID.canonical,this.tileTransform),a.bucketLayerIDs.push(t.map((t=>t.id))));}}let h,p,d,f;l.trim();const y={type:\"maybePrepare\",isSymbolTile:this.isSymbolTile,zoom:this.zoom},m=lt(u.glyphDependencies,(t=>Object.keys(t).map(Number)));Object.keys(m).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:m},((t,e)=>{h||(h=t,p=e,v.call(this));}),void 0,!1,y):p={};const g=Object.keys(u.iconDependencies);g.length?n.send(\"getImages\",{icons:g,source:this.source,tileID:this.tileID,type:\"icons\"},((t,e)=>{h||(h=t,d=e,v.call(this));}),void 0,!1,y):d={};const x=Object.keys(u.patternDependencies);function v(){if(h)return i(h);if(p&&d&&f){const t=new kd(p),e=new jc(d,f);for(const n in o){const i=o[n];i instanceof Yh?(Id(i.layers,this.zoom,r),Eh(i,p,t.positions,d,e.iconPositions,this.showCollisionBoxes,r,this.tileID.canonical,this.tileZoom,this.projection),i.projection=this.projection.name):i.hasPattern&&(i instanceof Ku||i instanceof mu||i instanceof Vu)&&(Id(i.layers,this.zoom,r),i.addFeatures(u,this.tileID.canonical,e.patternPositions,r));}this.status=\"done\",i(null,{buckets:Q(o).filter((t=>!t.isEmpty())),featureIndex:a,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,lineAtlas:l,imageAtlas:e,glyphMap:this.returnDependencies?p:null,iconMap:this.returnDependencies?d:null,glyphPositions:this.returnDependencies?t.positions:null});}}x.length?n.send(\"getImages\",{icons:x,source:this.source,tileID:this.tileID,type:\"patterns\"},((t,e)=>{h||(h=t,f=e,v.call(this));}),void 0,!1,y):f={},v.call(this);}}function Id(t,e,r){const n=new Gs(e);for(const e of t)e.recalculate(n,r);}class zd{constructor(t){this.entries={},this.scheduler=t;}request(t,e,r,n){const i=this.entries[t]=this.entries[t]||{callbacks:[]};if(i.result){const[t,r]=i.result;return this.scheduler?this.scheduler.add((()=>{n(t,r);}),e):n(t,r),()=>{}}return i.callbacks.push(n),i.cancel||(i.cancel=r(((r,n)=>{i.result=[r,n];for(const t of i.callbacks)this.scheduler?this.scheduler.add((()=>{t(r,n);}),e):t(r,n);setTimeout((()=>delete this.entries[t]),3e3);}))),()=>{i.result||(i.callbacks=i.callbacks.filter((t=>t!==n)),i.callbacks.length||(i.cancel(),delete this.entries[t]));}}}function Md(t,e,r){const n=JSON.stringify(t.request);return t.data&&(this.deduped.entries[n]={result:[null,t.data]}),this.deduped.request(n,{type:\"parseTile\",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom},(e=>{const n=ae(t.request,((t,n,i,s)=>{t?e(t):n&&e(null,{vectorTile:r?void 0:new Bu.VectorTile(new gc(n)),rawData:n,cacheControl:i,expires:s});}));return ()=>{n.cancel(),e();}}),e)}const Td=c(new Float64Array(16));class Bd{constructor(t,e){this._tr=t,this._worldSize=e;}createInversionMatrix(){return Td}createTileMatrix(t){let e,r,n;const i=t.canonical,s=c(new Float64Array(16)),a=this._tr.projection;if(a.isReprojectedInTileSpace){const o=Ad(i,a);e=1,r=o.x+t.wrap*o.scale,n=o.y,d(s,s,[e/o.scale,e/o.scale,this._tr.pixelsPerMeter/this._worldSize]);}else e=this._worldSize/this._tr.zoomScale(i.z),r=(i.x+Math.pow(2,i.z)*t.wrap)*e,n=i.y*e;return p(s,s,[r,n,0]),d(s,s,[e/To,e/To,1]),s}pointCoordinate(t,e,r){const n=this._tr.horizonLineFromTop(!1),s=new i(t,Math.max(n,e));return this._tr.rayIntersectionCoordinate(this._tr.pointRayIntersection(s,r))}upVector(){return [0,0,1]}upVectorScale(){return 1}}var Cd={name:\"albers\",range:[4,7],center:[-96,37.5],parallels:[29.5,45.5],zAxisUnit:\"meters\",conic:!0,isReprojectedInTileSpace:!0,unsupportedLayers:[\"custom\"],initializeConstants(){if(this.constants&&$(this.parallels,this.constants.parallels))return;const t=Math.sin(q(this.parallels[0])),e=(t+Math.sin(q(this.parallels[1])))/2,r=1+t*(2*e-t),n=Math.sqrt(r)/e;this.constants={n:e,c:r,r0:n,parallels:this.parallels};},project(t,e){this.initializeConstants();const r=q(t-this.center[0]),n=q(e),{n:i,c:s,r0:a}=this.constants,o=Math.sqrt(s-2*i*Math.sin(n))/i;return {x:o*Math.sin(r*i),y:o*Math.cos(r*i)-a,z:0}},unproject(t,e){this.initializeConstants();const{n:r,c:n,r0:i}=this.constants,s=i+e;let a=Math.atan2(t,Math.abs(s))*Math.sign(s);s*r<0&&(a-=Math.PI*Math.sign(t)*Math.sign(s));const o=q(this.center[0])*r;a=J(a,-Math.PI-o,Math.PI-o);const l=N(a/r)+this.center[0],u=Math.asin(Y((n-(t*t+s*s)*r*r)/(2*r),-1,1)),c=Y(N(u),-85.051129,Oo);return new Po(l,c)},projectTilePoint:(t,e)=>({x:t,y:e,z:0}),locationPoint:(t,e)=>t._coordinatePoint(t.locationCoordinate(e),!1),pixelsPerMeter:(t,e)=>Lo(1,t)*e,farthestPixelDistance(t){return cd(t,this.pixelsPerMeter(t.center.lat,t.worldSize))},createTileTransform:(t,e)=>new Bd(t,e)};const Pd=1.340264,Ed=-.081106,Dd=893e-6,Vd=.003796,Fd=Math.sqrt(3)/2;var Ld={name:\"equalEarth\",center:[0,0],range:[3.5,7],zAxisUnit:\"meters\",isReprojectedInTileSpace:!0,unsupportedLayers:[\"custom\"],project(t,e){e=e/180*Math.PI,t=t/180*Math.PI;const r=Math.asin(Fd*Math.sin(e)),n=r*r,i=n*n*n;return {x:.5*(t*Math.cos(r)/(Fd*(Pd+3*Ed*n+i*(7*Dd+9*Vd*n)))/Math.PI+.5),y:1-.5*(r*(Pd+Ed*n+i*(Dd+Vd*n))/Math.PI+1),z:0}},unproject(t,e){t=(2*t-.5)*Math.PI;let r=e=(2*(1-e)-1)*Math.PI,n=r*r,i=n*n*n;for(let t,s,a,o=0;o<12&&(s=r*(Pd+Ed*n+i*(Dd+Vd*n))-e,a=Pd+3*Ed*n+i*(7*Dd+9*Vd*n),t=s/a,r=Y(r-t,-Math.PI/3,Math.PI/3),n=r*r,i=n*n*n,!(Math.abs(t)<1e-12));++o);const s=Fd*t*(Pd+3*Ed*n+i*(7*Dd+9*Vd*n))/Math.cos(r),a=Math.asin(Math.sin(r)/Fd),o=Y(180*s/Math.PI,-180,180),l=Y(180*a/Math.PI,-85.051129,Oo);return new Po(o,l)},projectTilePoint:(t,e)=>({x:t,y:e,z:0}),locationPoint:(t,e)=>t._coordinatePoint(t.locationCoordinate(e),!1),pixelsPerMeter:(t,e)=>Lo(1,t)*e,farthestPixelDistance(t){return cd(t,this.pixelsPerMeter(t.center.lat,t.worldSize))},createTileTransform:(t,e)=>new Bd(t,e)},Rd={name:\"equirectangular\",supportsWorldCopies:!0,center:[0,0],range:[3.5,7],zAxisUnit:\"meters\",wrap:!0,isReprojectedInTileSpace:!0,unsupportedLayers:[\"custom\"],project:(t,e)=>({x:.5+t/360,y:.5-e/360,z:0}),unproject(t,e){const r=360*(t-.5),n=Y(360*(.5-e),-85.051129,Oo);return new Po(r,n)},projectTilePoint:(t,e)=>({x:t,y:e,z:0}),locationPoint:(t,e)=>t._coordinatePoint(t.locationCoordinate(e),!1),pixelsPerMeter:(t,e)=>Lo(1,t)*e,farthestPixelDistance(t){return cd(t,this.pixelsPerMeter(t.center.lat,t.worldSize))},createTileTransform:(t,e)=>new Bd(t,e)};const Ud=Math.PI/2;function $d(t){return Math.tan((Ud+t)/2)}var Od={name:\"lambertConformalConic\",range:[3.5,7],zAxisUnit:\"meters\",center:[0,30],parallels:[30,30],conic:!0,isReprojectedInTileSpace:!0,unsupportedLayers:[\"custom\"],initializeConstants(){if(this.constants&&$(this.parallels,this.constants.parallels))return;const t=q(this.parallels[0]),e=q(this.parallels[1]),r=Math.cos(t),n=t===e?Math.sin(t):Math.log(r/Math.cos(e))/Math.log($d(e)/$d(t)),i=r*Math.pow($d(t),n)/n;this.constants={n:n,f:i,parallels:this.parallels};},project(t,e){this.initializeConstants(),e=q(e),t=q(t-this.center[0]);const r=1e-6,{n:n,f:i}=this.constants;i>0?e<-Ud+r&&(e=-Ud+r):e>Ud-r&&(e=Ud-r);const s=i/Math.pow($d(e),n),a=s*Math.sin(n*t),o=i-s*Math.cos(n*t);return {x:.5*(a/Math.PI+.5),y:1-.5*(o/Math.PI+.5),z:0}},unproject(t,e){this.initializeConstants(),t=(2*t-.5)*Math.PI,e=(2*(1-e)-.5)*Math.PI;const{n:r,f:n}=this.constants,i=n-e,s=Math.sign(i),a=Math.sign(r)*Math.sqrt(t*t+i*i);let o=Math.atan2(t,Math.abs(i))*s;i*r<0&&(o-=Math.PI*Math.sign(t)*s);const l=Y(N(o/r)+this.center[0],-180,180),u=Y(N(2*Math.atan(Math.pow(n/a,1/r))-Ud),-85.051129,Oo);return new Po(l,u)},projectTilePoint:(t,e)=>({x:t,y:e,z:0}),locationPoint:(t,e)=>t._coordinatePoint(t.locationCoordinate(e),!1),pixelsPerMeter:(t,e)=>Lo(1,t)*e,farthestPixelDistance(t){return cd(t,this.pixelsPerMeter(t.center.lat,t.worldSize))},createTileTransform:(t,e)=>new Bd(t,e)},jd={name:\"mercator\",wrap:!0,requiresDraping:!1,supportsWorldCopies:!0,supportsTerrain:!0,supportsFog:!0,supportsFreeCamera:!0,zAxisUnit:\"meters\",center:[0,0],project:(t,e)=>({x:Vo(t),y:Fo(e),z:0}),unproject(t,e){const r=Ro(t),n=Uo(e);return new Po(r,n)},projectTilePoint:(t,e)=>({x:t,y:e,z:0}),locationPoint:(t,e)=>t._coordinatePoint(t.locationCoordinate(e),!1),pixelsPerMeter:(t,e)=>Lo(1,t)*e,farthestPixelDistance(t){return cd(t,this.pixelsPerMeter(t.center.lat,t.worldSize))},createTileTransform:(t,e)=>new Bd(t,e)};const qd=q(Oo);var Nd={name:\"naturalEarth\",center:[0,0],range:[3.5,7],isReprojectedInTileSpace:!0,zAxisUnit:\"meters\",unsupportedLayers:[\"custom\"],project(t,e){const r=(e=q(e))*e,n=r*r;return {x:.5*((t=q(t))*(.8707-.131979*r+n*(n*(.003971*r-.001529*n)-.013791))/Math.PI+.5),y:1-.5*(e*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))/Math.PI+1),z:0}},unproject(t,e){t=(2*t-.5)*Math.PI;let r=e=(2*(1-e)-1)*Math.PI,n=25,i=0,s=r*r;do{s=r*r;const t=s*s;i=(r*(1.007226+s*(.015085+t*(.028874*s-.044475-.005916*t)))-e)/(1.007226+s*(.045255+t*(.259866*s-.311325-.005916*11*t))),r=Y(r-i,-qd,qd);}while(Math.abs(i)>1e-6&&--n>0);s=r*r;const a=Y(N(t/(.8707+s*(s*(s*s*s*(.003971-.001529*s)-.013791)-.131979))),-180,180),o=N(r);return new Po(a,o)},projectTilePoint:(t,e)=>({x:t,y:e,z:0}),locationPoint:(t,e)=>t._coordinatePoint(t.locationCoordinate(e),!1),pixelsPerMeter:(t,e)=>Lo(1,t)*e,farthestPixelDistance(t){return cd(t,this.pixelsPerMeter(t.center.lat,t.worldSize))},createTileTransform:(t,e)=>new Bd(t,e)};const Gd=q(Oo),Zd={albers:Cd,equalEarth:Ld,equirectangular:Rd,lambertConformalConic:Od,mercator:jd,naturalEarth:Nd,winkelTripel:{name:\"winkelTripel\",center:[0,0],range:[3.5,7],zAxisUnit:\"meters\",isReprojectedInTileSpace:!0,unsupportedLayers:[\"custom\"],project(t,e){e=q(e),t=q(t);const r=Math.cos(e),n=2/Math.PI,i=Math.acos(r*Math.cos(t/2)),s=Math.sin(i)/i,a=.5*(t*n+2*r*Math.sin(t/2)/s)||0,o=.5*(e+Math.sin(e)/s)||0;return {x:.5*(a/Math.PI+.5),y:1-.5*(o/Math.PI+1),z:0}},unproject(t,e){let r=t=(2*t-.5)*Math.PI,n=e=(2*(1-e)-1)*Math.PI,i=25;const s=1e-6;let a=0,o=0;do{const i=Math.cos(n),s=Math.sin(n),l=2*s*i,u=s*s,c=i*i,h=Math.cos(r/2),p=Math.sin(r/2),d=2*h*p,f=p*p,y=1-c*h*h,m=y?1/y:0,g=y?Math.acos(i*h)*Math.sqrt(1/y):0,x=.5*(2*g*i*p+2*r/Math.PI)-t,v=.5*(g*s+n)-e,b=.5*m*(c*f+g*i*h*u)+1/Math.PI,w=m*(d*l/4-g*s*p),_=.125*m*(l*p-g*s*c*d),A=.5*m*(u*h+g*f*i)+.5,k=w*_-A*b;a=(v*w-x*A)/k,o=(x*_-v*b)/k,r=Y(r-a,-Math.PI,Math.PI),n=Y(n-o,-Gd,Gd);}while((Math.abs(a)>s||Math.abs(o)>s)&&--i>0);return new Po(N(r),N(n))},projectTilePoint:(t,e)=>({x:t,y:e,z:0}),locationPoint:(t,e)=>t._coordinatePoint(t.locationCoordinate(e),!1),pixelsPerMeter:(t,e)=>Lo(1,t)*e,farthestPixelDistance(t){return cd(t,this.pixelsPerMeter(t.center.lat,t.worldSize))},createTileTransform:(t,e)=>new Bd(t,e)}};t.ARRAY_TYPE=l,t.AUTH_ERR_MSG=Et,t.Aabb=gl,t.Actor=class{constructor(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.cancelCallbacks={},at([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=yt()?t:a,this.scheduler=new mp;}send(t,e,r,n,i=!1,s){const a=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(r.metadata=s,this.callbacks[a]=r);const o=wt(this.globalScope)?void 0:[];return this.target.postMessage({id:a,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:Yi(e,o)},o),{cancel:()=>{r&&delete this.callbacks[a],this.target.postMessage({id:a,type:\"<cancel>\",targetMapId:n,sourceMapId:this.mapId});}}}receive(t){const e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"<cancel>\"===e.type){const t=this.cancelCallbacks[r];delete this.cancelCallbacks[r],t&&t.cancel();}else if(e.mustQueue||yt()){const t=this.callbacks[r];this.cancelCallbacks[r]=this.scheduler.add((()=>this.processTask(r,e)),t&&t.metadata||{type:\"message\"});}else this.processTask(r,e);}processTask(t,e){if(\"<response>\"===e.type){const r=this.callbacks[t];delete this.callbacks[t],r&&(e.error?r(Hi(e.error)):r(null,Hi(e.data)));}else {const r=wt(this.globalScope)?void 0:[],n=e.hasCallback?(e,n)=>{delete this.cancelCallbacks[t],this.target.postMessage({id:t,type:\"<response>\",sourceMapId:this.mapId,error:e?Yi(e):null,data:Yi(n,r)},r);}:t=>{},i=Hi(e.data);if(this.parent[e.type])this.parent[e.type](e.sourceMapId,i,n);else if(this.parent.getWorkerSource){const t=e.type.split(\".\");this.parent.getWorkerSource(e.sourceMapId,t[0],i.source)[t[1]](i,n);}else n(new Error(`Could not find function ${e.type}`));}}remove(){this.scheduler.remove(),this.target.removeEventListener(\"message\",this.receive,!1);}},t.CanonicalTileID=xp,t.Color=Ge,t.ColorMode=Sp,t.CullFaceMode=Mp,t.DEMData=Op,t.DataConstantProperty=ta,t.DedupedRequest=zd,t.DepthMode=_p,t.EXTENT=To,t.Elevation=class{getAtPointOrZero(t,e=0){return this.getAtPoint(t,e)||0}getAtPoint(t,e,r=!0){null==e&&(e=null);const n=this._source();if(!n)return e;if(t.y<0||t.y>1)return e;const i=n.getSource().maxzoom,s=1<<i,a=Math.floor(t.x),o=t.x-a,l=new bp(i,a,i,Math.floor(o*s),Math.floor(t.y*s)),u=this.findDEMTileFor(l);if(!u||!u.dem)return e;const c=u.dem,h=1<<u.tileID.canonical.z,p=(o*h-u.tileID.canonical.x)*c.dim,d=(t.y*h-u.tileID.canonical.y)*c.dim,f=Math.floor(p),y=Math.floor(d);return (r?this.exaggeration():1)*Lr(Lr(c.get(f,y),c.get(f,y+1),d-y),Lr(c.get(f+1,y),c.get(f+1,y+1),d-y),p-f)}getAtTileOffset(t,e,r){const n=1<<t.canonical.z;return this.getAtPointOrZero(new jo(t.wrap+(t.canonical.x+e/To)/n,(t.canonical.y+r/To)/n))}getAtTileOffsetFunc(t,e){return r=>{const n=this.getAtTileOffset(t,r.x,r.y),i=e.upVector(t.canonical,r.x,r.y);return S(i,i,n*e.upVectorScale(t.canonical)),i}}getForTilePoints(t,e,r,n){const i=Zp.create(this,t,n);return !!i&&(e.forEach((t=>{t[2]=this.exaggeration()*i.getElevationAt(t[0],t[1],r);})),!0)}getMinMaxForTile(t){const e=this.findDEMTileFor(t);if(!e||!e.dem)return null;const r=e.dem.tree,n=e.tileID,i=1<<t.canonical.z-n.canonical.z;let s=t.canonical.x/i-n.canonical.x,a=t.canonical.y/i-n.canonical.y,o=0;for(let e=0;e<t.canonical.z-n.canonical.z&&!r.leaves[o];e++){s*=2,a*=2;const t=2*Math.floor(a)+Math.floor(s);o=r.childOffsets[o]+t,s%=1,a%=1;}return {min:this.exaggeration()*r.minimums[o],max:this.exaggeration()*r.maximums[o]}}getMinElevationBelowMSL(){throw new Error(\"Pure virtual method called.\")}raycast(t,e,r){throw new Error(\"Pure virtual method called.\")}pointCoordinate(t){throw new Error(\"Pure virtual method called.\")}_source(){throw new Error(\"Pure virtual method called.\")}exaggeration(){throw new Error(\"Pure virtual method called.\")}findDEMTileFor(t){throw new Error(\"Pure virtual method called.\")}get visibleDemTiles(){throw new Error(\"Getter must be implemented in subclass.\")}},t.ErrorEvent=ge,t.EvaluationParameters=Gs,t.Event=me,t.Evented=xe,t.Frustum=ml,t.GLOBE_ZOOM_THRESHOLD_MAX=6,t.GlobeSharedBuffers=_d,t.GlyphManager=xh,t.ImagePosition=Oc,t.LineAtlas=pp,t.LngLat=Po,t.LngLatBounds=Bo,t.LocalGlyphMode=gh,t.MAX_MERCATOR_LATITUDE=Oo,t.MercatorCoordinate=jo,t.ONE_EM=sc,t.OverscaledTileID=bp,t.Properties=sa,t.RGBAImage=Ml,t.Ray=class{constructor(t,e){this.pos=t,this.dir=e;}intersectsPlane(t,e,r){const n=M(e,this.dir);if(Math.abs(n)<1e-6)return !1;const i=((t[0]-this.pos[0])*e[0]+(t[1]-this.pos[1])*e[1]+(t[2]-this.pos[2])*e[2])/n;return r[0]=this.pos[0]+this.dir[0]*i,r[1]=this.pos[1]+this.dir[1]*i,r[2]=this.pos[2]+this.dir[2]*i,!0}closestPointOnSphere(t,e,r){if(function(t,e){var r=t[0],n=t[1],i=t[2],s=e[0],a=e[1],l=e[2];return Math.abs(r-s)<=o*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-a)<=o*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-l)<=o*Math.max(1,Math.abs(i),Math.abs(l))}(this.pos,t)||0===e)return r[0]=r[1]=r[2]=0,!1;const[n,i,s]=this.dir,a=this.pos[0]-t[0],l=this.pos[1]-t[1],u=this.pos[2]-t[2],c=n*n+i*i+s*s,h=2*(a*n+l*i+u*s),p=h*h-4*c*(a*a+l*l+u*u-e*e);if(p<0){const t=Math.max(-h/2,0),o=a+n*t,c=l+i*t,p=u+s*t,d=Math.hypot(o,c,p);return r[0]=o*e/d,r[1]=c*e/d,r[2]=p*e/d,!1}{const t=(-h-Math.sqrt(p))/(2*c);if(t<0){const t=Math.hypot(a,l,u);return r[0]=a*e/t,r[1]=l*e/t,r[2]=u*e/t,!1}return r[0]=a+n*t,r[1]=l+i*t,r[2]=u+s*t,!0}}},t.RequestManager=class{constructor(t,e,r){this._transformRequestFn=t,this._customAccessToken=e,this._silenceAuthErrors=!!r,this._createSkuToken();}_createSkuToken(){const t=function(){let t=\"\";for(let e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return {token:[\"1\",Pt,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt;}_isSkuTokenExpired(){return Date.now()>this._skuTokenExpiresAt}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}normalizeStyleURL(t,e){if(!Dt(t))return t;const r=Lt(t);return r.path=`/styles/v1${r.path}`,this._makeAPIURL(r,this._customAccessToken||e)}normalizeGlyphsURL(t,e){if(!Dt(t))return t;const r=Lt(t);return r.path=`/fonts/v1${r.path}`,this._makeAPIURL(r,this._customAccessToken||e)}normalizeSourceURL(t,e){if(!Dt(t))return t;const r=Lt(t);return r.path=`/v4/${r.authority}.json`,r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)}normalizeSpriteURL(t,e,r,n){const i=Lt(t);return Dt(t)?(i.path=`/styles/v1${i.path}/sprite${e}${r}`,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=`${e}${r}`,Rt(i))}normalizeTileURL(t,e,r){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!Dt(t))return t;const n=Lt(t);n.path=n.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,`${e||r&&\"raster\"!==n.authority&&512===r?\"@2x\":\"\"}${It.supported?\".webp\":\"$1\"}`),\"raster\"===n.authority?n.path=`/${St.RASTER_URL_PREFIX}${n.path}`:(n.path=n.path.replace(/^.+\\/v4\\//,\"/\"),n.path=`/${St.TILE_URL_VERSION}${n.path}`);const i=this._customAccessToken||function(t){for(const e of t){const t=e.match(/^access_token=(.*)$/);if(t)return t[1]}return null}(n.params)||St.ACCESS_TOKEN;return St.REQUIRE_ACCESS_TOKEN&&i&&this._skuToken&&n.params.push(`sku=${this._skuToken}`),this._makeAPIURL(n,i)}canonicalizeTileURL(t,e){const r=Lt(t);if(!r.path.match(/^(\\/v4\\/|\\/raster\\/v1\\/)/)||!r.path.match(/\\.[\\w]+$/))return t;let n=\"mapbox://\";r.path.match(/^\\/raster\\/v1\\//)?n+=`raster/${r.path.replace(`/${St.RASTER_URL_PREFIX}/`,\"\")}`:n+=`tiles/${r.path.replace(`/${St.TILE_URL_VERSION}/`,\"\")}`;let i=r.params;return e&&(i=i.filter((t=>!t.match(/^access_token=/)))),i.length&&(n+=`?${i.join(\"&\")}`),n}canonicalizeTileset(t,e){const r=!!e&&Dt(e),n=[];for(const e of t.tiles||[])Vt(e)?n.push(this.canonicalizeTileURL(e,r)):n.push(e);return n}_makeAPIURL(t,e){const r=\"See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\",n=Lt(St.API_URL);if(t.protocol=n.protocol,t.authority=n.authority,\"http\"===t.protocol){const e=t.params.indexOf(\"secure\");e>=0&&t.params.splice(e,1);}if(\"/\"!==n.path&&(t.path=`${n.path}${t.path}`),!St.REQUIRE_ACCESS_TOKEN)return Rt(t);if(e=e||St.ACCESS_TOKEN,!this._silenceAuthErrors){if(!e)throw new Error(`An API access token is required to use Mapbox GL. ${r}`);if(\"s\"===e[0])throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${r}`)}return t.params=t.params.filter((t=>-1===t.indexOf(\"access_token\"))),t.params.push(`access_token=${e||\"\"}`),Rt(t)}},t.ResourceType=re,t.SegmentVector=Mo,t.SourceCache=qp,t.StencilMode=kp,t.StructArrayLayout1ui2=Pa,t.StructArrayLayout2f1f2i16=_a,t.StructArrayLayout2i4=pa,t.StructArrayLayout2ui4=Ca,t.StructArrayLayout3f12=ya,t.StructArrayLayout3ui6=ka,t.StructArrayLayout4i8=da,t.Texture=hp,t.Tile=ad,t.Transitionable=Ks,t.Uniform1f=io,t.Uniform1i=class extends no{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));}},t.Uniform2f=class extends no{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.Uniform3f=class extends no{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.Uniform4f=so,t.UniformColor=ao,t.UniformMatrix2f=class extends no{constructor(t,e){super(t,e),this.current=uo;}set(t){for(let e=0;e<4;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix2fv(this.location,!1,t);break}}},t.UniformMatrix3f=class extends no{constructor(t,e){super(t,e),this.current=lo;}set(t){for(let e=0;e<9;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix3fv(this.location,!1,t);break}}},t.UniformMatrix4f=class extends no{constructor(t,e){super(t,e),this.current=oo;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.UnwrappedTileID=vp,t.ValidationError=be,t.VectorTileWorkerSource=class extends xe{constructor(t,e,r,n,i){super(),this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=i||Md,this.loading={},this.loaded={},this.deduped=new zd(t.scheduler),this.isSpriteLoaded=n,this.scheduler=t.scheduler;}loadTile(t,e){const r=t.uid,n=t&&t.request,i=n&&n.collectResourceTiming,s=this.loading[r]=new Sd(t);s.abort=this.loadVectorData(t,((a,o)=>{const l=!this.loading[r];if(delete this.loading[r],l||a||!o)return s.status=\"done\",l||(this.loaded[r]=s),e(a);const u=o.rawData,c={};o.expires&&(c.expires=o.expires),o.cacheControl&&(c.cacheControl=o.cacheControl),s.vectorTile=o.vectorTile||new Bu.VectorTile(new gc(u));const h=()=>{s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,r)=>{if(t||!r)return e(t);const s={};if(i){const t=yp(n);t.length>0&&(s.resourceTiming=JSON.parse(JSON.stringify(t)));}e(null,tt({rawTileData:u.slice(0)},r,c,s));}));};this.isSpriteLoaded?h():this.once(\"isSpriteLoaded\",(()=>{this.scheduler?this.scheduler.add(h,{type:\"parseTile\",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom}):h();})),this.loaded=this.loaded||{},this.loaded[r]=s;}));}reloadTile(t,e){const r=this.loaded,n=t.uid,i=this;if(r&&r[n]){const s=r[n];s.showCollisionBoxes=t.showCollisionBoxes,s.enableTerrain=!!t.enableTerrain,s.projection=t.projection;const a=(t,r)=>{const n=s.reloadCallback;n&&(delete s.reloadCallback,s.parse(s.vectorTile,i.layerIndex,this.availableImages,i.actor,n)),e(t,r);};\"parsing\"===s.status?s.reloadCallback=a:\"done\"===s.status&&(s.vectorTile?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,a):a());}}abortTile(t,e){const r=t.uid,n=this.loading[r];n&&(n.abort&&n.abort(),delete this.loading[r]),e();}removeTile(t,e){const r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e();}},t.WritingMode=qc,t.ZoomHistory=Ji,t.add=w,t.addDynamicAttributes=Gh,t.adjoint=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8];return t[0]=a*c-o*u,t[1]=i*u-n*c,t[2]=n*o-i*a,t[3]=o*l-s*c,t[4]=r*c-i*l,t[5]=i*s-r*o,t[6]=s*u-a*l,t[7]=n*l-r*u,t[8]=r*a-n*s,t},t.asyncAll=W,t.bezier=X,t.bindAll=at,t.boundsAttributes=id,t.bufferConvexPolygon=function(t,e){const r=[];for(let n=0;n<t.length;n++){const i=J(n-1,-1,t.length-1),s=J(n+1,-1,t.length-1),a=t[n],o=t[s],l=t[i].sub(a).unit(),u=o.sub(a).unit(),c=u.angleWithSep(l.x,l.y),h=l.add(u).unit().mult(-1*e/Math.sin(c/2));r.push(a.add(h));}return r},t.cacheEntryPossiblyAdded=function(t){ee++,ee>Wt&&(t.getActor().send(\"enforceCacheSizeLimit\",Jt),ee=0);},t.calculateGlobeMatrix=wd,t.calculateGlobeMercatorMatrix=function(t){const e=t.worldSize,r=Y(t.center.lat,-85.051129,Oo),n=new i(Vo(t.center.lng)*e,Fo(r)*e),s=Lo(1,t.center.lat)*e,a=t.pixelsPerMeter,o=e/(s/t.pixelsPerMeter),l=c(new Float64Array(16));return p(l,l,[n.x,n.y,0]),d(l,l,[o,o,a]),l},t.clamp=Y,t.clearTileCache=function(t){const e=a.caches.delete(Kt);t&&e.catch(t).then((()=>t()));},t.clipLine=dh,t.clone=function(t){var e=new l(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=ct,t.collisionCircleLayout=ic,t.config=St,t.conjugate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t},t.create=function(){var t=new l(16);return l!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=u,t.createExpression=Gn,t.createLayout=ca,t.createStyleLayer=function(t){return \"custom\"===t.type?new rp(t):new sp[t.type](t)},t.cross=T,t.degToRad=q,t.div=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t},t.dot=M,t.ease=K,t.easeCubicInOut=Z,t.emitValidationErrors=$i,t.endsWith=ot,t.enforceCacheSizeLimit=function(t){Qt(),Yt&&Yt.then((e=>{e.keys().then((r=>{for(let n=0;n<r.length-t;n++)e.delete(r[n]);}));}));},t.evaluateSizeForFeature=lc,t.evaluateSizeForZoom=uc,t.evaluateVariableOffset=Ph,t.evented=Os,t.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]},t.exactEquals$1=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]},t.exported=At,t.exported$1=It,t.extend=tt,t.extend$1=_e,t.filterObject=ut,t.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},t.fromQuat=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,l=i+i,u=r*a,c=n*a,h=n*o,p=i*a,d=i*o,f=i*l,y=s*a,m=s*o,g=s*l;return t[0]=1-h-f,t[1]=c+g,t[2]=p-m,t[3]=0,t[4]=c-g,t[5]=1-u-f,t[6]=d+y,t[7]=0,t[8]=p+m,t[9]=d-y,t[10]=1-u-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.fromScaling=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.furthestTileCorner=function(t){const e=Math.round((t+45+360)%360/90)%4;return G[e]},t.getAABBPointSquareDist=function(t,e,r){let n=0;for(let i=0;i<2;++i){const s=r?r[i]:0;t[i]>s&&(n+=(t[i]-s)*(t[i]-s)),e[i]<s&&(n+=(s-e[i])*(s-e[i]));}return n},t.getAnchorAlignment=eh,t.getAnchorJustification=Dh,t.getBounds=function(t){let e=1/0,r=1/0,n=-1/0,s=-1/0;for(const i of t)e=Math.min(e,i.x),r=Math.min(r,i.y),n=Math.max(n,i.x),s=Math.max(s,i.y);return {min:new i(e,r),max:new i(n,s)}},t.getColumn=function(t,e){return [t[4*e],t[4*e+1],t[4*e+2],t[4*e+3]]},t.getImage=de,t.getJSON=function(t,e){return se(tt(t,{type:\"json\"}),e)},t.getMapSessionAPI=Zt,t.getPerformanceMeasurement=yp,t.getProjection=function(t){const e=Zd[t.name];if(!e)throw new Error(`Invalid projection name: ${t.name}`);return e.conic?function(t,e){if(e.parallels&&Math.abs(e.parallels[0]+e.parallels[1])<.01){let r=function(t){const e=Math.max(.01,Math.cos(q(t))),r=1/(2*Math.max(Math.PI*e,1/e));return {wrap:!0,supportsWorldCopies:!0,unsupportedLayers:[\"custom\"],project(t,n){const i=q(t)*e,s=Math.sin(q(n))/e;return {x:i*r+.5,y:-s*r+.5,z:0}},unproject(t,n){const i=-(n-.5)/r,s=Y(N((t-.5)/r)/e,-180,180),a=Math.asin(Y(i*e,-1,1)),o=Y(N(a),-85.051129,Oo);return new Po(s,o)}}}(e.parallels[0]);if(\"lambertConformalConic\"===e.name){const{project:t,unproject:e}=Zd.mercator;r={wrap:!0,supportsWorldCopies:!0,project:t,unproject:e};}return tt({},t,e,r)}return tt({},t,e)}(e,t):e},t.getRTLTextPluginStatus=js,t.getReferrer=ie,t.getTilePoint=function(t,{x:e,y:r},n=0){return new i(((e-n)*t.scale-t.x)*To,(r*t.scale-t.y)*To)},t.getTileVec3=function(t,e,r=0){return b(((e.x-r)*t.scale-t.x)*To,(e.y*t.scale-t.y)*To,$o(e.z,e.y))},t.getVideo=function(t,e){const r=a.document.createElement(\"video\");r.muted=!0,r.onloadstart=function(){e(null,r);};for(let e=0;e<t.length;e++){const n=a.document.createElement(\"source\");ue(t[e])||(r.crossOrigin=\"Anonymous\"),n.src=t[e],r.appendChild(n);}return {cancel:()=>{}}},t.globeBuffersForTileMesh=function(t,e,r,n){const i=t.context,s=t.transform;let a=e.globeGridBuffer,o=e.globePoleBuffer;if(!a){const t=_d.createGridVertices(r.canonical);a=e.globeGridBuffer=i.createVertexBuffer(t,ud,!1);}if(!o){const t=_d.createPoleTriangleVertices(n,s.tileSize*n,0===r.canonical.y);o=e.globePoleBuffer=i.createVertexBuffer(t,ud,!1);}return [a,o]},t.globeDenormalizeECEF=bd,t.globeMatrixForTile=function(t,e){const r=bd(yd(t)),n=((i=new Float64Array(16))[0]=(s=e)[0],i[1]=s[1],i[2]=s[2],i[3]=s[3],i[4]=s[4],i[5]=s[5],i[6]=s[6],i[7]=s[7],i[8]=s[8],i[9]=s[9],i[10]=s[10],i[11]=s[11],i[12]=s[12],i[13]=s[13],i[14]=s[14],i[15]=s[15],i);var i,s;return m(n,n,r),n},t.globePoleMatrixForTile=function(t,e,r){const n=c(new Float64Array(16)),i=Math.pow(2,t.z),s=(t.x-i/2)/i*Math.PI*2,a=r.point,o=r.worldSize/(r.tileSize*i);return p(n,n,[a.x,a.y,-r.worldSize/Math.PI/2]),d(n,n,[o,o,o]),f(n,n,q(-r._center.lat)),y(n,n,q(-r._center.lng)),y(n,n,s),e&&d(n,n,[1,-1,1]),n},t.globeTileBounds=yd,t.globeToMercatorTransition=function(t){return H(5,6,t)},t.identity=c,t.identity$1=R,t.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],d=e[11],f=e[12],y=e[13],m=e[14],g=e[15],x=r*o-n*a,v=r*l-i*a,b=r*u-s*a,w=n*l-i*o,_=n*u-s*o,A=i*u-s*l,k=c*y-h*f,S=c*m-p*f,I=c*g-d*f,z=h*m-p*y,M=h*g-d*y,T=p*g-d*m,B=x*T-v*M+b*z+w*I-_*S+A*k;return B?(t[0]=(o*T-l*M+u*z)*(B=1/B),t[1]=(i*M-n*T-s*z)*B,t[2]=(y*A-m*_+g*w)*B,t[3]=(p*_-h*A-d*w)*B,t[4]=(l*I-a*T-u*S)*B,t[5]=(r*T-i*I+s*S)*B,t[6]=(m*b-f*A-g*v)*B,t[7]=(c*A-p*b+d*v)*B,t[8]=(a*M-o*I+u*k)*B,t[9]=(n*I-r*M-s*k)*B,t[10]=(f*_-y*b+g*x)*B,t[11]=(h*b-c*_-d*x)*B,t[12]=(o*S-a*z-l*k)*B,t[13]=(r*z-n*S+i*k)*B,t[14]=(y*v-f*w-m*x)*B,t[15]=(c*w-h*v+p*x)*B,t):null},t.isMapAuthenticated=function(t){return Xt.has(t)},t.isMapboxURL=Dt,t.isSafariWithAntialiasingBug=function(t){const e=t.navigator?t.navigator.userAgent:null;return !!wt(t)&&e&&(e.match(\"Version/15.4\")||e.match(\"Version/15.5\")||e.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/))},t.latFromMercatorY=Uo,t.len=V,t.length=v,t.length$1=function(t){return Math.hypot(t[0],t[1],t[2],t[3])},t.loadVectorTile=Md,t.makeRequest=se,t.mercatorXfromLng=Vo,t.mercatorYfromLat=Fo,t.mercatorZfromAltitude=Lo,t.mul=m,t.mul$1=D,t.multiply=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=r[0],d=r[1],f=r[2],y=r[3],m=r[4],g=r[5],x=r[6],v=r[7],b=r[8];return t[0]=p*n+d*a+f*u,t[1]=p*i+d*o+f*c,t[2]=p*s+d*l+f*h,t[3]=y*n+m*a+g*u,t[4]=y*i+m*o+g*c,t[5]=y*s+m*l+g*h,t[6]=x*n+v*a+b*u,t[7]=x*i+v*o+b*c,t[8]=x*s+v*l+b*h,t},t.multiply$1=h,t.multiply$2=A,t.nextPowerOfTwo=it,t.normalize=z,t.normalize$1=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s;return a>0&&(a=1/Math.sqrt(a)),t[0]=r*a,t[1]=n*a,t[2]=i*a,t[3]=s*a,t},t.number=Lr,t.ortho=function(t,e,r,n,i,s,a){var o=1/(e-r),l=1/(n-i),u=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(a+s)*u,t[15]=1,t},t.pbf=gc,t.perspective=function(t,e,r,n,i){var s,a=1/Math.tan(e/2);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(s=1/(n-i)),t[14]=2*i*n*s):(t[10]=-1,t[14]=-2*n),t},t.pick=function(t,e){const r={};for(let n=0;n<e.length;n++){const i=e[n];i in t&&(r[i]=t[i]);}return r},t.plugin=Ns,t.pointGeometry=i,t.polygonIntersectsBox=ll,t.polygonIntersectsPolygon=Wo,t.polygonizeBounds=function(t,e,r=0,n=!0){const s=new i(r,r),a=t.sub(s),o=e.add(s),l=[a,new i(o.x,a.y),o,new i(a.x,o.y)];return n&&l.push(a),l},t.posAttributes=Hp,t.postMapLoadEvent=Nt,t.postTurnstileEvent=jt,t.potpack=$c,t.prevPowerOfTwo=function(t){return t<=1?1:Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},t.radToDeg=N,t.refProperties=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"],t.registerForPluginStateChange=function(t){return t({pluginStatus:Ls,pluginURL:Rs}),Os.on(\"pluginStateChange\",t),t},t.removeAuthState=function(t){Xt.delete(t);},t.renderColorRamp=Bl,t.rotateX=f,t.rotateX$1=U,t.rotateY=y,t.rotateZ=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[4],c=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i+u*n,t[1]=a*i+c*n,t[2]=o*i+h*n,t[3]=l*i+p*n,t[4]=u*i-s*n,t[5]=c*i-a*n,t[6]=h*i-o*n,t[7]=p*i-l*n,t},t.rotateZ$1=function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+i*o,t[1]=i*l-n*o,t[2]=s*l+a*o,t[3]=a*l-s*o,t},t.scale=d,t.scale$1=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t},t.scale$2=S,t.scaleAndAdd=I,t.setCacheLimits=function(t,e){Jt=t,Wt=e;},t.setColumn=function(t,e,r){t[4*e+0]=r[0],t[4*e+1]=r[1],t[4*e+2]=r[2],t[4*e+3]=r[3];},t.setRTLTextPlugin=function(t,e,r=!1){if(Ls===Es||Ls===Ds||Ls===Vs)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");Rs=At.resolveURL(t),Ls=Es,Fs=e,$s(),r||qs();},t.smoothstep=H,t.spec=ve,t.storeAuthState=function(t,e){e?Xt.add(t):Xt.delete(t);},t.sub=E,t.subtract=_,t.symbolSize=cc,t.tileAABB=function(t,e,r,n,i,s,a,o,l){if(\"globe\"===l.name){const a=yd(new vp(s,new xp(r,n,i)).canonical).getCorners(),o=Number.MAX_VALUE,l=[-o,-o,-o],p=[o,o,o],d=wd(t,e);for(let t=0;t<a.length;t++)B(a[t],a[t],d),c=p,h=a[t],(u=p)[0]=Math.min(c[0],h[0]),u[1]=Math.min(c[1],h[1]),u[2]=Math.min(c[2],h[2]),k(l,l,a[t]);return new gl(p,l)}var u,c,h;const p=Ad({z:r,x:n,y:i},l);return new gl([(s+p.x/p.scale)*e,e*(p.y/p.scale),a],[(s+p.x2/p.scale)*e,e*(p.y2/p.scale),o])},t.tileTransform=Ad,t.transformMat3=function(t,e,r){var n=e[0],i=e[1],s=e[2];return t[0]=n*r[0]+i*r[3]+s*r[6],t[1]=n*r[1]+i*r[4]+s*r[7],t[2]=n*r[2]+i*r[5]+s*r[8],t},t.transformMat4=B,t.transformMat4$1=F,t.transformQuat=C,t.translate=p,t.transpose=function(t,e){if(t===e){var r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i;}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t},t.triggerPluginCompletionEvent=Us,t.uniqueId=rt,t.validateCustomStyleLayer=function(t){const e=[],r=t.id;return void 0===r&&e.push({message:`layers.${r}: missing required property \"id\"`}),void 0===t.render&&e.push({message:`layers.${r}: missing required method \"render\"`}),t.renderingMode&&\"2d\"!==t.renderingMode&&\"3d\"!==t.renderingMode&&e.push({message:`layers.${r}: property \"renderingMode\" must be either \"2d\" or \"3d\"`}),e},t.validateFog=Li,t.validateLight=Fi,t.validateStyle=Vi,t.values=Q,t.vectorTile=Bu,t.version=e,t.warnOnce=pt,t.window=a,t.wrap=J;}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";function t(e){const r=typeof e;if(\"number\"===r||\"boolean\"===r||\"string\"===r||null==e)return JSON.stringify(e);if(Array.isArray(e)){let r=\"[\";for(const o of e)r+=`${t(o)},`;return `${r}]`}const o=Object.keys(e).sort();let n=\"{\";for(let r=0;r<o.length;r++)n+=`${JSON.stringify(o[r])}:${t(e[o[r]])},`;return `${n}}`}function r(r){let o=\"\";for(const n of e.refProperties)o+=`/${t(r[n])}`;return o}class o{constructor(e){this.keyCache={},e&&this.replace(e);}replace(e){this._layerConfigs={},this._layers={},this.update(e,[]);}update(t,o){for(const r of t)this._layerConfigs[r.id]=r,(this._layers[r.id]=e.createStyleLayer(r)).compileFilter(),this.keyCache[r.id]&&delete this.keyCache[r.id];for(const e of o)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const n=function(e,t){const o={};for(let n=0;n<e.length;n++){const i=t&&t[e[n].id]||r(e[n]);t&&(t[e[n].id]=i);let s=o[i];s||(s=o[i]=[]),s.push(e[n]);}const n=[];for(const e in o)n.push(o[e]);return n}(e.values(this._layerConfigs),this.keyCache);for(const e of n){const t=e.map((e=>this._layers[e.id])),r=t[0];if(\"none\"===r.visibility)continue;const o=r.source||\"\";let n=this.familiesBySource[o];n||(n=this.familiesBySource[o]={});const i=r.sourceLayer||\"_geojsonTileLayer\";let s=n[i];s||(s=n[i]=[]),s.push(t);}}}const{ImageBitmap:n}=e.window;class i{loadTile(t,r){const{uid:o,encoding:i,rawImageData:s,padding:a,buildQuadTree:l}=t,u=n&&s instanceof n?this.getImageData(s,a):s;r(null,new e.DEMData(o,u,i,a<1,l));}getImageData(t,r){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(t.width,t.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=t.width,this.offscreenCanvas.height=t.height,this.offscreenCanvasContext.drawImage(t,0,0,t.width,t.height);const o=this.offscreenCanvasContext.getImageData(-r,-r,t.width+2*r,t.height+2*r);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new e.RGBAImage({width:o.width,height:o.height},o.data)}}var s=function e(t,r){var o,n=t&&t.type;if(\"FeatureCollection\"===n)for(o=0;o<t.features.length;o++)e(t.features[o],r);else if(\"GeometryCollection\"===n)for(o=0;o<t.geometries.length;o++)e(t.geometries[o],r);else if(\"Feature\"===n)e(t.geometry,r);else if(\"Polygon\"===n)a(t.coordinates,r);else if(\"MultiPolygon\"===n)for(o=0;o<t.coordinates.length;o++)a(t.coordinates[o],r);return t};function a(e,t){if(0!==e.length){l(e[0],t);for(var r=1;r<e.length;r++)l(e[r],!t);}}function l(e,t){for(var r=0,o=0,n=0,i=e.length,s=i-1;n<i;s=n++){var a=(e[n][0]-e[s][0])*(e[s][1]+e[n][1]),l=r+a;o+=Math.abs(r)>=Math.abs(a)?r-l+a:a-l+r,r=l;}r+o>=0!=!!t&&e.reverse();}const u=e.vectorTile.VectorTileFeature.prototype.toGeoJSON;class h{constructor(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));}loadGeometry(){if(1===this._feature.type){const t=[];for(const r of this._feature.geometry)t.push([new e.pointGeometry(r[0],r[1])]);return t}{const t=[];for(const r of this._feature.geometry){const o=[];for(const t of r)o.push(new e.pointGeometry(t[0],t[1]));t.push(o);}return t}}toGeoJSON(e,t,r){return u.call(this,e,t,r)}}class c{constructor(t){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=e.EXTENT,this.length=t.length,this._features=t;}feature(e){return new h(this._features[e])}}var f=e.vectorTile.VectorTileFeature,p=g;function g(e,t){this.options=t||{},this.features=e,this.length=e.length;}function d(e,t){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}g.prototype.feature=function(e){return new d(this.features[e],this.options.extent)},d.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var r=0;r<t.length;r++){for(var o=t[r],n=[],i=0;i<o.length;i++)n.push(new e.pointGeometry(o[i][0],o[i][1]));this.geometry.push(n);}return this.geometry},d.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,o=1/0,n=-1/0,i=0;i<e.length;i++)for(var s=e[i],a=0;a<s.length;a++){var l=s[a];t=Math.min(t,l.x),r=Math.max(r,l.x),o=Math.min(o,l.y),n=Math.max(n,l.y);}return [t,o,r,n]},d.prototype.toGeoJSON=f.prototype.toGeoJSON;var m=v,y=p;function v(t){var r=new e.pbf;return function(e,t){for(var r in e.layers)t.writeMessage(3,x,e.layers[r]);}(t,r),r.finish()}function x(e,t){var r;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||\"\"),t.writeVarintField(5,e.extent||4096);var o={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<e.length;r++)o.feature=e.feature(r),t.writeMessage(2,w,o);var n=o.keys;for(r=0;r<n.length;r++)t.writeStringField(3,n[r]);var i=o.values;for(r=0;r<i.length;r++)t.writeMessage(4,T,i[r]);}function w(e,t){var r=e.feature;void 0!==r.id&&t.writeVarintField(1,r.id),t.writeMessage(2,S,e),t.writeVarintField(3,r.type),t.writeMessage(4,b,r);}function S(e,t){var r=e.feature,o=e.keys,n=e.values,i=e.keycache,s=e.valuecache;for(var a in r.properties){var l=r.properties[a],u=i[a];if(null!==l){void 0===u&&(o.push(a),i[a]=u=o.length-1),t.writeVarint(u);var h=typeof l;\"string\"!==h&&\"boolean\"!==h&&\"number\"!==h&&(l=JSON.stringify(l));var c=h+\":\"+l,f=s[c];void 0===f&&(n.push(l),s[c]=f=n.length-1),t.writeVarint(f);}}}function M(e,t){return (t<<3)+(7&e)}function P(e){return e<<1^e>>31}function b(e,t){for(var r=e.loadGeometry(),o=e.type,n=0,i=0,s=r.length,a=0;a<s;a++){var l=r[a],u=1;1===o&&(u=l.length),t.writeVarint(M(1,u));for(var h=3===o?l.length-1:l.length,c=0;c<h;c++){1===c&&1!==o&&t.writeVarint(M(2,h-1));var f=l[c].x-n,p=l[c].y-i;t.writeVarint(P(f)),t.writeVarint(P(p)),n+=f,i+=p;}3===o&&t.writeVarint(M(7,1));}}function T(e,t){var r=typeof e;\"string\"===r?t.writeStringField(1,e):\"boolean\"===r?t.writeBooleanField(7,e):\"number\"===r&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}function k(e,t,r,o,n,i){if(n-o<=r)return;const s=o+n>>1;I(e,t,s,o,n,i%2),k(e,t,r,o,s-1,i+1),k(e,t,r,s+1,n,i+1);}function I(e,t,r,o,n,i){for(;n>o;){if(n-o>600){const s=n-o+1,a=r-o+1,l=Math.log(s),u=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*u*(s-u)/s)*(a-s/2<0?-1:1);I(e,t,r,Math.max(o,Math.floor(r-a*u/s+h)),Math.min(n,Math.floor(r+(s-a)*u/s+h)),i);}const s=t[2*r+i];let a=o,l=n;for(_(e,t,o,r),t[2*n+i]>s&&_(e,t,o,n);a<l;){for(_(e,t,a,l),a++,l--;t[2*a+i]<s;)a++;for(;t[2*l+i]>s;)l--;}t[2*o+i]===s?_(e,t,o,l):(l++,_(e,t,l,n)),l<=r&&(o=l+1),r<=l&&(n=l-1);}}function _(e,t,r,o){L(e,r,o),L(t,2*r,2*o),L(t,2*r+1,2*o+1);}function L(e,t,r){const o=e[t];e[t]=e[r],e[r]=o;}function C(e,t,r,o){const n=e-r,i=t-o;return n*n+i*i}m.fromVectorTileJs=v,m.fromGeojsonVt=function(e,t){t=t||{};var r={};for(var o in e)r[o]=new p(e[o].features,t),r[o].name=o,r[o].version=t.version,r[o].extent=t.extent;return v({layers:r})},m.GeoJSONWrapper=y;const O=e=>e[0],z=e=>e[1];class E{constructor(e,t=O,r=z,o=64,n=Float64Array){this.nodeSize=o,this.points=e;const i=e.length<65536?Uint16Array:Uint32Array,s=this.ids=new i(e.length),a=this.coords=new n(2*e.length);for(let o=0;o<e.length;o++)s[o]=o,a[2*o]=t(e[o]),a[2*o+1]=r(e[o]);k(s,a,o,0,s.length-1,0);}range(e,t,r,o){return function(e,t,r,o,n,i,s){const a=[0,e.length-1,0],l=[];let u,h;for(;a.length;){const c=a.pop(),f=a.pop(),p=a.pop();if(f-p<=s){for(let s=p;s<=f;s++)u=t[2*s],h=t[2*s+1],u>=r&&u<=n&&h>=o&&h<=i&&l.push(e[s]);continue}const g=Math.floor((p+f)/2);u=t[2*g],h=t[2*g+1],u>=r&&u<=n&&h>=o&&h<=i&&l.push(e[g]);const d=(c+1)%2;(0===c?r<=u:o<=h)&&(a.push(p),a.push(g-1),a.push(d)),(0===c?n>=u:i>=h)&&(a.push(g+1),a.push(f),a.push(d));}return l}(this.ids,this.coords,e,t,r,o,this.nodeSize)}within(e,t,r){return function(e,t,r,o,n,i){const s=[0,e.length-1,0],a=[],l=n*n;for(;s.length;){const u=s.pop(),h=s.pop(),c=s.pop();if(h-c<=i){for(let n=c;n<=h;n++)C(t[2*n],t[2*n+1],r,o)<=l&&a.push(e[n]);continue}const f=Math.floor((c+h)/2),p=t[2*f],g=t[2*f+1];C(p,g,r,o)<=l&&a.push(e[f]);const d=(u+1)%2;(0===u?r-n<=p:o-n<=g)&&(s.push(c),s.push(f-1),s.push(d)),(0===u?r+n>=p:o+n>=g)&&(s.push(f+1),s.push(h),s.push(d));}return a}(this.ids,this.coords,e,t,r,this.nodeSize)}}const F={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},N=Math.fround||(j=new Float32Array(1),e=>(j[0]=+e,j[0]));var j;class Z{constructor(e){this.options=D(Object.create(F),e),this.trees=new Array(this.options.maxZoom+1);}load(e){const{log:t,minZoom:r,maxZoom:o,nodeSize:n}=this.options;t&&console.time(\"total time\");const i=`prepare ${e.length} points`;t&&console.time(i),this.points=e;let s=[];for(let t=0;t<e.length;t++)e[t].geometry&&s.push(J(e[t],t));this.trees[o+1]=new E(s,$,B,n,Float32Array),t&&console.timeEnd(i);for(let e=o;e>=r;e--){const r=+Date.now();s=this._cluster(s,e),this.trees[e]=new E(s,$,B,n,Float32Array),t&&console.log(\"z%d: %d clusters in %dms\",e,s.length,+Date.now()-r);}return t&&console.timeEnd(\"total time\"),this}getClusters(e,t){let r=((e[0]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[1]));let n=180===e[2]?180:((e[2]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,n=180;else if(r>n){const e=this.getClusters([r,o,180,i],t),s=this.getClusters([-180,o,n,i],t);return e.concat(s)}const s=this.trees[this._limitZoom(t)],a=s.range(X(r),V(i),X(n),V(o)),l=[];for(const e of a){const t=s.points[e];l.push(t.numPoints?W(t):this.points[t.index]);}return l}getChildren(e){const t=this._getOriginId(e),r=this._getOriginZoom(e),o=\"No cluster with the specified id.\",n=this.trees[r];if(!n)throw new Error(o);const i=n.points[t];if(!i)throw new Error(o);const s=this.options.radius/(this.options.extent*Math.pow(2,r-1)),a=n.within(i.x,i.y,s),l=[];for(const t of a){const r=n.points[t];r.parentId===e&&l.push(r.numPoints?W(r):this.points[r.index]);}if(0===l.length)throw new Error(o);return l}getLeaves(e,t,r){const o=[];return this._appendLeaves(o,e,t=t||10,r=r||0,0),o}getTile(e,t,r){const o=this.trees[this._limitZoom(e)],n=Math.pow(2,e),{extent:i,radius:s}=this.options,a=s/i,l=(r-a)/n,u=(r+1+a)/n,h={features:[]};return this._addTileFeatures(o.range((t-a)/n,l,(t+1+a)/n,u),o.points,t,r,n,h),0===t&&this._addTileFeatures(o.range(1-a/n,l,1,u),o.points,n,r,n,h),t===n-1&&this._addTileFeatures(o.range(0,l,a/n,u),o.points,-1,r,n,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const r=this.getChildren(e);if(t++,1!==r.length)break;e=r[0].properties.cluster_id;}return t}_appendLeaves(e,t,r,o,n){const i=this.getChildren(t);for(const t of i){const i=t.properties;if(i&&i.cluster?n+i.point_count<=o?n+=i.point_count:n=this._appendLeaves(e,i.cluster_id,r,o,n):n<o?n++:e.push(t),e.length===r)break}return n}_addTileFeatures(e,t,r,o,n,i){for(const s of e){const e=t[s],a=e.numPoints;let l,u,h;if(a)l=Y(e),u=e.x,h=e.y;else {const t=this.points[e.index];l=t.properties,u=X(t.geometry.coordinates[0]),h=V(t.geometry.coordinates[1]);}const c={type:1,geometry:[[Math.round(this.options.extent*(u*n-r)),Math.round(this.options.extent*(h*n-o))]],tags:l};let f;a?f=e.id:this.options.generateId?f=e.index:this.points[e.index].id&&(f=this.points[e.index].id),void 0!==f&&(c.id=f),i.features.push(c);}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(+e,this.options.maxZoom+1))}_cluster(e,t){const r=[],{radius:o,extent:n,reduce:i,minPoints:s}=this.options,a=o/(n*Math.pow(2,t));for(let o=0;o<e.length;o++){const n=e[o];if(n.zoom<=t)continue;n.zoom=t;const l=this.trees[t+1],u=l.within(n.x,n.y,a),h=n.numPoints||1;let c=h;for(const e of u){const r=l.points[e];r.zoom>t&&(c+=r.numPoints||1);}if(c>h&&c>=s){let e=n.x*h,s=n.y*h,a=i&&h>1?this._map(n,!0):null;const f=(o<<5)+(t+1)+this.points.length;for(const r of u){const o=l.points[r];if(o.zoom<=t)continue;o.zoom=t;const u=o.numPoints||1;e+=o.x*u,s+=o.y*u,o.parentId=f,i&&(a||(a=this._map(n,!0)),i(a,this._map(o)));}n.parentId=f,r.push(G(e/c,s/c,f,c,a));}else if(r.push(n),c>1)for(const e of u){const o=l.points[e];o.zoom<=t||(o.zoom=t,r.push(o));}}return r}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t){if(e.numPoints)return t?D({},e.properties):e.properties;const r=this.points[e.index].properties,o=this.options.map(r);return t&&o===r?D({},o):o}}function G(e,t,r,o,n){return {x:N(e),y:N(t),zoom:1/0,id:r,parentId:-1,numPoints:o,properties:n}}function J(e,t){const[r,o]=e.geometry.coordinates;return {x:N(X(r)),y:N(V(o)),zoom:1/0,index:t,parentId:-1}}function W(e){return {type:\"Feature\",id:e.id,properties:Y(e),geometry:{type:\"Point\",coordinates:[(t=e.x,360*(t-.5)),A(e.y)]}};var t;}function Y(e){const t=e.numPoints,r=t>=1e4?`${Math.round(t/1e3)}k`:t>=1e3?Math.round(t/100)/10+\"k\":t;return D(D({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function X(e){return e/360+.5}function V(e){const t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function A(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function D(e,t){for(const r in t)e[r]=t[r];return e}function $(e){return e.x}function B(e){return e.y}function R(e,t,r,o){for(var n,i=o,s=r-t>>1,a=r-t,l=e[t],u=e[t+1],h=e[r],c=e[r+1],f=t+3;f<r;f+=3){var p=q(e[f],e[f+1],l,u,h,c);if(p>i)n=f,i=p;else if(p===i){var g=Math.abs(f-s);g<a&&(n=f,a=g);}}i>o&&(n-t>3&&R(e,t,n,o),e[n+2]=i,r-n>3&&R(e,n,r,o));}function q(e,t,r,o,n,i){var s=n-r,a=i-o;if(0!==s||0!==a){var l=((e-r)*s+(t-o)*a)/(s*s+a*a);l>1?(r=n,o=i):l>0&&(r+=s*l,o+=a*l);}return (s=e-r)*s+(a=t-o)*a}function U(e,t,r,o){var n={id:void 0===e?null:e,type:t,geometry:r,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,r=e.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)Q(e,t);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var o=0;o<t.length;o++)Q(e,t[o]);else if(\"MultiPolygon\"===r)for(o=0;o<t.length;o++)for(var n=0;n<t[o].length;n++)Q(e,t[o][n]);}(n),n}function Q(e,t){for(var r=0;r<t.length;r+=3)e.minX=Math.min(e.minX,t[r]),e.minY=Math.min(e.minY,t[r+1]),e.maxX=Math.max(e.maxX,t[r]),e.maxY=Math.max(e.maxY,t[r+1]);}function H(e,t,r,o){if(t.geometry){var n=t.geometry.coordinates,i=t.geometry.type,s=Math.pow(r.tolerance/((1<<r.maxZoom)*r.extent),2),a=[],l=t.id;if(r.promoteId?l=t.properties[r.promoteId]:r.generateId&&(l=o||0),\"Point\"===i)K(n,a);else if(\"MultiPoint\"===i)for(var u=0;u<n.length;u++)K(n[u],a);else if(\"LineString\"===i)ee(n,a,s,!1);else if(\"MultiLineString\"===i){if(r.lineMetrics){for(u=0;u<n.length;u++)ee(n[u],a=[],s,!1),e.push(U(l,\"LineString\",a,t.properties));return}te(n,a,s,!1);}else if(\"Polygon\"===i)te(n,a,s,!0);else {if(\"MultiPolygon\"!==i){if(\"GeometryCollection\"===i){for(u=0;u<t.geometry.geometries.length;u++)H(e,{id:l,geometry:t.geometry.geometries[u],properties:t.properties},r,o);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(u=0;u<n.length;u++){var h=[];te(n[u],h,s,!0),a.push(h);}}e.push(U(l,i,a,t.properties));}}function K(e,t){t.push(re(e[0])),t.push(oe(e[1])),t.push(0);}function ee(e,t,r,o){for(var n,i,s=0,a=0;a<e.length;a++){var l=re(e[a][0]),u=oe(e[a][1]);t.push(l),t.push(u),t.push(0),a>0&&(s+=o?(n*u-l*i)/2:Math.sqrt(Math.pow(l-n,2)+Math.pow(u-i,2))),n=l,i=u;}var h=t.length-3;t[2]=1,R(t,0,h,r),t[h+2]=1,t.size=Math.abs(s),t.start=0,t.end=t.size;}function te(e,t,r,o){for(var n=0;n<e.length;n++){var i=[];ee(e[n],i,r,o),t.push(i);}}function re(e){return e/360+.5}function oe(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function ne(e,t,r,o,n,i,s,a){if(o/=t,i>=(r/=t)&&s<o)return e;if(s<r||i>=o)return null;for(var l=[],u=0;u<e.length;u++){var h=e[u],c=h.geometry,f=h.type,p=0===n?h.minX:h.minY,g=0===n?h.maxX:h.maxY;if(p>=r&&g<o)l.push(h);else if(!(g<r||p>=o)){var d=[];if(\"Point\"===f||\"MultiPoint\"===f)ie(c,d,r,o,n);else if(\"LineString\"===f)se(c,d,r,o,n,!1,a.lineMetrics);else if(\"MultiLineString\"===f)le(c,d,r,o,n,!1);else if(\"Polygon\"===f)le(c,d,r,o,n,!0);else if(\"MultiPolygon\"===f)for(var m=0;m<c.length;m++){var y=[];le(c[m],y,r,o,n,!0),y.length&&d.push(y);}if(d.length){if(a.lineMetrics&&\"LineString\"===f){for(m=0;m<d.length;m++)l.push(U(h.id,f,d[m],h.tags));continue}\"LineString\"!==f&&\"MultiLineString\"!==f||(1===d.length?(f=\"LineString\",d=d[0]):f=\"MultiLineString\"),\"Point\"!==f&&\"MultiPoint\"!==f||(f=3===d.length?\"Point\":\"MultiPoint\"),l.push(U(h.id,f,d,h.tags));}}}return l.length?l:null}function ie(e,t,r,o,n){for(var i=0;i<e.length;i+=3){var s=e[i+n];s>=r&&s<=o&&(t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]));}}function se(e,t,r,o,n,i,s){for(var a,l,u=ae(e),h=0===n?he:ce,c=e.start,f=0;f<e.length-3;f+=3){var p=e[f],g=e[f+1],d=e[f+2],m=e[f+3],y=e[f+4],v=0===n?p:g,x=0===n?m:y,w=!1;s&&(a=Math.sqrt(Math.pow(p-m,2)+Math.pow(g-y,2))),v<r?x>r&&(l=h(u,p,g,m,y,r),s&&(u.start=c+a*l)):v>o?x<o&&(l=h(u,p,g,m,y,o),s&&(u.start=c+a*l)):ue(u,p,g,d),x<r&&v>=r&&(l=h(u,p,g,m,y,r),w=!0),x>o&&v<=o&&(l=h(u,p,g,m,y,o),w=!0),!i&&w&&(s&&(u.end=c+a*l),t.push(u),u=ae(e)),s&&(c+=a);}var S=e.length-3;p=e[S],g=e[S+1],d=e[S+2],(v=0===n?p:g)>=r&&v<=o&&ue(u,p,g,d),S=u.length-3,i&&S>=3&&(u[S]!==u[0]||u[S+1]!==u[1])&&ue(u,u[0],u[1],u[2]),u.length&&t.push(u);}function ae(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function le(e,t,r,o,n,i){for(var s=0;s<e.length;s++)se(e[s],t,r,o,n,i,!1);}function ue(e,t,r,o){e.push(t),e.push(r),e.push(o);}function he(e,t,r,o,n,i){var s=(i-t)/(o-t);return e.push(i),e.push(r+(n-r)*s),e.push(1),s}function ce(e,t,r,o,n,i){var s=(i-r)/(n-r);return e.push(t+(o-t)*s),e.push(i),e.push(1),s}function fe(e,t){for(var r=[],o=0;o<e.length;o++){var n,i=e[o],s=i.type;if(\"Point\"===s||\"MultiPoint\"===s||\"LineString\"===s)n=pe(i.geometry,t);else if(\"MultiLineString\"===s||\"Polygon\"===s){n=[];for(var a=0;a<i.geometry.length;a++)n.push(pe(i.geometry[a],t));}else if(\"MultiPolygon\"===s)for(n=[],a=0;a<i.geometry.length;a++){for(var l=[],u=0;u<i.geometry[a].length;u++)l.push(pe(i.geometry[a][u],t));n.push(l);}r.push(U(i.id,s,n,i.tags));}return r}function pe(e,t){var r=[];r.size=e.size,void 0!==e.start&&(r.start=e.start,r.end=e.end);for(var o=0;o<e.length;o+=3)r.push(e[o]+t,e[o+1],e[o+2]);return r}function ge(e,t){if(e.transformed)return e;var r,o,n,i=1<<e.z,s=e.x,a=e.y;for(r=0;r<e.features.length;r++){var l=e.features[r],u=l.geometry,h=l.type;if(l.geometry=[],1===h)for(o=0;o<u.length;o+=2)l.geometry.push(de(u[o],u[o+1],t,i,s,a));else for(o=0;o<u.length;o++){var c=[];for(n=0;n<u[o].length;n+=2)c.push(de(u[o][n],u[o][n+1],t,i,s,a));l.geometry.push(c);}}return e.transformed=!0,e}function de(e,t,r,o,n,i){return [Math.round(r*(e*o-n)),Math.round(r*(t*o-i))]}function me(e,t,r,o,n){for(var i=t===n.maxZoom?0:n.tolerance/((1<<t)*n.extent),s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:o,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},a=0;a<e.length;a++){s.numFeatures++,ye(s,e[a],i,n);var l=e[a].minX,u=e[a].minY,h=e[a].maxX,c=e[a].maxY;l<s.minX&&(s.minX=l),u<s.minY&&(s.minY=u),h>s.maxX&&(s.maxX=h),c>s.maxY&&(s.maxY=c);}return s}function ye(e,t,r,o){var n=t.geometry,i=t.type,s=[];if(\"Point\"===i||\"MultiPoint\"===i)for(var a=0;a<n.length;a+=3)s.push(n[a]),s.push(n[a+1]),e.numPoints++,e.numSimplified++;else if(\"LineString\"===i)ve(s,n,e,r,!1,!1);else if(\"MultiLineString\"===i||\"Polygon\"===i)for(a=0;a<n.length;a++)ve(s,n[a],e,r,\"Polygon\"===i,0===a);else if(\"MultiPolygon\"===i)for(var l=0;l<n.length;l++){var u=n[l];for(a=0;a<u.length;a++)ve(s,u[a],e,r,!0,0===a);}if(s.length){var h=t.tags||null;if(\"LineString\"===i&&o.lineMetrics){for(var c in h={},t.tags)h[c]=t.tags[c];h.mapbox_clip_start=n.start/n.size,h.mapbox_clip_end=n.end/n.size;}var f={geometry:s,type:\"Polygon\"===i||\"MultiPolygon\"===i?3:\"LineString\"===i||\"MultiLineString\"===i?2:1,tags:h};null!==t.id&&(f.id=t.id),e.features.push(f);}}function ve(e,t,r,o,n,i){var s=o*o;if(o>0&&t.size<(n?s:o))r.numPoints+=t.length/3;else {for(var a=[],l=0;l<t.length;l+=3)(0===o||t[l+2]>s)&&(r.numSimplified++,a.push(t[l]),a.push(t[l+1])),r.numPoints++;n&&function(e,t){for(var r=0,o=0,n=e.length,i=n-2;o<n;i=o,o+=2)r+=(e[o]-e[i])*(e[o+1]+e[i+1]);if(r>0===t)for(o=0,n=e.length;o<n/2;o+=2){var s=e[o],a=e[o+1];e[o]=e[n-2-o],e[o+1]=e[n-1-o],e[n-2-o]=s,e[n-1-o]=a;}}(a,i),e.push(a);}}function xe(e,t){var r=(t=this.options=function(e,t){for(var r in t)e[r]=t[r];return e}(Object.create(this.options),t)).debug;if(r&&console.time(\"preprocess data\"),t.maxZoom<0||t.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var o=function(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var o=0;o<e.features.length;o++)H(r,e.features[o],t,o);else H(r,\"Feature\"===e.type?e:{geometry:e},t);return r}(e,t);this.tiles={},this.tileCoords=[],r&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),(o=function(e,t){var r=t.buffer/t.extent,o=e,n=ne(e,1,-1-r,r,0,-1,2,t),i=ne(e,1,1-r,2+r,0,-1,2,t);return (n||i)&&(o=ne(e,1,-r,1+r,0,-1,2,t)||[],n&&(o=fe(n,1).concat(o)),i&&(o=o.concat(fe(i,-1)))),o}(o,t)).length&&this.splitTile(o,0,0,0),r&&(o.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)));}function we(e,t,r){return 32*((1<<e)*r+t)+e}function Se(e,t){const r=e.tileID.canonical;if(!this._geoJSONIndex)return t(null,null);const o=this._geoJSONIndex.getTile(r.z,r.x,r.y);if(!o)return t(null,null);const n=new c(o.features);let i=m(n);0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),t(null,{vectorTile:n,rawData:i.buffer});}xe.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},xe.prototype.splitTile=function(e,t,r,o,n,i,s){for(var a=[e,t,r,o],l=this.options,u=l.debug;a.length;){o=a.pop(),r=a.pop(),t=a.pop(),e=a.pop();var h=1<<t,c=we(t,r,o),f=this.tiles[c];if(!f&&(u>1&&console.time(\"creation\"),f=this.tiles[c]=me(e,t,r,o,l),this.tileCoords.push({z:t,x:r,y:o}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,r,o,f.numFeatures,f.numPoints,f.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++;}if(f.source=e,n){if(t===l.maxZoom||t===n)continue;var g=1<<n-t;if(r!==Math.floor(i/g)||o!==Math.floor(s/g))continue}else if(t===l.indexMaxZoom||f.numPoints<=l.indexMaxPoints)continue;if(f.source=null,0!==e.length){u>1&&console.time(\"clipping\");var d,m,y,v,x,w,S=.5*l.buffer/l.extent,M=.5-S,P=.5+S,b=1+S;d=m=y=v=null,x=ne(e,h,r-S,r+P,0,f.minX,f.maxX,l),w=ne(e,h,r+M,r+b,0,f.minX,f.maxX,l),e=null,x&&(d=ne(x,h,o-S,o+P,1,f.minY,f.maxY,l),m=ne(x,h,o+M,o+b,1,f.minY,f.maxY,l),x=null),w&&(y=ne(w,h,o-S,o+P,1,f.minY,f.maxY,l),v=ne(w,h,o+M,o+b,1,f.minY,f.maxY,l),w=null),u>1&&console.timeEnd(\"clipping\"),a.push(d||[],t+1,2*r,2*o),a.push(m||[],t+1,2*r,2*o+1),a.push(y||[],t+1,2*r+1,2*o),a.push(v||[],t+1,2*r+1,2*o+1);}}},xe.prototype.getTile=function(e,t,r){var o=this.options,n=o.extent,i=o.debug;if(e<0||e>24)return null;var s=1<<e,a=we(e,t=(t%s+s)%s,r);if(this.tiles[a])return ge(this.tiles[a],n);i>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,r);for(var l,u=e,h=t,c=r;!l&&u>0;)u--,h=Math.floor(h/2),c=Math.floor(c/2),l=this.tiles[we(u,h,c)];return l&&l.source?(i>1&&console.log(\"found parent tile z%d-%d-%d\",u,h,c),i>1&&console.time(\"drilling down\"),this.splitTile(l.source,u,h,c,e,t,r),i>1&&console.timeEnd(\"drilling down\"),this.tiles[a]?ge(this.tiles[a],n):null):null};class Me extends e.VectorTileWorkerSource{constructor(e,t,r,o,n){super(e,t,r,o,Se),n&&(this.loadGeoJSON=n);}loadData(t,r){const o=t&&t.request,n=o&&o.collectResourceTiming;this.loadGeoJSON(t,((i,a)=>{if(i||!a)return r(i);if(\"object\"!=typeof a)return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{s(a,!0);try{if(t.filter){const r=e.createExpression(t.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(\"error\"===r.result)throw new Error(r.value.map((e=>`${e.key}: ${e.message}`)).join(\", \"));const o=a.features.filter((e=>r.value.evaluate({zoom:0},e)));a={type:\"FeatureCollection\",features:o};}this._geoJSONIndex=t.cluster?new Z(function({superclusterOptions:t,clusterProperties:r}){if(!r||!t)return t;const o={},n={},i={accumulated:null,zoom:0},s={properties:null},a=Object.keys(r);for(const t of a){const[i,s]=r[t],a=e.createExpression(s),l=e.createExpression(\"string\"==typeof i?[i,[\"accumulated\"],[\"get\",t]]:i);o[t]=a.value,n[t]=l.value;}return t.map=e=>{s.properties=e;const t={};for(const e of a)t[e]=o[e].evaluate(i,s);return t},t.reduce=(e,t)=>{s.properties=t;for(const t of a)i.accumulated=e[t],e[t]=n[t].evaluate(i,s);},t}(t)).load(a.features):function(e,t){return new xe(e,t)}(a,t.geojsonVtOptions);}catch(i){return r(i)}this.loaded={};const l={};if(n){const r=e.getPerformanceMeasurement(o);r&&(l.resourceTiming={},l.resourceTiming[t.source]=JSON.parse(JSON.stringify(r)));}r(null,l);}}));}reloadTile(e,t){const r=this.loaded;return r&&r[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}loadGeoJSON(t,r){if(t.request)e.getJSON(t.request,r);else {if(\"string\"!=typeof t.data)return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));try{return r(null,JSON.parse(t.data))}catch(e){return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}}}class Pe{constructor(t){this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.projections={},this.defaultProjection=e.getProjection({name:\"mercator\"}),this.workerSourceTypes={vector:e.VectorTileWorkerSource,geojson:Me},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name \"${e}\" already registered.`);this.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=t=>{if(e.plugin.isParsed())throw new Error(\"RTL text plugin already registered.\");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText;};}clearCaches(e,t,r){delete this.layerIndexes[e],delete this.availableImages[e],delete this.workerSources[e],delete this.demWorkerSources[e],r();}checkIfReady(e,t,r){r();}setReferrer(e,t){this.referrer=t;}spriteLoaded(t,r){this.isSpriteLoaded[t]=r;for(const o in this.workerSources[t]){const n=this.workerSources[t][o];for(const t in n)n[t]instanceof e.VectorTileWorkerSource&&(n[t].isSpriteLoaded=r,n[t].fire(new e.Event(\"isSpriteLoaded\")));}}setImages(e,t,r){this.availableImages[e]=t;for(const r in this.workerSources[e]){const o=this.workerSources[e][r];for(const e in o)o[e].availableImages=t;}r();}enableTerrain(e,t,r){this.terrain=t,r();}setProjection(t,r){this.projections[t]=e.getProjection(r);}setLayers(e,t,r){this.getLayerIndex(e).replace(t),r();}updateLayers(e,t,r){this.getLayerIndex(e).update(t.layers,t.removedIds),r();}loadTile(t,r,o){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},r):r;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,r.type,r.source).loadTile(n,o);}loadDEMTile(t,r,o){const n=this.enableTerrain?e.extend({buildQuadTree:this.terrain},r):r;this.getDEMWorkerSource(t,r.source).loadTile(n,o);}reloadTile(t,r,o){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},r):r;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,r.type,r.source).reloadTile(n,o);}abortTile(e,t,r){this.getWorkerSource(e,t.type,t.source).abortTile(t,r);}removeTile(e,t,r){this.getWorkerSource(e,t.type,t.source).removeTile(t,r);}removeSource(e,t,r){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const o=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==o.removeSource?o.removeSource(t,r):r();}loadWorkerSource(e,t,r){try{this.self.importScripts(t.url),r();}catch(e){r(e.toString());}}syncRTLPluginState(t,r,o){try{e.plugin.setState(r);const t=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=t){this.self.importScripts(t);const r=e.plugin.isParsed();o(r?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),r);}}catch(e){o(e.toString());}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new o),t}getWorkerSource(e,t,r){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][r]||(this.workerSources[e][t][r]=new this.workerSourceTypes[t]({send:(t,r,o,n,i,s)=>{this.actor.send(t,r,o,e,i,s);},scheduler:this.actor.scheduler},this.getLayerIndex(e),this.getAvailableImages(e),this.isSpriteLoaded[e])),this.workerSources[e][t][r]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new i),this.demWorkerSources[e][t]}enforceCacheSizeLimit(t,r){e.enforceCacheSizeLimit(r);}getWorkerPerformanceMetrics(e,t,r){r(void 0,void 0);}}return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new Pe(self)),Pe}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";var t=i;function i(e){return !function(e){return \"undefined\"==typeof window||\"undefined\"==typeof document?\"not a browser\":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON?function(){if(!(\"Worker\"in window&&\"Blob\"in window&&\"URL\"in window))return !1;var e,t,i=new Blob([\"\"],{type:\"text/javascript\"}),o=URL.createObjectURL(i);try{t=new Worker(o),e=!0;}catch(t){e=!1;}return t&&t.terminate(),URL.revokeObjectURL(o),e}()?\"Uint8ClampedArray\"in window?ArrayBuffer.isView?function(){var e=document.createElement(\"canvas\");e.width=e.height=1;var t=e.getContext(\"2d\");if(!t)return !1;var i=t.getImageData(0,0,1,1);return i&&i.width===e.width}()?(void 0===o[t=e&&e.failIfMajorPerformanceCaveat]&&(o[t]=function(e){var t,o=function(e){var t=document.createElement(\"canvas\"),o=Object.create(i.webGLContextAttributes);return o.failIfMajorPerformanceCaveat=e,t.getContext(\"webgl\",o)||t.getContext(\"experimental-webgl\",o)}(e);if(!o)return !1;try{t=o.createShader(o.VERTEX_SHADER);}catch(e){return !1}return !(!t||o.isContextLost())&&(o.shaderSource(t,\"void main() {}\"),o.compileShader(t),!0===o.getShaderParameter(t,o.COMPILE_STATUS))}(t)),o[t]?document.documentMode?\"insufficient ECMAScript 6 support\":void 0:\"insufficient WebGL support\"):\"insufficient Canvas/getImageData support\":\"insufficient ArrayBuffer support\":\"insufficient Uint8ClampedArray support\":\"insufficient worker support\":\"insufficient JSON support\":\"insufficient Object support\":\"insufficient Function support\":\"insufficent Array support\";var t;}(e)}var o={};function r(e,t){var i=t[0],o=t[1],r=t[2],n=t[3],a=i*n-r*o;return a?(e[0]=n*(a=1/a),e[1]=-o*a,e[2]=-r*a,e[3]=i*a,e):null}function n(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return !1;for(let i=0;i<e.length;i++)if(!n(e[i],t[i]))return !1;return !0}if(\"object\"==typeof e&&null!==e&&null!==t){if(\"object\"!=typeof t)return !1;if(Object.keys(e).length!==Object.keys(t).length)return !1;for(const i in e)if(!n(e[i],t[i]))return !1;return !0}return e===t}i.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};const a={create:function(t,i,o){const r=e.window.document.createElement(t);return void 0!==i&&(r.className=i),o&&o.appendChild(r),r},createSVG:function(t,i,o){const r=e.window.document.createElementNS(\"http://www.w3.org/2000/svg\",t);for(const e of Object.keys(i))r.setAttributeNS(null,e,i[e]);return o&&o.appendChild(r),r}},s=e.window.document&&e.window.document.documentElement.style,l=s&&void 0!==s.userSelect?\"userSelect\":\"WebkitUserSelect\";let c;a.disableDrag=function(){s&&l&&(c=s[l],s[l]=\"none\");},a.enableDrag=function(){s&&l&&(s[l]=c);};const h=function(t){t.preventDefault(),t.stopPropagation(),e.window.removeEventListener(\"click\",h,!0);};function u(t,i,o){const r=t.offsetWidth===i.width?1:t.offsetWidth/i.width;return new e.pointGeometry((o.clientX-i.left)*r,(o.clientY-i.top)*r)}function _(e){const{userImage:t}=e;return !!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}a.suppressClick=function(){e.window.addEventListener(\"click\",h,!0),e.window.setTimeout((()=>{e.window.removeEventListener(\"click\",h,!0);}),0);},a.mousePos=function(e,t){const i=e.getBoundingClientRect();return u(e,i,t)},a.touchPos=function(e,t){const i=e.getBoundingClientRect(),o=[];for(let r=0;r<t.length;r++)o.push(u(e,i,t[r]));return o},a.mouseButton=function(t){return void 0!==e.window.InstallTrigger&&2===t.button&&t.ctrlKey&&e.window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0?0:t.button};class d extends e.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.RGBAImage({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,callback:t}of this.requestors)this._notify(e,t);this.requestors=[];}}getImage(e){return this.images[e]}addImage(e,t){this._validate(e,t)&&(this.images[e]=t);}_validate(t,i){let o=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"stretchX\" value`))),o=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"stretchY\" value`))),o=!1),this._validateContent(i.content,i)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"content\" value`))),o=!1),o}_validateStretch(e,t){if(!e)return !0;let i=0;for(const o of e){if(o[0]<i||o[1]<o[0]||t<o[1])return !1;i=o[1];}return !0}_validateContent(e,t){return !(e&&(4!==e.length||e[0]<0||t.data.width<e[0]||e[1]<0||t.data.height<e[1]||e[2]<0||t.data.width<e[2]||e[3]<0||t.data.height<e[3]||e[2]<e[0]||e[3]<e[1]))}updateImage(e,t){t.version=this.images[e].version+1,this.images[e]=t,this.updatedImages[e]=!0;}removeImage(e){const t=this.images[e];delete this.images[e],delete this.patterns[e],t.userImage&&t.userImage.onRemove&&t.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(e,t){let i=!0;if(!this.isLoaded())for(const t of e)this.images[t]||(i=!1);this.isLoaded()||i?this._notify(e,t):this.requestors.push({ids:e,callback:t});}_notify(t,i){const o={};for(const i of t){this.images[i]||this.fire(new e.Event(\"styleimagemissing\",{id:i}));const t=this.images[i];t?o[i]={data:t.data.clone(),pixelRatio:t.pixelRatio,sdf:t.sdf,version:t.version,stretchX:t.stretchX,stretchY:t.stretchY,content:t.content,hasRenderCallback:Boolean(t.userImage&&t.userImage.render)}:e.warnOnce(`Image \"${i}\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.`);}i(null,o);}getPixelSize(){const{width:e,height:t}=this.atlasImage;return {width:e,height:t}}getPattern(t){const i=this.patterns[t],o=this.getImage(t);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else {const i={w:o.data.width+2,h:o.data.height+2,x:0,y:0},r=new e.ImagePosition(i,o);this.patterns[t]={bin:i,position:r};}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){const i=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new e.Texture(t,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);}_updatePatternAtlas(){const t=[];for(const e in this.patterns)t.push(this.patterns[e].bin);const{w:i,h:o}=e.potpack(t),r=this.atlasImage;r.resize({width:i||1,height:o||1});for(const t in this.patterns){const{bin:i}=this.patterns[t],o=i.x+1,n=i.y+1,a=this.images[t].data,s=a.width,l=a.height;e.RGBAImage.copy(a,r,{x:0,y:0},{x:o,y:n},{width:s,height:l}),e.RGBAImage.copy(a,r,{x:0,y:l-1},{x:o,y:n-1},{width:s,height:1}),e.RGBAImage.copy(a,r,{x:0,y:0},{x:o,y:n+l},{width:s,height:1}),e.RGBAImage.copy(a,r,{x:s-1,y:0},{x:o-1,y:n},{width:1,height:l}),e.RGBAImage.copy(a,r,{x:0,y:0},{x:o+s,y:n},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const t of e){if(this.callbackDispatchedThisFrame[t])continue;this.callbackDispatchedThisFrame[t]=!0;const e=this.images[t];_(e)&&this.updateImage(t,e);}}}const p=new e.Properties({anchor:new e.DataConstantProperty(e.spec.light.anchor),position:new class{constructor(){this.specification=e.spec.light.position;}possiblyEvaluate(t,i){return function([t,i,o]){const r=e.degToRad(i+90),n=e.degToRad(o);return {x:t*Math.cos(r)*Math.sin(n),y:t*Math.sin(r)*Math.sin(n),z:t*Math.cos(n),azimuthal:i,polar:o}}(t.expression.evaluate(i))}interpolate(t,i,o){return {x:e.number(t.x,i.x,o),y:e.number(t.y,i.y,o),z:e.number(t.z,i.z,o),azimuthal:e.number(t.azimuthal,i.azimuthal,o),polar:e.number(t.polar,i.polar,o)}}},color:new e.DataConstantProperty(e.spec.light.color),intensity:new e.DataConstantProperty(e.spec.light.intensity)}),m=\"-transition\";class f extends e.Evented{constructor(t){super(),this._transitionable=new e.Transitionable(p),this.setLight(t),this._transitioning=this._transitionable.untransitioned();}getLight(){return this._transitionable.serialize()}setLight(t,i={}){if(!this._validate(e.validateLight,t,i))for(const i in t){const o=t[i];e.endsWith(i,m)?this._transitionable.setTransition(i.slice(0,-m.length),o):this._transitionable.setValue(i,o);}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(t,i,o){return (!o||!1!==o.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}const g=new e.Properties({source:new e.DataConstantProperty(e.spec.terrain.source),exaggeration:new e.DataConstantProperty(e.spec.terrain.exaggeration)}),v=\"-transition\";class x extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(g),this.set(t),this._transitioning=this._transitionable.untransitioned(),this.drapeRenderMode=i;}get(){return this._transitionable.serialize()}set(t){for(const i in t){const o=t[i];e.endsWith(i,v)?this._transitionable.setTransition(i.slice(0,-v.length),o):this._transitionable.setValue(i,o);}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}}function y(t,i,o,r){const n=e.smoothstep(45,65,o),[a,s]=b(t,r),l=e.length(i);let c=1-Math.min(1,Math.exp((l-a)/(s-a)*-6));return c*=c*c,c=Math.min(1,1.00747*c),c*n*t.alpha}function b(e,t){const i=.5/Math.tan(.5*t);return [e.range[0]+i,e.range[1]+i]}const w=new e.Properties({range:new e.DataConstantProperty(e.spec.fog.range),color:new e.DataConstantProperty(e.spec.fog.color),\"horizon-blend\":new e.DataConstantProperty(e.spec.fog[\"horizon-blend\"])}),T=\"-transition\";class E extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(w),this.set(t),this._transitioning=this._transitionable.untransitioned(),this._transform=i;}get state(){return {range:this.properties.get(\"range\"),horizonBlend:this.properties.get(\"horizon-blend\"),alpha:this.properties.get(\"color\").a}}get(){return this._transitionable.serialize()}set(t,i={}){if(!this._validate(e.validateFog,t,i))for(const i in t){const o=t[i];e.endsWith(i,T)?this._transitionable.setTransition(i.slice(0,-T.length),o):this._transitionable.setValue(i,o);}}getOpacity(t){if(!this._transform.projection.supportsFog)return 0;const i=this.properties&&this.properties.get(\"color\")||1;return e.smoothstep(45,65,t)*i.a}getOpacityAtLatLng(t,i){return this._transform.projection.supportsFog?function(t,i,o){const r=e.MercatorCoordinate.fromLngLat(i),n=o.elevation?o.elevation.getAtPointOrZero(r):0,a=[r.x,r.y,n];return e.transformMat4(a,a,o.mercatorFogMatrix),y(t,a,o.pitch,o._fov)}(this.state,t,i):0}getFovAdjustedRange(e){return this._transform.projection.supportsFog?b(this.state,e):[0,1]}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(t,i,o){return (!o||!1!==o.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}class C{constructor(t,i){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=e.uniqueId();const o=this.workerPool.acquire(this.id);for(let e=0;e<o.length;e++){const t=new C.Actor(o[e],i,this.id);t.name=`Worker ${e}`,this.actors.push(t);}this.ready=!1,this.broadcast(\"checkIfReady\",null,(()=>{this.ready=!0;}));}broadcast(t,i,o){e.asyncAll(this.actors,((e,o)=>{e.send(t,i,o);}),o=o||function(){});}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach((e=>{e.remove();})),this.actors=[],this.workerPool.release(this.id);}}function M(t,i,o){return i*(e.EXTENT/(t.tileSize*Math.pow(2,o-t.tileID.overscaledZ)))}C.Actor=e.Actor;class S{constructor(e,t,i){this.context=e;const o=e.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer;}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const I={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class z{constructor(e,t,i,o){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=o,this.context=e;const r=e.gl;this.buffer=r.createBuffer(),e.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer;}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer);}enableAttributes(e,t){for(let i=0;i<this.attributes.length;i++){const o=t.attributes[this.attributes[i].name];void 0!==o&&e.enableVertexAttribArray(o);}}setVertexAttribPointers(e,t,i){for(let o=0;o<this.attributes.length;o++){const r=this.attributes[o],n=t.attributes[r.name];void 0!==n&&e.vertexAttribPointer(n,r.components,e[I[r.type]],!1,this.itemSize,r.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}class D{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class P extends D{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class A extends D{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1);}}class L extends D{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1);}}class R extends D{getDefault(){return [!0,!0,!0,!0]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class k extends D{getDefault(){return !0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1);}}class O extends D{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1);}}class B extends D{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1);}}class F extends D{getDefault(){const e=this.gl;return [e.KEEP,e.KEEP,e.KEEP]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1);}}class U extends D{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1;}}class N extends D{getDefault(){return [0,1]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1);}}class G extends D{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1;}}class j extends D{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1);}}class Z extends D{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1;}}class V extends D{getDefault(){const e=this.gl;return [e.ONE,e.ZERO]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1);}}class W extends D{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class q extends D{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1);}}class X extends D{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1;}}class $ extends D{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1);}}class H extends D{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1);}}class K extends D{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1);}}class Y extends D{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1);}}class J extends D{getDefault(){const e=this.gl;return [0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class Q extends D{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1;}}class ee extends D{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class te extends D{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1;}}class ie extends D{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class oe extends D{getDefault(){return null}set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class re extends D{constructor(e){super(e),this.vao=e.extVertexArrayObject;}getDefault(){return null}set(e){this.vao&&(e!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(e),this.current=e,this.dirty=!1);}}class ne extends D{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1;}}class ae extends D{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1;}}class se extends D{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1;}}class le extends D{constructor(e,t){super(e),this.context=e,this.parent=t;}getDefault(){return null}}class ce extends le{setDirty(){this.dirty=!0;}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1;}}class he extends le{attachment(){return this.gl.DEPTH_ATTACHMENT}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,this.attachment(),t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class ue extends he{attachment(){return this.gl.DEPTH_STENCIL_ATTACHMENT}}class _e{constructor(e,t,i,o){this.context=e,this.width=t,this.height=i;const r=this.framebuffer=e.gl.createFramebuffer();this.colorAttachment=new ce(e,r),o&&(this.depthAttachment=new he(e,r));}destroy(){const e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){const t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t);}e.deleteFramebuffer(this.framebuffer);}}class de{constructor(e){this.gl=e,this.extVertexArrayObject=this.gl.getExtension(\"OES_vertex_array_object\"),this.clearColor=new P(this),this.clearDepth=new A(this),this.clearStencil=new L(this),this.colorMask=new R(this),this.depthMask=new k(this),this.stencilMask=new O(this),this.stencilFunc=new B(this),this.stencilOp=new F(this),this.stencilTest=new U(this),this.depthRange=new N(this),this.depthTest=new G(this),this.depthFunc=new j(this),this.blend=new Z(this),this.blendFunc=new V(this),this.blendColor=new W(this),this.blendEquation=new q(this),this.cullFace=new X(this),this.cullFaceSide=new $(this),this.frontFace=new H(this),this.program=new K(this),this.activeTexture=new Y(this),this.viewport=new J(this),this.bindFramebuffer=new Q(this),this.bindRenderbuffer=new ee(this),this.bindTexture=new te(this),this.bindVertexBuffer=new ie(this),this.bindElementBuffer=new oe(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new re(this),this.pixelStoreUnpack=new ne(this),this.pixelStoreUnpackPremultiplyAlpha=new ae(this),this.pixelStoreUnpackFlipY=new se(this),this.extTextureFilterAnisotropic=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureFilterAnisotropicForceOff=!1,this.extTextureHalfFloat=e.getExtension(\"OES_texture_half_float\"),this.extTextureHalfFloat&&(e.getExtension(\"OES_texture_half_float_linear\"),this.extRenderToTextureHalfFloat=e.getExtension(\"EXT_color_buffer_half_float\")),this.extTimerQuery=e.getExtension(\"EXT_disjoint_timer_query\"),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE);}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(e,t){return new S(this,e,t)}createVertexBuffer(e,t,i){return new z(this,e,t,i)}createRenderbuffer(e,t,i){const o=this.gl,r=o.createRenderbuffer();return this.bindRenderbuffer.set(r),o.renderbufferStorage(o.RENDERBUFFER,e,t,i),this.bindRenderbuffer.set(null),r}createFramebuffer(e,t,i){return new _e(this,e,t,i)}clear({color:e,depth:t,stencil:i}){const o=this.gl;let r=0;e&&(r|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==t&&(r|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),void 0!==i&&(r|=o.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),o.clear(r);}setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace));}setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range)):this.depthTest.set(!1);}setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask})):this.stencilTest.set(!1);}setColorMode(t){n(t.blendFunction,e.ColorMode.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor)),this.colorMask.set(t.mask);}unbindVAO(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null);}}class pe{constructor(e,t,i,o){this.screenBounds=e,this.cameraPoint=t,this._screenRaycastCache={},this._cameraRaycastCache={},this.isAboveHorizon=i,this.screenGeometry=this.bufferedScreenGeometry(0),this.screenGeometryMercator=this.screenGeometry.map((e=>o.pointCoordinate3D(e))),this.cameraGeometry=this.bufferedCameraGeometry(0);}static createFromScreenPoints(t,i){let o,r;if(t instanceof e.pointGeometry||\"number\"==typeof t[0]){const n=e.pointGeometry.convert(t);o=[e.pointGeometry.convert(t)],r=i.isPointAboveHorizon(n);}else {const n=e.pointGeometry.convert(t[0]),a=e.pointGeometry.convert(t[1]);o=[n,a],r=e.polygonizeBounds(n,a).every((e=>i.isPointAboveHorizon(e)));}return new pe(o,i.getCameraPoint(),r,i)}isPointQuery(){return 1===this.screenBounds.length}bufferedScreenGeometry(t){return e.polygonizeBounds(this.screenBounds[0],1===this.screenBounds.length?this.screenBounds[0]:this.screenBounds[1],t)}bufferedCameraGeometry(t){const i=this.screenBounds[0],o=1===this.screenBounds.length?this.screenBounds[0].add(new e.pointGeometry(1,1)):this.screenBounds[1],r=e.polygonizeBounds(i,o,0,!1);return this.cameraPoint.y>o.y&&(this.cameraPoint.x>i.x&&this.cameraPoint.x<o.x?r.splice(3,0,this.cameraPoint):this.cameraPoint.x>=o.x?r[2]=this.cameraPoint:this.cameraPoint.x<=i.x&&(r[3]=this.cameraPoint)),e.bufferConvexPolygon(r,t)}containsTile(t,i,o){const r=t.queryPadding+1,n=t.tileID.wrap,a=o?this._bufferedCameraMercator(r,i).map((i=>e.getTilePoint(t.tileTransform,i,n))):this._bufferedScreenMercator(r,i).map((i=>e.getTilePoint(t.tileTransform,i,n))),s=this.screenGeometryMercator.map((i=>e.getTileVec3(t.tileTransform,i,n))),l=s.map((t=>new e.pointGeometry(t[0],t[1]))),c=i.getFreeCameraOptions().position||new e.MercatorCoordinate(0,0,0),h=e.getTileVec3(t.tileTransform,c,n),u=s.map((t=>{const i=e.sub(t,t,h);return e.normalize(i,i),new e.Ray(h,i)})),_=M(t,1,i.zoom);if(e.polygonIntersectsBox(a,0,0,e.EXTENT,e.EXTENT))return {queryGeometry:this,tilespaceGeometry:l,tilespaceRays:u,bufferedTilespaceGeometry:a,bufferedTilespaceBounds:(d=e.getBounds(a),d.min.x=e.clamp(d.min.x,0,e.EXTENT),d.min.y=e.clamp(d.min.y,0,e.EXTENT),d.max.x=e.clamp(d.max.x,0,e.EXTENT),d.max.y=e.clamp(d.max.y,0,e.EXTENT),d),tile:t,tileID:t.tileID,pixelToTileUnitsFactor:_};var d;}_bufferedScreenMercator(e,t){const i=me(e);if(this._screenRaycastCache[i])return this._screenRaycastCache[i];{const o=this.bufferedScreenGeometry(e).map((e=>t.pointCoordinate3D(e)));return this._screenRaycastCache[i]=o,o}}_bufferedCameraMercator(e,t){const i=me(e);if(this._cameraRaycastCache[i])return this._cameraRaycastCache[i];{const o=this.bufferedCameraGeometry(e).map((e=>t.pointCoordinate3D(e)));return this._cameraRaycastCache[i]=o,o}}}function me(e){return 100*e|0}function fe(t,i,o){const r=function(r,n){if(r)return o(r);if(n){const r=e.pick(e.extend(n,t),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);n.vector_layers&&(r.vectorLayers=n.vector_layers,r.vectorLayerIds=r.vectorLayers.map((e=>e.id))),r.tiles=i.canonicalizeTileset(r,t.url),o(null,r);}};return t.url?e.getJSON(i.transformRequest(i.normalizeSourceURL(t.url),e.ResourceType.Source),r):e.exported.frame((()=>r(null,t)))}class ge{constructor(t,i,o){this.bounds=e.LngLatBounds.convert(this.validateBounds(t)),this.minzoom=i||0,this.maxzoom=o||24;}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(t){const i=Math.pow(2,t.z),o=Math.floor(e.mercatorXfromLng(this.bounds.getWest())*i),r=Math.floor(e.mercatorYfromLat(this.bounds.getNorth())*i),n=Math.ceil(e.mercatorXfromLng(this.bounds.getEast())*i),a=Math.ceil(e.mercatorYfromLat(this.bounds.getSouth())*i);return t.x>=o&&t.x<n&&t.y>=r&&t.y<a}}class ve extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.dispatcher=o,this.setEventedParent(r),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=e.extend({type:\"raster\"},i),e.extend(this,e.pick(i,[\"url\",\"scheme\",\"tileSize\"]));}load(){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=fe(this._options,this.map._requestManager,((t,i)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(e.extend(this,i),i.bounds&&(this.tileBounds=new ge(i.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(i.tiles),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}onAdd(e){this.map=e,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return e.extend({},this._options)}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const o=e.exported.devicePixelRatio>=2,r=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),o,this.tileSize);t.request=e.getImage(this.map._requestManager.transformRequest(r,e.ResourceType.Tile),((o,r,n,a)=>{if(delete t.request,t.aborted)t.state=\"unloaded\",i(null);else if(o)t.state=\"errored\",i(o);else if(r){this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:n,expires:a});const o=this.map.painter.context,s=o.gl;t.texture=this.map.painter.getTileTexture(r.width),t.texture?t.texture.update(r,{useMipmap:!0}):(t.texture=new e.Texture(o,r,s.RGBA,{useMipmap:!0}),t.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE),o.extTextureFilterAnisotropic&&s.texParameterf(s.TEXTURE_2D,o.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,o.extTextureFilterAnisotropicMax)),t.state=\"loaded\",e.cacheEntryPossiblyAdded(this.dispatcher),i(null);}}));}abortTile(e,t){e.request&&(e.request.cancel(),delete e.request),t();}unloadTile(e,t){e.texture&&this.map.painter.saveTileTexture(e.texture),t();}hasTransition(){return !1}}let xe;function ye(t,i,o,r,n,a,s,l){const c=[t,o,n,i,r,a,1,1,1],h=[s,l,1],u=e.adjoint([],c),[_,d,p]=e.transformMat3(h,h,e.transpose(u,u));return e.multiply(c,[_,0,0,0,d,0,0,0,p],c)}class be extends e.Evented{constructor(e,t,i,o){super(),this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(o),this.options=t;}load(t,i){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,e.getImage(this.map._requestManager.transformRequest(this.url,e.ResourceType.Image),((o,r)=>{this._loaded=!0,o?this.fire(new e.ErrorEvent(o)):r&&(this.image=e.exported.getImageData(r),this.width=this.image.width,this.height=this.image.height,t&&(this.coordinates=t),i&&i(),this._finishLoading());}));}loaded(){return this._loaded}updateImage(e){return this.image&&e.url?(this.options.url=e.url,this.load(e.coordinates,(()=>{this.texture=null;})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));}onAdd(e){this.map=e,this.load();}setCoordinates(t){this.coordinates=t,delete this._boundsArray;const i=t.map(e.MercatorCoordinate.fromLngLat);return this.tileID=function(t){let i=1/0,o=1/0,r=-1/0,n=-1/0;for(const e of t)i=Math.min(i,e.x),o=Math.min(o,e.y),r=Math.max(r,e.x),n=Math.max(n,e.y);const a=Math.max(r-i,n-o),s=Math.max(0,Math.floor(-Math.log(a)/Math.LN2)),l=Math.pow(2,s);return new e.CanonicalTileID(s,Math.floor((i+r)/2*l),Math.floor((o+n)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z,this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}_clear(){delete this._boundsArray;}_makeBoundsArray(){const t=e.tileTransform(this.tileID,this.map.transform.projection),[i,o,r,n]=this.coordinates.map((i=>{const o=t.projection.project(i[0],i[1]);return e.getTilePoint(t,o)._round()}));return this.perspectiveTransform=function(t,i,o,r,n,a,s,l,c,h){const u=ye(0,0,t,0,0,i,t,i),_=ye(o,r,n,a,s,l,c,h);return e.multiply(_,e.adjoint(u,u),_),[_[6]/_[8]*t/e.EXTENT,_[7]/_[8]*i/e.EXTENT]}(this.width,this.height,i.x,i.y,o.x,o.y,n.x,n.y,r.x,r.y),this._boundsArray=new e.StructArrayLayout4i8,this._boundsArray.emplaceBack(i.x,i.y,0,0),this._boundsArray.emplaceBack(o.x,o.y,e.EXTENT,0),this._boundsArray.emplaceBack(n.x,n.y,0,e.EXTENT),this._boundsArray.emplaceBack(r.x,r.y,e.EXTENT,e.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const t=this.map.painter.context,i=t.gl;this._boundsArray||this._makeBoundsArray(),this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,e.boundsAttributes.members)),this.boundsSegments||(this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new e.Texture(t,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture);}}loadTile(e,t){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={},t(null)):(e.state=\"errored\",t(null));}serialize(){return {type:\"image\",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return !1}}const we={vector:class extends e.Evented{constructor(t,i,o,r){if(super(),this.id=t,this.dispatcher=o,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,e.extend(this,e.pick(i,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=e.extend({type:\"vector\"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(r),this._tileWorkers={},this._deduped=new e.DedupedRequest;}load(){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=fe(this._options,this.map._requestManager,((t,i)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(e.extend(this,i),i.bounds&&(this.tileBounds=new ge(i.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(i.tiles,this.map._requestManager._customAccessToken),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}onAdd(e){this.map=e,this.load();}setSourceProperty(e){this._tileJSONRequest&&this._tileJSONRequest.cancel(),e();const t=this.map.style._getSourceCaches(this.id);for(const e of t)e.clearTiles();this.load();}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return e.extend({},this._options)}loadTile(t,i){const o=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme)),r={request:this.map._requestManager.transformRequest(o,e.ResourceType.Tile),data:void 0,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,isSymbolTile:t.isSymbolTile};if(r.request.collectResourceTiming=this._collectResourceTiming,t.actor&&\"expired\"!==t.state)\"loading\"===t.state?t.reloadCallback=i:t.request=t.actor.send(\"reloadTile\",r,n.bind(this));else if(t.actor=this._tileWorkers[o]=this._tileWorkers[o]||this.dispatcher.getActor(),this.dispatcher.ready)t.request=t.actor.send(\"loadTile\",r,n.bind(this),void 0,!0);else {const i=e.loadVectorTile.call({deduped:this._deduped},r,((e,i)=>{e||!i?n.call(this,e):(r.data={cacheControl:i.cacheControl,expires:i.expires,rawData:i.rawData.slice(0)},t.actor&&t.actor.send(\"loadTile\",r,n.bind(this),void 0,!0));}),!0);t.request={cancel:i};}function n(o,r){return delete t.request,t.aborted?i(null):o&&404!==o.status?i(o):(r&&r.resourceTiming&&(t.resourceTiming=r.resourceTiming),this.map._refreshExpiredTiles&&r&&t.setExpiryData(r),t.loadVectorData(r,this.map.painter),e.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.actor&&e.actor.send(\"abortTile\",{uid:e.uid,type:this.type,source:this.id});}unloadTile(e){e.unloadVectorData(),e.actor&&e.actor.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id});}hasTransition(){return !1}afterUpdate(){this._tileWorkers={};}},raster:ve,\"raster-dem\":class extends ve{constructor(t,i,o,r){super(t,i,o,r),this.type=\"raster-dem\",this.maxzoom=22,this._options=e.extend({type:\"raster-dem\"},i),this.encoding=i.encoding||\"mapbox\";}loadTile(t,i){const o=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize);function r(e,o){e&&(t.state=\"errored\",i(e)),o&&(t.dem=o,t.dem.onDeserialize(),t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0,t.state=\"loaded\",i(null));}t.request=e.getImage(this.map._requestManager.transformRequest(o,e.ResourceType.Tile),function(o,n,a,s){if(delete t.request,t.aborted)t.state=\"unloaded\",i(null);else if(o)t.state=\"errored\",i(o);else if(n){this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:a,expires:s});const i=e.window.ImageBitmap&&n instanceof e.window.ImageBitmap&&(null==xe&&(xe=e.window.OffscreenCanvas&&new e.window.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof e.window.createImageBitmap),xe),o=1-(n.width-e.prevPowerOfTwo(n.width))/2;o<1||t.neighboringTiles||(t.neighboringTiles=this._getNeighboringTiles(t.tileID));const l=i?n:e.exported.getImageData(n,o),c={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:l,encoding:this.encoding,padding:o};t.actor&&\"expired\"!==t.state||(t.actor=this.dispatcher.getActor(),t.actor.send(\"loadDEMTile\",c,r.bind(this),void 0,!0));}}.bind(this));}_getNeighboringTiles(t){const i=t.canonical,o=Math.pow(2,i.z),r=(i.x-1+o)%o,n=0===i.x?t.wrap-1:t.wrap,a=(i.x+1+o)%o,s=i.x+1===o?t.wrap+1:t.wrap,l={};return l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y).key]={backfilled:!1},i.y>0&&(l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y-1).key]={backfilled:!1}),i.y+1<o&&(l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y+1).key]={backfilled:!1}),l}unloadTile(e){e.demTexture&&this.map.painter.saveTileTexture(e.demTexture),e.fbo&&(e.fbo.destroy(),delete e.fbo),e.dem&&delete e.dem,delete e.neighboringTiles,e.state=\"unloaded\";}},geojson:class extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._loaded=!1,this.actor=o.getActor(),this.setEventedParent(r),this._data=i.data,this._options=e.extend({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;const n=e.EXTENT/this.tileSize;this.workerOptions=e.extend({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*n,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*n,extent:e.EXTENT,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?i.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,i.clusterMinPoints||2),extent:e.EXTENT,radius:(void 0!==i.clusterRadius?i.clusterRadius:50)*n,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions);}onAdd(e){this.map=e,this.setData(this._data);}setData(e){return this._data=e,this._updateWorkerData(),this}getClusterExpansionZoom(e,t){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:e,source:this.id},t),this}getClusterChildren(e,t){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:e,source:this.id},t),this}getClusterLeaves(e,t,i,o){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:e,limit:t,offset:i},o),this}_updateWorkerData(){if(this._pendingLoad)return void(this._coalesce=!0);this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._loaded=!1;const t=e.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(t.request=this.map._requestManager.transformRequest(e.exported.resolveURL(i),e.ResourceType.Source),t.request.collectResourceTiming=this._collectResourceTiming):t.data=JSON.stringify(i),this._pendingLoad=this.actor.send(`${this.type}.loadData`,t,((t,i)=>{if(this._loaded=!0,this._pendingLoad=null,t)this.fire(new e.ErrorEvent(t));else {const t={dataType:\"source\",sourceDataType:this._metadataFired?\"content\":\"metadata\"};this._collectResourceTiming&&i&&i.resourceTiming&&i.resourceTiming[this.id]&&(t.resourceTiming=i.resourceTiming[this.id]),this.fire(new e.Event(\"data\",t)),this._metadataFired=!0;}this._coalesce&&(this._updateWorkerData(),this._coalesce=!1);}));}loaded(){return this._loaded}loadTile(t,i){const o=t.actor?\"reloadTile\":\"loadTile\";t.actor=this.actor,t.request=this.actor.send(o,{type:this.type,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},((e,r)=>(delete t.request,t.unloadVectorData(),t.aborted?i(null):e?i(e):(t.loadVectorData(r,this.map.painter,\"reloadTile\"===o),i(null)))),void 0,\"loadTile\"===o);}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.aborted=!0;}unloadTile(e){e.unloadVectorData(),this.actor.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id});}onRemove(){this._pendingLoad&&this._pendingLoad.cancel();}serialize(){return e.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return !1}},video:class extends be{constructor(e,t,i,o){super(e,t,i,o),this.roundZoom=!0,this.type=\"video\",this.options=t;}load(){this._loaded=!1;const t=this.options;this.urls=[];for(const i of t.urls)this.urls.push(this.map._requestManager.transformRequest(i,e.ResourceType.Source).url);e.getVideo(this.urls,((t,i)=>{this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(this.video=i,this.video.loop=!0,this.video.setAttribute(\"playsinline\",\"\"),this.video.addEventListener(\"playing\",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading());}));}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(t){if(this.video){const i=this.video.seekable;t<i.start(0)||t>i.end(0)?this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=t;}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const t=this.map.painter.context,i=t.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new e.Texture(t,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),this.width=this.video.videoWidth,this.height=this.video.videoHeight),this._boundsArray||this._makeBoundsArray(),this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,e.boundsAttributes.members)),this.boundsSegments||(this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2));for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture);}}serialize(){return {type:\"video\",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},image:be,canvas:class extends be{constructor(t,i,o,r){super(t,i,o,r),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>\"number\"!=typeof e))))||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property \"coordinates\"'))),i.animate&&\"boolean\"!=typeof i.animate&&this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'optional \"animate\" property must be a boolean value'))),i.canvas?\"string\"==typeof i.canvas||i.canvas instanceof e.window.HTMLCanvasElement||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property \"canvas\"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof e.window.HTMLCanvasElement?this.options.canvas:e.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new e.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,o=i.gl;this._boundsArray||this._makeBoundsArray(),this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,e.boundsAttributes.members)),this.boundsSegments||(this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new e.Texture(i,this.canvas,o.RGBA,{premultiply:!0});for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture);}}serialize(){return {type:\"canvas\",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of [this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return !0;return !1}}},Te=function(t,i,o,r){const n=new we[i.type](t,i,o,r);if(n.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${n.id}`);return e.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],n),n};function Ee(t,i){const o=e.identity([]);return e.scale(o,o,[.5*t.width,.5*-t.height,1]),e.translate(o,o,[1,-1,0]),e.multiply$1(o,o,t.calculateProjMatrix(i.toUnwrapped()))}function Ce(e,t,i,o,r,n,a,s=!1){const l=e.tilesIn(o,a,s);l.sort(Se);const c=[];for(const o of l)c.push({wrappedTileID:o.tile.tileID.wrapped().key,queryResults:o.tile.queryRenderedFeatures(t,i,e._state,o,r,n,Ee(e.transform,o.tile.tileID),s)});const h=function(e){const t={},i={};for(const o of e){const e=o.queryResults,r=o.wrappedTileID,n=i[r]=i[r]||{};for(const i in e){const o=e[i],r=n[i]=n[i]||{},a=t[i]=t[i]||[];for(const e of o)r[e.featureIndex]||(r[e.featureIndex]=!0,a.push(e));}}return t}(c);for(const t in h)h[t].forEach((t=>{const i=t.feature,o=e.getFeatureState(i.layer[\"source-layer\"],i.id);i.source=i.layer.source,i.layer[\"source-layer\"]&&(i.sourceLayer=i.layer[\"source-layer\"]),i.state=o;}));return h}function Me(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),o=[],r={};for(let e=0;e<i.length;e++){const n=i[e],a=n.tileID.canonical.key;r[a]||(r[a]=!0,n.querySourceFeatures(o,t));}return o}function Se(e,t){const i=e.tileID,o=t.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}function Ie(){return null!=Kr.workerClass?new Kr.workerClass:new e.window.Worker(Kr.workerUrl)}const ze=\"mapboxgl_preloaded_worker_pool\";class De{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<De.workerCount;)this.workers.push(new Ie);return this.active[e]=!0,this.workers.slice()}release(e){delete this.active[e],0===this.numActive()&&(this.workers.forEach((e=>{e.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[ze]}numActive(){return Object.keys(this.active).length}}let Pe;function Ae(){return Pe||(Pe=new De),Pe}function Le(t,i){const o={};for(const e in t)\"ref\"!==e&&(o[e]=t[e]);return e.refProperties.forEach((e=>{e in i&&(o[e]=i[e]);})),o}function Re(e){e=e.slice();const t=Object.create(null);for(let i=0;i<e.length;i++)t[e[i].id]=e[i];for(let i=0;i<e.length;i++)\"ref\"in e[i]&&(e[i]=Le(e[i],t[e[i].ref]));return e}De.workerCount=2;const ke={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setGeoJSONSourceData:\"setGeoJSONSourceData\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\",setTerrain:\"setTerrain\",setFog:\"setFog\",setProjection:\"setProjection\"};function Oe(e,t,i){i.push({command:ke.addSource,args:[e,t[e]]});}function Be(e,t,i){t.push({command:ke.removeSource,args:[e]}),i[e]=!0;}function Fe(e,t,i,o){Be(e,i,o),Oe(e,t,i);}function Ue(e,t,i){let o;for(o in e[i])if(e[i].hasOwnProperty(o)&&\"data\"!==o&&!n(e[i][o],t[i][o]))return !1;for(o in t[i])if(t[i].hasOwnProperty(o)&&\"data\"!==o&&!n(e[i][o],t[i][o]))return !1;return !0}function Ne(e,t,i,o,r,a){let s;for(s in t=t||{},e=e||{})e.hasOwnProperty(s)&&(n(e[s],t[s])||i.push({command:a,args:[o,s,t[s],r]}));for(s in t)t.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(n(e[s],t[s])||i.push({command:a,args:[o,s,t[s],r]}));}function Ge(e){return e.id}function je(e,t){return e[t.id]=t,e}class Ze{constructor(e,t){this.reset(e,t);}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e<this.points.length;e++)this._distances[e]=this._distances[e-1]+this.points[e].dist(this.points[e-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(t||0,.5*this.length),this.paddedLength=this.length-2*this.padding;}lerp(t){if(1===this.points.length)return this.points[0];t=e.clamp(t,0,1);let i=1,o=this._distances[i];const r=t*this.paddedLength+this.padding;for(;o<r&&i<this._distances.length;)o=this._distances[++i];const n=i-1,a=this._distances[n],s=o-a,l=s>0?(r-a)/s:0;return this.points[n].mult(1-l).add(this.points[i].mult(l))}}class Ve{constructor(e,t,i){const o=this.boxCells=[],r=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;e<this.xCellCount*this.yCellCount;e++)o.push([]),r.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=e,this.height=t,this.xScale=this.xCellCount/e,this.yScale=this.yCellCount/t,this.boxUid=0,this.circleUid=0;}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(e,t,i,o,r){this._forEachCell(t,i,o,r,this._insertBoxCell,this.boxUid++),this.boxKeys.push(e),this.bboxes.push(t),this.bboxes.push(i),this.bboxes.push(o),this.bboxes.push(r);}insertCircle(e,t,i,o){this._forEachCell(t-o,i-o,t+o,i+o,this._insertCircleCell,this.circleUid++),this.circleKeys.push(e),this.circles.push(t),this.circles.push(i),this.circles.push(o);}_insertBoxCell(e,t,i,o,r,n){this.boxCells[r].push(n);}_insertCircleCell(e,t,i,o,r,n){this.circleCells[r].push(n);}_query(e,t,i,o,r,n){if(i<0||e>this.width||o<0||t>this.height)return !r&&[];const a=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=o){if(r)return !0;for(let e=0;e<this.boxKeys.length;e++)a.push({key:this.boxKeys[e],x1:this.bboxes[4*e],y1:this.bboxes[4*e+1],x2:this.bboxes[4*e+2],y2:this.bboxes[4*e+3]});for(let e=0;e<this.circleKeys.length;e++){const t=this.circles[3*e],i=this.circles[3*e+1],o=this.circles[3*e+2];a.push({key:this.circleKeys[e],x1:t-o,y1:i-o,x2:t+o,y2:i+o});}return n?a.filter(n):a}return this._forEachCell(e,t,i,o,this._queryCell,a,{hitTest:r,seenUids:{box:{},circle:{}}},n),r?a.length>0:a}_queryCircle(e,t,i,o,r){const n=e-i,a=e+i,s=t-i,l=t+i;if(a<0||n>this.width||l<0||s>this.height)return !o&&[];const c=[];return this._forEachCell(n,s,a,l,this._queryCellCircle,c,{hitTest:o,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},r),o?c.length>0:c}query(e,t,i,o,r){return this._query(e,t,i,o,!1,r)}hitTest(e,t,i,o,r){return this._query(e,t,i,o,!0,r)}hitTestCircle(e,t,i,o){return this._queryCircle(e,t,i,!0,o)}_queryCell(e,t,i,o,r,n,a,s){const l=a.seenUids,c=this.boxCells[r];if(null!==c){const r=this.bboxes;for(const h of c)if(!l.box[h]){l.box[h]=!0;const c=4*h;if(e<=r[c+2]&&t<=r[c+3]&&i>=r[c+0]&&o>=r[c+1]&&(!s||s(this.boxKeys[h]))){if(a.hitTest)return n.push(!0),!0;n.push({key:this.boxKeys[h],x1:r[c],y1:r[c+1],x2:r[c+2],y2:r[c+3]});}}}const h=this.circleCells[r];if(null!==h){const r=this.circles;for(const c of h)if(!l.circle[c]){l.circle[c]=!0;const h=3*c;if(this._circleAndRectCollide(r[h],r[h+1],r[h+2],e,t,i,o)&&(!s||s(this.circleKeys[c]))){if(a.hitTest)return n.push(!0),!0;{const e=r[h],t=r[h+1],i=r[h+2];n.push({key:this.circleKeys[c],x1:e-i,y1:t-i,x2:e+i,y2:t+i});}}}}}_queryCellCircle(e,t,i,o,r,n,a,s){const l=a.circle,c=a.seenUids,h=this.boxCells[r];if(null!==h){const e=this.bboxes;for(const t of h)if(!c.box[t]){c.box[t]=!0;const i=4*t;if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!s||s(this.boxKeys[t])))return n.push(!0),!0}}const u=this.circleCells[r];if(null!==u){const e=this.circles;for(const t of u)if(!c.circle[t]){c.circle[t]=!0;const i=3*t;if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!s||s(this.circleKeys[t])))return n.push(!0),!0}}}_forEachCell(e,t,i,o,r,n,a,s){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(o);for(let _=l;_<=h;_++)for(let l=c;l<=u;l++)if(r.call(this,e,t,i,o,this.xCellCount*l+_,n,a,s))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,o,r,n){const a=o-e,s=r-t,l=i+n;return l*l>a*a+s*s}_circleAndRectCollide(e,t,i,o,r,n,a){const s=(n-o)/2,l=Math.abs(e-(o+s));if(l>s+i)return !1;const c=(a-r)/2,h=Math.abs(t-(r+c));if(h>c+i)return !1;if(l<=s||h<=c)return !0;const u=l-s,_=h-c;return u*u+_*_<=i*i}}const We=Math.tan(85*Math.PI/180);function qe(t,i,o,n,a,s){let l=e.create();if(o){if(\"globe\"===a.projection.name)l=e.calculateGlobeMatrix(a,a.worldSize/a._projectionScaler,[0,0]),e.multiply$1(l,l,e.globeDenormalizeECEF(e.globeTileBounds(i)));else {const e=r([],s);l[0]=e[0],l[1]=e[1],l[4]=e[2],l[5]=e[3];}n||e.rotateZ(l,l,a.angle);}else e.multiply$1(l,a.labelPlaneMatrix,t);return l}function Xe(t,i,o,r,n,a){if(o){if(\"globe\"===n.projection.name){const s=qe(t,i,o,r,n,a);return e.invert(s,s),e.multiply$1(s,t,s),s}{const i=e.clone(t),o=e.identity([]);return o[0]=a[0],o[1]=a[1],o[4]=a[2],o[5]=a[3],e.multiply$1(i,i,o),r||e.rotateZ(i,i,-n.angle),i}}return n.glCoordMatrix}function $e(t,i,o=0){const r=[t.x,t.y,o,1];o?e.transformMat4$1(r,r,i):at(r,r,i);const n=r[3];return {point:new e.pointGeometry(r[0]/n,r[1]/n),signedDistanceFromCamera:n}}function He(e,t){return Math.min(.5+e/t*.5,1.5)}function Ke(e,t){const i=e[0]/e[3],o=e[1]/e[3];return i>=-t[0]&&i<=t[0]&&o>=-t[1]&&o<=t[1]}function Ye(t,i,o,r,n,a,s,l,c,h){const u=o.transform,_=r?t.textSizeData:t.iconSizeData,d=e.evaluateSizeForZoom(_,o.transform.zoom),p=[256/o.width*2+1,256/o.height*2+1],m=r?t.text.dynamicLayoutVertexArray:t.icon.dynamicLayoutVertexArray;m.clear();const f=t.lineVertexArray,g=r?t.text.placedSymbolArray:t.icon.placedSymbolArray,v=o.transform.width/o.transform.height;let x=!1;for(let r=0;r<g.length;r++){const y=g.get(r);if(y.writingMode!==e.WritingMode.vertical||x||0!==r&&g.get(r-1).writingMode===e.WritingMode.horizontal||(x=!0),y.hidden||y.writingMode===e.WritingMode.vertical&&!x){nt(y.numGlyphs,m);continue}x=!1;const b=new e.pointGeometry(y.tileAnchorX,y.tileAnchorY),w=c?c(b):[0,0,0],T=u.projection.projectTilePoint(b.x,b.y,h.canonical),E=[T.x+w[0],T.y+w[1],T.z+w[2]],C=[...E,1];if(e.transformMat4$1(C,C,i),!Ke(C,p)){nt(y.numGlyphs,m);continue}const M=He(o.transform.cameraToCenterDistance,C[3]),S=e.evaluateSizeForFeature(_,d,y),I=s?S/M:S*M,z=$e(new e.pointGeometry(E[0],E[1]),n,E[2]);if(z.signedDistanceFromCamera<=0){nt(y.numGlyphs,m);continue}let D={};const P=s?null:c,A=et(y,I,!1,l,i,n,a,t.glyphOffsetArray,f,m,z.point,b,D,v,P,u.projection,h);x=A.useVertical,P&&A.needsFlipping&&(D={}),(A.notEnoughRoom||x||A.needsFlipping&&et(y,I,!0,l,i,n,a,t.glyphOffsetArray,f,m,z.point,b,D,v,P,u.projection,h).notEnoughRoom)&&nt(y.numGlyphs,m);}r?t.text.dynamicLayoutVertexBuffer.updateData(m):t.icon.dynamicLayoutVertexBuffer.updateData(m);}function Je(e,t,i,o,r,n,a,s,l,c,h,u,_,d,p){const m=s.glyphStartIndex+s.numGlyphs,f=s.lineStartIndex,g=s.lineStartIndex+s.lineLength,v=t.getoffsetX(s.glyphStartIndex),x=t.getoffsetX(m-1),y=ot(e*v,i,o,r,n,a,s.segment,f,g,l,c,h,u,_,!0,d,p);if(!y)return null;const b=ot(e*x,i,o,r,n,a,s.segment,f,g,l,c,h,u,_,!0,d,p);return b?{first:y,last:b}:null}function Qe(t,i,o,r){return t.writingMode===e.WritingMode.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*r?{useVertical:!0}:t.writingMode===e.WritingMode.vertical?i.y<o.y?{needsFlipping:!0}:null:0!==t.flipState&&function(e,t,i){const o=(t.x-e.x)*i;return 0===o||Math.abs((t.y-e.y)/o)>We}(i,o,r)?1===t.flipState?{needsFlipping:!0}:null:i.x>o.x?{needsFlipping:!0}:null}function et(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f,g){const v=i/24,x=t.lineOffsetX*v,y=t.lineOffsetY*v;let b;if(t.numGlyphs>1){const e=t.glyphStartIndex+t.numGlyphs,i=t.lineStartIndex,n=t.lineStartIndex+t.lineLength,h=Je(v,l,x,y,o,u,_,t,c,a,d,m,!1,f,g);if(!h)return {notEnoughRoom:!0};const w=$e(h.first.point,s).point,T=$e(h.last.point,s).point;if(r&&!o){const e=Qe(t,w,T,p);if(t.flipState=e&&e.needsFlipping?1:2,e)return e}b=[h.first];for(let r=t.glyphStartIndex+1;r<e-1;r++)b.push(ot(v*l.getoffsetX(r),x,y,o,u,_,t.segment,i,n,c,a,d,m,!1,!1,f,g));b.push(h.last);}else {if(r&&!o){const i=$e(_,n).point,o=t.lineStartIndex+t.segment+1,r=new e.pointGeometry(c.getx(o),c.gety(o)),a=$e(r,n),s=Qe(t,i,a.signedDistanceFromCamera>0?a.point:it(_,r,i,1,n,void 0,f,g.canonical),p);if(t.flipState=s&&s.needsFlipping?1:2,s)return s}const i=ot(v*l.getoffsetX(t.glyphStartIndex),x,y,o,u,_,t.segment,t.lineStartIndex,t.lineStartIndex+t.lineLength,c,a,d,m,!1,!1,f,g);if(!i)return {notEnoughRoom:!0};b=[i];}for(const t of b)e.addDynamicAttributes(h,t.point,t.angle);return {}}function tt(t,i,o,r,n){const a=r.projectTilePoint(t.x,t.y,i);if(!n)return $e(a,o,a.z);const s=n(t);return $e(new e.pointGeometry(a.x+s[0],a.y+s[1]),o,a.z+s[2])}function it(e,t,i,o,r,n,a,s){const l=tt(e.add(e.sub(t)._unit()),s,r,a,n).point,c=i.sub(l);return i.add(c._mult(o/c.mag()))}function ot(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f,g){const v=r?t-i:t+i;let x=v>0?1:-1,y=0;r&&(x*=-1,y=Math.PI),x<0&&(y+=Math.PI);let b=x>0?l+s:l+s+1,w=n,T=n,E=0,C=0;const M=Math.abs(v),S=[],I=[];let z=a;const D=()=>{const t=b-x;return 0===E?a:new e.pointGeometry(h.getx(t),h.gety(t))},P=()=>it(D(),z,T,M-E+1,u,d,f,g.canonical);for(;E+C<=M;){if(b+=x,b<l||b>=c)return null;if(T=w,S.push(w),p&&I.push(z||D()),w=_[b],void 0===w){z=new e.pointGeometry(h.getx(b),h.gety(b));const t=tt(z,g.canonical,u,f,d);w=t.signedDistanceFromCamera>0?_[b]=t.point:P();}else z=null;E+=C,C=T.dist(w);}m&&d&&(z=z||new e.pointGeometry(h.getx(b),h.gety(b)),_[b]=w=void 0===_[b]?w:P(),C=T.dist(w));const A=(M-E)/C,L=w.sub(T),R=L.mult(A)._add(T);o&&R._add(L._unit()._perp()._mult(o*x));const k=y+Math.atan2(w.y-T.y,w.x-T.x);return S.push(R),p&&(z=z||new e.pointGeometry(h.getx(b),h.gety(b)),I.push(function(t,i,o){const r=1-o;return new e.pointGeometry(t.x*r+i.x*o,t.y*r+i.y*o)}(I.length>0?I[I.length-1]:z,z,A))),{point:R,angle:k,path:S,tilePath:I}}const rt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function nt(e,t){for(let i=0;i<e;i++){const e=t.length;t.resize(e+4),t.float32.set(rt,3*e);}}function at(e,t,i){const o=t[0],r=t[1];return e[0]=i[0]*o+i[4]*r+i[12],e[1]=i[1]*o+i[5]*r+i[13],e[3]=i[3]*o+i[7]*r+i[15],e}const st=100;class lt{constructor(e,t,i=new Ve(e.width+200,e.height+200,25),o=new Ve(e.width+200,e.height+200,25)){this.transform=e,this.grid=i,this.ignoredGrid=o,this.pitchfactor=Math.cos(e._pitch)*e.cameraToCenterDistance,this.screenRightBoundary=e.width+st,this.screenBottomBoundary=e.height+st,this.gridRightBoundary=e.width+200,this.gridBottomBoundary=e.height+200,this.fogState=t;}placeCollisionBox(e,t,i,o,r,n,a){let s=t.projectedAnchorX,l=t.projectedAnchorY,c=t.projectedAnchorZ;const h=t.elevation,u=t.tileID;if(h&&u){const e=this.transform.projection.createTileTransform(this.transform,this.transform.worldSize),i=e.upVector(u.canonical,t.tileAnchorX,t.tileAnchorY),o=e.upVectorScale(u.canonical);s+=i[0]*h*o,l+=i[1]*h*o,c+=i[2]*h*o;}const _=this.projectAndGetPerspectiveRatio(n,s,l,c,t.tileID),d=r*_.perspectiveRatio,p=(t.x1*e+i.x-t.padding)*d+_.point.x,m=(t.y1*e+i.y-t.padding)*d+_.point.y,f=(t.x2*e+i.x+t.padding)*d+_.point.x,g=(t.y2*e+i.y+t.padding)*d+_.point.y,v=_.perspectiveRatio<=.55||_.aboveHorizon;return !this.isInsideGrid(p,m,f,g)||!o&&this.grid.hitTest(p,m,f,g,a)||v?{box:[],offscreen:!1}:{box:[p,m,f,g],offscreen:this.isOffscreen(p,m,f,g)}}placeCollisionCircles(t,i,o,r,n,a,s,l,c,h,u,_,d,p){const m=[],f=this.transform.elevation,g=this.transform.projection.createTileTransform(this.transform,this.transform.worldSize),v=f?f.getAtTileOffsetFunc(p,g):e=>[0,0,0],x=new e.pointGeometry(i.tileAnchorX,i.tileAnchorY),y=this.transform.projection.projectTilePoint(i.tileAnchorX,i.tileAnchorY,p.canonical),b=v(x),w=[y.x+b[0],y.y+b[1],y.z+b[2]],T=this.projectAndGetPerspectiveRatio(a,w[0],w[1],w[2],p),{perspectiveRatio:E}=T,C=(h?n/E:n*E)/e.ONE_EM,M=$e(new e.pointGeometry(w[0],w[1]),s,w[2]).point,S=T.signedDistanceFromCamera>0?Je(C,r,i.lineOffsetX*C,i.lineOffsetY*C,!1,M,x,i,o,s,{},f&&!h?v:null,h&&!!f,this.transform.projection,p):null;let I=!1,z=!1,D=!0;if(S&&!T.aboveHorizon){const i=.5*_*E+d,o=new e.pointGeometry(-100,-100),r=new e.pointGeometry(this.screenRightBoundary,this.screenBottomBoundary),n=new Ze,a=S.first,s=S.last;let h=[];for(let e=a.path.length-1;e>=1;e--)h.push(a.path[e]);for(let e=1;e<s.path.length;e++)h.push(s.path[e]);const p=2.5*i;if(l){const e=h.map(f?(e,t)=>{const i=v(t<a.path.length-1?a.tilePath[a.path.length-1-t]:s.tilePath[t-a.path.length+2]);return $e(e,l,i[2])}:e=>$e(e,l));h=e.some((e=>e.signedDistanceFromCamera<=0))?[]:e.map((e=>e.point));}let g=[];if(h.length>0){const t=h[0].clone(),i=h[0].clone();for(let e=1;e<h.length;e++)t.x=Math.min(t.x,h[e].x),t.y=Math.min(t.y,h[e].y),i.x=Math.max(i.x,h[e].x),i.y=Math.max(i.y,h[e].y);g=t.x>=o.x&&i.x<=r.x&&t.y>=o.y&&i.y<=r.y?[h]:i.x<o.x||t.x>r.x||i.y<o.y||t.y>r.y?[]:e.clipLine([h],o.x,o.y,r.x,r.y);}for(const e of g){n.reset(e,.25*i);let o=0;o=n.length<=.5*i?1:Math.ceil(n.paddedLength/p)+1;for(let e=0;e<o;e++){const r=e/Math.max(o-1,1),a=n.lerp(r),s=a.x+st,l=a.y+st;m.push(s,l,i,0);const h=s-i,_=l-i,d=s+i,p=l+i;if(D=D&&this.isOffscreen(h,_,d,p),z=z||this.isInsideGrid(h,_,d,p),!t&&this.grid.hitTestCircle(s,l,i,u)&&(I=!0,!c))return {circles:[],offscreen:!1,collisionDetected:I}}}}return {circles:!c&&I||!z?[]:m,offscreen:D,collisionDetected:I}}queryRenderedSymbols(t){if(0===t.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[];let o=1/0,r=1/0,n=-1/0,a=-1/0;for(const s of t){const t=new e.pointGeometry(s.x+st,s.y+st);o=Math.min(o,t.x),r=Math.min(r,t.y),n=Math.max(n,t.x),a=Math.max(a,t.y),i.push(t);}const s=this.grid.query(o,r,n,a).concat(this.ignoredGrid.query(o,r,n,a)),l={},c={};for(const t of s){const o=t.key;if(void 0===l[o.bucketInstanceId]&&(l[o.bucketInstanceId]={}),l[o.bucketInstanceId][o.featureIndex])continue;const r=[new e.pointGeometry(t.x1,t.y1),new e.pointGeometry(t.x2,t.y1),new e.pointGeometry(t.x2,t.y2),new e.pointGeometry(t.x1,t.y2)];e.polygonIntersectsPolygon(i,r)&&(l[o.bucketInstanceId][o.featureIndex]=!0,void 0===c[o.bucketInstanceId]&&(c[o.bucketInstanceId]=[]),c[o.bucketInstanceId].push(o.featureIndex));}return c}insertCollisionBox(e,t,i,o,r){(t?this.ignoredGrid:this.grid).insert({bucketInstanceId:i,featureIndex:o,collisionGroupID:r},e[0],e[1],e[2],e[3]);}insertCollisionCircles(e,t,i,o,r){const n=t?this.ignoredGrid:this.grid,a={bucketInstanceId:i,featureIndex:o,collisionGroupID:r};for(let t=0;t<e.length;t+=4)n.insertCircle(a,e[t],e[t+1],e[t+2]);}projectAndGetPerspectiveRatio(t,i,o,r,n){const a=[i,o,r||0,1];let s=!1;if(r||this.transform.pitch>0){e.transformMat4$1(a,a,t);let l=!1;this.fogState&&n&&(l=function(t,i,o,r,n,a){const s=a.calculateFogTileMatrix(n),l=[i,o,r];return e.transformMat4(l,l,s),y(t,l,a.pitch,a._fov)}(this.fogState,i,o,r||0,n.toUnwrapped(),this.transform)>.9),s=a[2]>a[3]||l;}else at(a,a,t);return {point:new e.pointGeometry((a[0]/a[3]+1)/2*this.transform.width+st,(-a[1]/a[3]+1)/2*this.transform.height+st),perspectiveRatio:Math.min(.5+this.transform.cameraToCenterDistance/a[3]*.5,1.5),signedDistanceFromCamera:a[3],aboveHorizon:s}}isOffscreen(e,t,i,o){return i<st||e>=this.screenRightBoundary||o<st||t>this.screenBottomBoundary}isInsideGrid(e,t,i,o){return i>=0&&e<this.gridRightBoundary&&o>=0&&t<this.gridBottomBoundary}getViewportMatrix(){const t=e.identity([]);return e.translate(t,t,[-100,-100,0]),t}}class ct{constructor(e,t,i,o){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):o&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class ht{constructor(e,t,i,o,r,n=!1){this.text=new ct(e?e.text:null,t,i,r),this.icon=new ct(e?e.icon:null,t,o,r),this.clipped=n;}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class ut{constructor(e,t,i,o=!1){this.text=e,this.icon=t,this.skipFade=i,this.clipped=o;}}class _t{constructor(){this.invProjMatrix=e.create(),this.viewportMatrix=e.create(),this.circles=[];}}class dt{constructor(e,t,i,o,r){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=r;}}class pt{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={};}get(e){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t};}return this.collisionGroups[e]}}function mt(t,i,o,r,n){const{horizontalAlign:a,verticalAlign:s}=e.getAnchorAlignment(t),l=-(a-.5)*i,c=-(s-.5)*o,h=e.evaluateVariableOffset(t,r);return new e.pointGeometry(l+h[0]*n,c+h[1]*n)}function ft(t,i,o,r,n){const a=new e.pointGeometry(t,i);return o&&a._rotate(r?n:-n),a}class gt{constructor(e,t,i,o,r){this.transform=e.clone(),this.collisionIndex=new lt(this.transform,r),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=t,this.retainedQueryData={},this.collisionGroups=new pt(i),this.collisionCircleArrays={},this.prevPlacement=o,o&&(o.prevPlacement=void 0),this.placedOrientations={};}getBucketParts(t,i,o,r){const n=o.getBucket(i),a=o.latestFeatureIndex;if(!n||!a||i.id!==n.layerIds[0])return;const s=n.layers[0].layout,l=o.collisionBoxArray,c=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),h=o.tileSize/e.EXTENT,u=o.tileID.toUnwrapped(),_=this.transform.calculateProjMatrix(u),d=\"map\"===s.get(\"text-pitch-alignment\"),p=\"map\"===s.get(\"text-rotation-alignment\");i.compileFilter();const m=i.dynamicFilter(),f=i.dynamicFilterNeedsFeature(),g=this.transform.calculatePixelsToTileUnitsMatrix(o),v=qe(_,o.tileID.canonical,d,p,this.transform,g);let x=null;if(d){const t=Xe(_,o.tileID.canonical,d,p,this.transform,g);x=e.multiply$1([],this.transform.labelPlaneMatrix,t);}let y=null;m&&o.latestFeatureIndex&&(y={unwrappedTileID:u,dynamicFilter:m,dynamicFilterNeedsFeature:f,featureIndex:o.latestFeatureIndex}),this.retainedQueryData[n.bucketInstanceId]=new dt(n.bucketInstanceId,a,n.sourceLayerIndex,n.index,o.tileID);const b={bucket:n,layout:s,posMatrix:_,textLabelPlaneMatrix:v,labelToScreenMatrix:x,clippingData:y,scale:c,textPixelRatio:h,holdingForFade:o.holdingForFade(),collisionBoxArray:l,partiallyEvaluatedTextSize:e.evaluateSizeForZoom(n.textSizeData,this.transform.zoom),partiallyEvaluatedIconSize:e.evaluateSizeForZoom(n.iconSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(n.sourceID)};if(r)for(const e of n.sortKeyRanges){const{sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:r}=e;t.push({sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:r,parameters:b});}else t.push({symbolInstanceStart:0,symbolInstanceEnd:n.symbolInstances.length,parameters:b});}attemptAnchorPlacement(e,t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f,g){const v=[u.textOffset0,u.textOffset1],x=mt(e,i,o,v,r),y=this.collisionIndex.placeCollisionBox(r,t,ft(x.x,x.y,n,a,this.transform.angle),h,s,l,c.predicate);if((!m||0!==this.collisionIndex.placeCollisionBox(d.getSymbolInstanceIconSize(g,this.transform.zoom,_),m,ft(x.x,x.y,n,a,this.transform.angle),h,s,l,c.predicate).box.length)&&y.box.length>0){let t;return this.prevPlacement&&this.prevPlacement.variableOffsets[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID].text&&(t=this.prevPlacement.variableOffsets[u.crossTileID].anchor),this.variableOffsets[u.crossTileID]={textOffset:v,width:i,height:o,anchor:e,textScale:r,prevAnchor:t},this.markUsedJustification(d,e,u,p),d.allowVerticalPlacement&&(this.markUsedOrientation(d,p,u),this.placedOrientations[u.crossTileID]=p),{shift:x,placedGlyphBoxes:y}}}placeLayerBucketPart(t,i,o,r){const{bucket:n,layout:a,posMatrix:s,textLabelPlaneMatrix:l,labelToScreenMatrix:c,clippingData:h,textPixelRatio:u,holdingForFade:_,collisionBoxArray:d,partiallyEvaluatedTextSize:p,partiallyEvaluatedIconSize:m,collisionGroup:f}=t.parameters,g=a.get(\"text-optional\"),v=a.get(\"icon-optional\"),x=a.get(\"text-allow-overlap\"),y=a.get(\"icon-allow-overlap\"),b=\"map\"===a.get(\"text-rotation-alignment\"),w=\"map\"===a.get(\"text-pitch-alignment\"),T=\"none\"!==a.get(\"icon-text-fit\"),E=\"viewport-y\"===a.get(\"symbol-z-order\"),C=x&&(y||!n.hasIconData()||v),M=y&&(x||!n.hasTextData()||g);!n.collisionArrays&&d&&n.deserializeCollisionBoxes(d),o&&r&&n.updateCollisionDebugBuffers(this.transform.zoom,d);const S=(t,r,d)=>{if(h){const o={zoom:this.transform.zoom,pitch:this.transform.pitch};let r=null;if(h.dynamicFilterNeedsFeature){const e=this.retainedQueryData[n.bucketInstanceId];r=h.featureIndex.loadFeature({featureIndex:t.featureIndex,bucketIndex:e.bucketIndex,sourceLayerIndex:e.sourceLayerIndex,layoutVertexArrayOffset:0});}if(!(0,h.dynamicFilter)(o,r,this.retainedQueryData[n.bucketInstanceId].tileID.canonical,new e.pointGeometry(t.tileAnchorX,t.tileAnchorY),this.transform.calculateDistanceTileData(h.unwrappedTileID)))return this.placements[t.crossTileID]=new ut(!1,!1,!1,!0),void(i[t.crossTileID]=!0)}if(i[t.crossTileID])return;if(_)return void(this.placements[t.crossTileID]=new ut(!1,!1,!1));let E=!1,S=!1,I=!0,z=null,D={box:null,offscreen:null},P={box:null,offscreen:null},A=null,L=null,R=null,k=0,O=0,B=0;d.textFeatureIndex?k=d.textFeatureIndex:t.useRuntimeCollisionCircles&&(k=t.featureIndex),d.verticalTextFeatureIndex&&(O=d.verticalTextFeatureIndex);const F=e=>{e.tileID=this.retainedQueryData[n.bucketInstanceId].tileID,(this.transform.elevation||e.elevation)&&(e.elevation=this.transform.elevation?this.transform.elevation.getAtTileOffset(this.retainedQueryData[n.bucketInstanceId].tileID,e.tileAnchorX,e.tileAnchorY):0);},U=d.textBox;if(U){F(U);const i=i=>{let o=e.WritingMode.horizontal;if(n.allowVerticalPlacement&&!i&&this.prevPlacement){const e=this.prevPlacement.placedOrientations[t.crossTileID];e&&(this.placedOrientations[t.crossTileID]=e,o=e,this.markUsedOrientation(n,o,t));}return o},o=(i,o)=>{if(n.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const t of n.writingModes)if(t===e.WritingMode.vertical?(D=o(),P=D):D=i(),D&&D.box&&D.box.length)break}else D=i();};if(a.get(\"text-variable-anchor\")){let l=a.get(\"text-variable-anchor\");if(this.prevPlacement&&this.prevPlacement.variableOffsets[t.crossTileID]){const e=this.prevPlacement.variableOffsets[t.crossTileID];l.indexOf(e.anchor)>0&&(l=l.filter((t=>t!==e.anchor)),l.unshift(e.anchor));}const c=(e,i,o)=>{const a=n.getSymbolInstanceTextSize(p,t,this.transform.zoom,r),c=(e.x2-e.x1)*a+2*e.padding,h=(e.y2-e.y1)*a+2*e.padding,_=T&&!y?i:null;_&&F(_);let d={box:[],offscreen:!1};const g=x?2*l.length:l.length;for(let i=0;i<g;++i){const g=this.attemptAnchorPlacement(l[i%l.length],e,c,h,a,b,w,u,s,f,i>=l.length,t,r,n,o,_,p,m);if(g&&(d=g.placedGlyphBoxes,d&&d.box&&d.box.length)){E=!0,z=g.shift;break}}return d};o((()=>c(U,d.iconBox,e.WritingMode.horizontal)),(()=>{const i=d.verticalTextBox;return i&&F(i),n.allowVerticalPlacement&&!(D&&D.box&&D.box.length)&&t.numVerticalGlyphVertices>0&&i?c(i,d.verticalIconBox,e.WritingMode.vertical):{box:null,offscreen:null}})),D&&(E=D.box,I=D.offscreen);const h=i(D&&D.box);if(!E&&this.prevPlacement){const e=this.prevPlacement.variableOffsets[t.crossTileID];e&&(this.variableOffsets[t.crossTileID]=e,this.markUsedJustification(n,e.anchor,t,h));}}else {const a=(i,o)=>{const a=n.getSymbolInstanceTextSize(p,t,this.transform.zoom,r),l=this.collisionIndex.placeCollisionBox(a,i,new e.pointGeometry(0,0),x,u,s,f.predicate);return l&&l.box&&l.box.length&&(this.markUsedOrientation(n,o,t),this.placedOrientations[t.crossTileID]=o),l};o((()=>a(U,e.WritingMode.horizontal)),(()=>{const i=d.verticalTextBox;return n.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&i?(F(i),a(i,e.WritingMode.vertical)):{box:null,offscreen:null}})),i(D&&D.box&&D.box.length);}}if(A=D,E=A&&A.box&&A.box.length>0,I=A&&A.offscreen,t.useRuntimeCollisionCircles){const i=n.text.placedSymbolArray.get(t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex),r=e.evaluateSizeForFeature(n.textSizeData,p,i),h=a.get(\"text-padding\");L=this.collisionIndex.placeCollisionCircles(x,i,n.lineVertexArray,n.glyphOffsetArray,r,s,l,c,o,w,f.predicate,t.collisionCircleDiameter*r/e.ONE_EM,h,this.retainedQueryData[n.bucketInstanceId].tileID),E=x||L.circles.length>0&&!L.collisionDetected,I=I&&L.offscreen;}if(d.iconFeatureIndex&&(B=d.iconFeatureIndex),d.iconBox){const t=t=>{F(t);const i=T&&z?ft(z.x,z.y,b,w,this.transform.angle):new e.pointGeometry(0,0),o=n.getSymbolInstanceIconSize(m,this.transform.zoom,r);return this.collisionIndex.placeCollisionBox(o,t,i,y,u,s,f.predicate)};P&&P.box&&P.box.length&&d.verticalIconBox?(R=t(d.verticalIconBox),S=R.box.length>0):(R=t(d.iconBox),S=R.box.length>0),I=I&&R.offscreen;}const N=g||0===t.numHorizontalGlyphVertices&&0===t.numVerticalGlyphVertices,G=v||0===t.numIconVertices;if(N||G?G?N||(S=S&&E):E=S&&E:S=E=S&&E,E&&A&&A.box&&this.collisionIndex.insertCollisionBox(A.box,a.get(\"text-ignore-placement\"),n.bucketInstanceId,P&&P.box&&O?O:k,f.ID),S&&R&&this.collisionIndex.insertCollisionBox(R.box,a.get(\"icon-ignore-placement\"),n.bucketInstanceId,B,f.ID),L&&(E&&this.collisionIndex.insertCollisionCircles(L.circles,a.get(\"text-ignore-placement\"),n.bucketInstanceId,k,f.ID),o)){const e=n.bucketInstanceId;let t=this.collisionCircleArrays[e];void 0===t&&(t=this.collisionCircleArrays[e]=new _t);for(let e=0;e<L.circles.length;e+=4)t.circles.push(L.circles[e+0]),t.circles.push(L.circles[e+1]),t.circles.push(L.circles[e+2]),t.circles.push(L.collisionDetected?1:0);}this.placements[t.crossTileID]=new ut(E||C,S||M,I||n.justReloaded),i[t.crossTileID]=!0;};if(E){const e=n.getSortedSymbolIndexes(this.transform.angle);for(let t=e.length-1;t>=0;--t){const i=e[t];S(n.symbolInstances.get(i),i,n.collisionArrays[i]);}}else for(let e=t.symbolInstanceStart;e<t.symbolInstanceEnd;e++)S(n.symbolInstances.get(e),e,n.collisionArrays[e]);if(o&&n.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[n.bucketInstanceId];e.invert(t.invProjMatrix,s),t.viewportMatrix=this.collisionIndex.getViewportMatrix();}n.justReloaded=!1;}markUsedJustification(t,i,o,r){let n;n=r===e.WritingMode.vertical?o.verticalPlacedTextSymbolIndex:{left:o.leftJustifiedTextSymbolIndex,center:o.centerJustifiedTextSymbolIndex,right:o.rightJustifiedTextSymbolIndex}[e.getAnchorJustification(i)];const a=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex,o.verticalPlacedTextSymbolIndex];for(const e of a)e>=0&&(t.text.placedSymbolArray.get(e).crossTileID=n>=0&&e!==n?0:o.crossTileID);}markUsedOrientation(t,i,o){const r=i===e.WritingMode.horizontal||i===e.WritingMode.horizontalOnly?i:0,n=i===e.WritingMode.vertical?i:0,a=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const e of a)t.text.placedSymbolArray.get(e).placedOrientation=r;o.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=n);}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const o=t?t.symbolFadeChange(e):1,r=t?t.opacities:{},n=t?t.variableOffsets:{},a=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],n=r[e];n?(this.opacities[e]=new ht(n,o,t.text,t.icon,null,t.clipped),i=i||t.text!==n.text.placed||t.icon!==n.icon.placed):(this.opacities[e]=new ht(null,o,t.text,t.icon,t.skipFade,t.clipped),i=i||t.text||t.icon);}for(const e in r){const t=r[e];if(!this.opacities[e]){const r=new ht(t,o,!1,!1);r.isHidden()||(this.opacities[e]=r,i=i||t.text.placed||t.icon.placed);}}for(const e in n)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=n[e]);for(const e in a)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=a[e]);i?this.lastPlacementChangeTime=e:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);}updateLayerOpacities(e,t){const i={};for(const o of t){const t=o.getBucket(e);t&&o.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,i,o.collisionBoxArray);}}updateBucketOpacities(t,i,o){t.hasTextData()&&t.text.opacityVertexArray.clear(),t.hasIconData()&&t.icon.opacityVertexArray.clear(),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const r=t.layers[0].layout,n=!!t.layers[0].dynamicFilter(),a=new ht(null,0,!1,!1,!0),s=r.get(\"text-allow-overlap\"),l=r.get(\"icon-allow-overlap\"),c=r.get(\"text-variable-anchor\"),h=\"map\"===r.get(\"text-rotation-alignment\"),u=\"map\"===r.get(\"text-pitch-alignment\"),_=\"none\"!==r.get(\"icon-text-fit\"),d=new ht(null,0,s&&(l||!t.hasIconData()||r.get(\"icon-optional\")),l&&(s||!t.hasTextData()||r.get(\"text-optional\")),!0);!t.collisionArrays&&o&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(o);const p=(e,t,i)=>{for(let o=0;o<t/4;o++)e.opacityVertexArray.emplaceBack(i);};let m=0;for(let o=0;o<t.symbolInstances.length;o++){const r=t.symbolInstances.get(o),{numHorizontalGlyphVertices:s,numVerticalGlyphVertices:l,crossTileID:f}=r;let g=this.opacities[f];i[f]?g=a:g||(g=d,this.opacities[f]=g),i[f]=!0;const v=s>0||l>0,x=r.numIconVertices>0,y=this.placedOrientations[r.crossTileID],b=y===e.WritingMode.vertical,w=y===e.WritingMode.horizontal||y===e.WritingMode.horizontalOnly;if(!v&&!x||g.isHidden()||m++,v){const e=Mt(g.text);p(t.text,s,b?St:e),p(t.text,l,w?St:e);const i=g.text.isHidden();[r.rightJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.leftJustifiedTextSymbolIndex].forEach((e=>{e>=0&&(t.text.placedSymbolArray.get(e).hidden=i||b?1:0);})),r.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(r.verticalPlacedTextSymbolIndex).hidden=i||w?1:0);const o=this.variableOffsets[r.crossTileID];o&&this.markUsedJustification(t,o.anchor,r,y);const n=this.placedOrientations[r.crossTileID];n&&(this.markUsedJustification(t,\"left\",r,n),this.markUsedOrientation(t,n,r));}if(x){const e=Mt(g.icon);r.placedIconSymbolIndex>=0&&(p(t.icon,r.numIconVertices,b?St:e),t.icon.placedSymbolArray.get(r.placedIconSymbolIndex).hidden=g.icon.isHidden()),r.verticalPlacedIconSymbolIndex>=0&&(p(t.icon,r.numVerticalIconVertices,w?St:e),t.icon.placedSymbolArray.get(r.verticalPlacedIconSymbolIndex).hidden=g.icon.isHidden());}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const i=t.collisionArrays[o];if(i){let o=new e.pointGeometry(0,0),r=!0;if(i.textBox||i.verticalTextBox){if(c){const e=this.variableOffsets[f];e?(o=mt(e.anchor,e.width,e.height,e.textOffset,e.textScale),h&&o._rotate(u?this.transform.angle:-this.transform.angle)):r=!1;}n&&(r=!g.clipped),i.textBox&&vt(t.textCollisionBox.collisionVertexArray,g.text.placed,!r||b,o.x,o.y),i.verticalTextBox&&vt(t.textCollisionBox.collisionVertexArray,g.text.placed,!r||w,o.x,o.y);}const a=r&&Boolean(!w&&i.verticalIconBox);i.iconBox&&vt(t.iconCollisionBox.collisionVertexArray,g.icon.placed,a,_?o.x:0,_?o.y:0),i.verticalIconBox&&vt(t.iconCollisionBox.collisionVertexArray,g.icon.placed,!a,_?o.x:0,_?o.y:0);}}}if(t.fullyClipped=0===m,t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=e.invProjMatrix,t.placementViewportMatrix=e.viewportMatrix,t.collisionCircleArray=e.circles,delete this.collisionCircleArrays[t.bucketInstanceId];}}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(e,t){const i=this.zoomAtLastRecencyCheck===t?1-this.zoomAdjustment(t):1;return this.zoomAtLastRecencyCheck=t,this.commitTime+this.fadeDuration*i>e}setStale(){this.stale=!0;}}function vt(e,t,i,o,r){e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0);}const xt=Math.pow(2,25),yt=Math.pow(2,24),bt=Math.pow(2,17),wt=Math.pow(2,16),Tt=Math.pow(2,9),Et=Math.pow(2,8),Ct=Math.pow(2,1);function Mt(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*xt+t*yt+i*bt+t*wt+i*Tt+t*Et+i*Ct+t}const St=0;class It{constructor(e){this._sortAcrossTiles=\"viewport-y\"!==e.layout.get(\"symbol-z-order\")&&void 0!==e.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(e,t,i,o,r){const n=this._bucketParts;for(;this._currentTileIndex<e.length;)if(t.getBucketParts(n,o,e[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,r())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,n.sort(((e,t)=>e.sortKey-t.sortKey)));this._currentPartIndex<n.length;){const e=n[this._currentPartIndex];if(t.placeLayerBucketPart(e,this._seenCrossTileIDs,i,0===e.symbolInstanceStart),this._currentPartIndex++,r())return !0}return !1}}class zt{constructor(e,t,i,o,r,n,a,s){this.placement=new gt(e,r,n,a,s),this._currentPlacementIndex=t.length-1,this._forceFullPlacement=i,this._showCollisionBoxes=o,this._done=!1;}isDone(){return this._done}continuePlacement(t,i,o){const r=e.exported.now(),n=()=>{const t=e.exported.now()-r;return !this._forceFullPlacement&&t>2};for(;this._currentPlacementIndex>=0;){const e=i[t[this._currentPlacementIndex]],r=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===e.type&&(!e.minzoom||e.minzoom<=r)&&(!e.maxzoom||e.maxzoom>r)){if(this._inProgressLayer||(this._inProgressLayer=new It(e)),this._inProgressLayer.continuePlacement(o[e.source],this.placement,this._showCollisionBoxes,e,n))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(e){return this.placement.commit(e),this.placement}}const Dt=512/e.EXTENT/2;class Pt{constructor(e,t,i){this.tileID=e,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(let i=0;i<t.length;i++){const o=t.get(i),r=o.key;this.indexedSymbolInstances[r]||(this.indexedSymbolInstances[r]=[]),this.indexedSymbolInstances[r].push({crossTileID:o.crossTileID,coord:this.getScaledCoordinates(o,e)});}}getScaledCoordinates(t,i){const o=Dt/Math.pow(2,i.canonical.z-this.tileID.canonical.z);return {x:Math.floor((i.canonical.x*e.EXTENT+t.tileAnchorX)*o),y:Math.floor((i.canonical.y*e.EXTENT+t.tileAnchorY)*o)}}findMatches(e,t,i){const o=this.tileID.canonical.z<t.canonical.z?1:Math.pow(2,this.tileID.canonical.z-t.canonical.z);for(let r=0;r<e.length;r++){const n=e.get(r);if(n.crossTileID)continue;const a=this.indexedSymbolInstances[n.key];if(!a)continue;const s=this.getScaledCoordinates(n,t);for(const e of a)if(Math.abs(e.coord.x-s.x)<=o&&Math.abs(e.coord.y-s.y)<=o&&!i[e.crossTileID]){i[e.crossTileID]=!0,n.crossTileID=e.crossTileID;break}}}}class At{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class Lt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const e in this.indexes){const i=this.indexes[e],o={};for(const e in i){const r=i[e];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+t),o[r.tileID.key]=r;}this.indexes[e]=o;}this.lng=e;}addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.overscaledZ][e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key]);}for(let e=0;e<t.symbolInstances.length;e++)t.symbolInstances.get(e).crossTileID=0;this.usedCrossTileIDs[e.overscaledZ]||(this.usedCrossTileIDs[e.overscaledZ]={});const o=this.usedCrossTileIDs[e.overscaledZ];for(const i in this.indexes){const r=this.indexes[i];if(Number(i)>e.overscaledZ)for(const i in r){const n=r[i];n.tileID.isChildOf(e)&&n.findMatches(t.symbolInstances,e,o);}else {const n=r[e.scaledTo(Number(i)).key];n&&n.findMatches(t.symbolInstances,e,o);}}for(let e=0;e<t.symbolInstances.length;e++){const r=t.symbolInstances.get(e);r.crossTileID||(r.crossTileID=i.generate(),o[r.crossTileID]=!0);}return void 0===this.indexes[e.overscaledZ]&&(this.indexes[e.overscaledZ]={}),this.indexes[e.overscaledZ][e.key]=new Pt(e,t.symbolInstances,t.bucketInstanceId),!0}removeBucketCrossTileIDs(e,t){for(const i in t.indexedSymbolInstances)for(const o of t.indexedSymbolInstances[i])delete this.usedCrossTileIDs[e][o.crossTileID];}removeStaleBuckets(e){let t=!1;for(const i in this.indexes){const o=this.indexes[i];for(const r in o)e[o[r].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,o[r]),delete o[r],t=!0);}return t}}class Rt{constructor(){this.layerIndexes={},this.crossTileIDs=new At,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};}addLayer(e,t,i,o){let r=this.layerIndexes[e.id];void 0===r&&(r=this.layerIndexes[e.id]=new Lt);let n=!1;const a={};\"globe\"!==o.name&&r.handleWrapJump(i);for(const i of t){const t=i.getBucket(e);t&&e.id===t.layerIds[0]&&(t.bucketInstanceId||(t.bucketInstanceId=++this.maxBucketInstanceId),r.addBucket(i.tileID,t,this.crossTileIDs)&&(n=!0),a[t.bucketInstanceId]=!0);}return r.removeStaleBuckets(a)&&(n=!0),n}pruneUnusedLayers(e){const t={};e.forEach((e=>{t[e]=!0;}));for(const e in this.layerIndexes)t[e]||delete this.layerIndexes[e];}}const kt=(t,i)=>e.emitValidationErrors(t,i&&i.filter((e=>\"source.canvas\"!==e.identifier))),Ot=e.pick(ke,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\",\"setTerrain\",\"setFog\",\"setProjection\"]),Bt=e.pick(ke,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Ft=function(){const t={},i=e.spec.$version;for(const o in e.spec.$root){const r=e.spec.$root[o];if(r.required){let e=null;e=\"version\"===o?i:\"array\"===r.type?[]:{},null!=e&&(t[o]=e);}}return t}(),Ut={fill:!0,line:!0,background:!0,hillshade:!0,raster:!0};class Nt extends e.Evented{constructor(t,i={}){super(),this.map=t,this.dispatcher=new C(Ae(),this),this.imageManager=new d,this.imageManager.setEventedParent(this),this.glyphManager=new e.GlyphManager(t._requestManager,i.localFontFamily?e.LocalGlyphMode.all:i.localIdeographFontFamily?e.LocalGlyphMode.ideographs:e.LocalGlyphMode.none,i.localFontFamily||i.localIdeographFontFamily),this.lineAtlas=new e.LineAtlas(256,512),this.crossTileSymbolIndex=new Rt,this._layers={},this._num3DLayers=0,this._numSymbolLayers=0,this._numCircleLayers=0,this._serializedLayers={},this._sourceCaches={},this._otherSourceCaches={},this._symbolSourceCaches={},this.zoomHistory=new e.ZoomHistory,this._loaded=!1,this._availableImages=[],this._order=[],this._drapedFirstOrder=[],this._markersNeedUpdate=!1,this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",e.getReferrer());const o=this;this._rtlTextPluginCallback=Nt.registerForPluginStateChange((t=>{o.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:t.pluginStatus,pluginURL:t.pluginURL},((t,i)=>{if(e.triggerPluginCompletionEvent(t),i&&i.every((e=>e)))for(const e in o._sourceCaches){const t=o._sourceCaches[e],i=t.getSource().type;\"vector\"!==i&&\"geojson\"!==i||t.reload();}}));})),this.on(\"data\",(e=>{if(\"source\"!==e.dataType||\"metadata\"!==e.sourceDataType)return;const t=this.getSource(e.sourceId);if(t&&t.vectorLayerIds)for(const e in this._layers){const i=this._layers[e];i.source===t.id&&this._validateLayer(i);}}));}loadURL(t,i={}){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"}));const o=\"boolean\"==typeof i.validate?i.validate:!e.isMapboxURL(t);t=this.map._requestManager.normalizeStyleURL(t,i.accessToken);const r=this.map._requestManager.transformRequest(t,e.ResourceType.Style);this._request=e.getJSON(r,((t,i)=>{this._request=null,t?this.fire(new e.ErrorEvent(t)):i&&this._load(i,o);}));}loadJSON(t,i={}){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"})),this._request=e.exported.frame((()=>{this._request=null,this._load(t,!1!==i.validate);}));}loadEmpty(){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"})),this._load(Ft,!1);}_updateLayerCount(e,t){const i=t?1:-1;e.is3D()&&(this._num3DLayers+=i),\"circle\"===e.type&&(this._numCircleLayers+=i),\"symbol\"===e.type&&(this._numSymbolLayers+=i);}_load(t,i){if(i&&kt(this,e.validateStyle(t)))return;this._loaded=!0,this.stylesheet=t,this.updateProjection();for(const e in t.sources)this.addSource(e,t.sources[e],{validate:!1});this._changed=!1,t.sprite?this._loadSprite(t.sprite):(this.imageManager.setLoaded(!0),this.dispatcher.broadcast(\"spriteLoaded\",!0)),this.glyphManager.setURL(t.glyphs);const o=Re(this.stylesheet.layers);this._order=o.map((e=>e.id)),this._layers={},this._serializedLayers={};for(let t of o)t=e.createStyleLayer(t),t.setEventedParent(this,{layer:{id:t.id}}),this._layers[t.id]=t,this._serializedLayers[t.id]=t.serialize(),this._updateLayerCount(t,!0);this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new f(this.stylesheet.light),this.stylesheet.terrain&&!this.terrainSetForDrapingOnly()&&this._createTerrain(this.stylesheet.terrain,1),this.stylesheet.fog&&this._createFog(this.stylesheet.fog),this._updateDrapeFirstLayers(),this.fire(new e.Event(\"data\",{dataType:\"style\"})),this.fire(new e.Event(\"style.load\"));}terrainSetForDrapingOnly(){return this.terrain&&0===this.terrain.drapeRenderMode}setProjection(e){e?this.stylesheet.projection=e:delete this.stylesheet.projection,this.updateProjection();}updateProjection(){const e=this.map.transform.projection,t=this.map.transform.setProjection(this.map._runtimeProjection||(this.stylesheet?this.stylesheet.projection:void 0)),i=this.map.transform.projection;if(this._loaded&&(i.requiresDraping?this.getTerrain()||this.stylesheet.terrain||this.setTerrainForDraping():this.terrainSetForDrapingOnly()&&this.setTerrain(null)),this.dispatcher.broadcast(\"setProjection\",this.map.transform.projectionOptions),t){if(i.isReprojectedInTileSpace||e.isReprojectedInTileSpace){this.map.painter.clearBackgroundTiles();for(const e in this._sourceCaches)this._sourceCaches[e].clearTiles();}else this._forceSymbolLayerUpdate();this.map._update(!0);}}_loadSprite(t){this._spriteRequest=function(t,i,o){let r,n,a;const s=e.exported.devicePixelRatio>1?\"@2x\":\"\";let l=e.getJSON(i.transformRequest(i.normalizeSpriteURL(t,s,\".json\"),e.ResourceType.SpriteJSON),((e,t)=>{l=null,a||(a=e,r=t,h());})),c=e.getImage(i.transformRequest(i.normalizeSpriteURL(t,s,\".png\"),e.ResourceType.SpriteImage),((e,t)=>{c=null,a||(a=e,n=t,h());}));function h(){if(a)o(a);else if(r&&n){const t=e.exported.getImageData(n),i={};for(const o in r){const{width:n,height:a,x:s,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:_,content:d}=r[o],p=new e.RGBAImage({width:n,height:a});e.RGBAImage.copy(t,p,{x:s,y:l},{x:0,y:0},{width:n,height:a}),i[o]={data:p,pixelRatio:h,sdf:c,stretchX:u,stretchY:_,content:d};}o(null,i);}}return {cancel(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null);}}}(t,this.map._requestManager,((t,i)=>{if(this._spriteRequest=null,t)this.fire(new e.ErrorEvent(t));else if(i)for(const e in i)this.imageManager.addImage(e,i[e]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.dispatcher.broadcast(\"spriteLoaded\",!0),this.fire(new e.Event(\"data\",{dataType:\"style\"}));}));}_validateLayer(t){const i=this.getSource(t.source);if(!i)return;const o=t.sourceLayer;o&&(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(o))&&this.fire(new e.ErrorEvent(new Error(`Source layer \"${o}\" does not exist on source \"${i.id}\" as specified by style layer \"${t.id}\"`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const e in this._sourceCaches)if(!this._sourceCaches[e].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeLayers(e){const t=[];for(const i of e){const e=this._layers[i];\"custom\"!==e.type&&t.push(e.serialize());}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return !0;if(this.fog&&this.fog.hasTransition())return !0;for(const e in this._sourceCaches)if(this._sourceCaches[e].hasTransition())return !0;for(const e in this._layers)if(this._layers[e].hasTransition())return !0;return !1}get order(){return this.map._optimizeForTerrain&&this.terrain?this._drapedFirstOrder:this._order}isLayerDraped(e){return !!this.terrain&&Ut[e.type]}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading\")}update(t){if(!this._loaded)return;const i=this._changed;if(this._changed){const e=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(e.length||i.length)&&this._updateWorkerLayers(e,i);for(const e in this._updatedSources){const t=this._updatedSources[e];\"reload\"===t?this._reloadSource(e):\"clear\"===t&&this._clearSource(e);}this._updateTilesForChangedImages();for(const e in this._updatedPaintProps)this._layers[e].updateTransitions(t);this.light.updateTransitions(t),this.fog&&this.fog.updateTransitions(t),this._resetUpdates();}const o={};for(const e in this._sourceCaches){const t=this._sourceCaches[e];o[e]=t.used,t.used=!1;}for(const e of this._order){const i=this._layers[e];if(i.recalculate(t,this._availableImages),!i.isHidden(t.zoom)){const e=this._getLayerSourceCache(i);e&&(e.used=!0);}const o=this.map.painter;if(o){const e=i.getProgramIds();if(!e)continue;const r=i.getProgramConfiguration(t.zoom);for(const t of e)o.useProgram(t,r);}}for(const t in o){const i=this._sourceCaches[t];o[t]!==i.used&&i.getSource().fire(new e.Event(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:i.getSource().id}));}this.light.recalculate(t),this.terrain&&this.terrain.recalculate(t),this.fog&&this.fog.recalculate(t),this.z=t.zoom,this._markersNeedUpdate&&(this._updateMarkersOpacity(),this._markersNeedUpdate=!1),i&&this.fire(new e.Event(\"data\",{dataType:\"style\"}));}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this._sourceCaches)this._sourceCaches[t].reloadTilesForDependencies([\"icons\",\"patterns\"],e);this._changedImages={};}}_updateWorkerLayers(e,t){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(e),removedIds:t});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={};}setState(t){if(this._checkLoaded(),kt(this,e.validateStyle(t)))return !1;(t=e.clone$1(t)).layers=Re(t.layers);const i=function(e,t){if(!e)return [{command:ke.setStyle,args:[t]}];let i=[];try{if(!n(e.version,t.version))return [{command:ke.setStyle,args:[t]}];n(e.center,t.center)||i.push({command:ke.setCenter,args:[t.center]}),n(e.zoom,t.zoom)||i.push({command:ke.setZoom,args:[t.zoom]}),n(e.bearing,t.bearing)||i.push({command:ke.setBearing,args:[t.bearing]}),n(e.pitch,t.pitch)||i.push({command:ke.setPitch,args:[t.pitch]}),n(e.sprite,t.sprite)||i.push({command:ke.setSprite,args:[t.sprite]}),n(e.glyphs,t.glyphs)||i.push({command:ke.setGlyphs,args:[t.glyphs]}),n(e.transition,t.transition)||i.push({command:ke.setTransition,args:[t.transition]}),n(e.light,t.light)||i.push({command:ke.setLight,args:[t.light]}),n(e.fog,t.fog)||i.push({command:ke.setFog,args:[t.fog]}),n(e.projection,t.projection)||i.push({command:ke.setProjection,args:[t.projection]});const o={},r=[];!function(e,t,i,o){let r;for(r in t=t||{},e=e||{})e.hasOwnProperty(r)&&(t.hasOwnProperty(r)||Be(r,i,o));for(r in t)t.hasOwnProperty(r)&&(e.hasOwnProperty(r)?n(e[r],t[r])||(\"geojson\"===e[r].type&&\"geojson\"===t[r].type&&Ue(e,t,r)?i.push({command:ke.setGeoJSONSourceData,args:[r,t[r].data]}):Fe(r,t,i,o)):Oe(r,t,i));}(e.sources,t.sources,r,o);const a=[];e.layers&&e.layers.forEach((e=>{o[e.source]?i.push({command:ke.removeLayer,args:[e.id]}):a.push(e);}));let s=e.terrain;s&&o[s.source]&&(i.push({command:ke.setTerrain,args:[void 0]}),s=void 0),i=i.concat(r),n(s,t.terrain)||i.push({command:ke.setTerrain,args:[t.terrain]}),function(e,t,i){t=t||[];const o=(e=e||[]).map(Ge),r=t.map(Ge),a=e.reduce(je,{}),s=t.reduce(je,{}),l=o.slice(),c=Object.create(null);let h,u,_,d,p,m,f;for(h=0,u=0;h<o.length;h++)_=o[h],s.hasOwnProperty(_)?u++:(i.push({command:ke.removeLayer,args:[_]}),l.splice(l.indexOf(_,u),1));for(h=0,u=0;h<r.length;h++)_=r[r.length-1-h],l[l.length-1-h]!==_&&(a.hasOwnProperty(_)?(i.push({command:ke.removeLayer,args:[_]}),l.splice(l.lastIndexOf(_,l.length-u),1)):u++,m=l[l.length-h],i.push({command:ke.addLayer,args:[s[_],m]}),l.splice(l.length-h,0,_),c[_]=!0);for(h=0;h<r.length;h++)if(_=r[h],d=a[_],p=s[_],!c[_]&&!n(d,p))if(n(d.source,p.source)&&n(d[\"source-layer\"],p[\"source-layer\"])&&n(d.type,p.type)){for(f in Ne(d.layout,p.layout,i,_,null,ke.setLayoutProperty),Ne(d.paint,p.paint,i,_,null,ke.setPaintProperty),n(d.filter,p.filter)||i.push({command:ke.setFilter,args:[_,p.filter]}),n(d.minzoom,p.minzoom)&&n(d.maxzoom,p.maxzoom)||i.push({command:ke.setLayerZoomRange,args:[_,p.minzoom,p.maxzoom]}),d)d.hasOwnProperty(f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?Ne(d[f],p[f],i,_,f.slice(6),ke.setPaintProperty):n(d[f],p[f])||i.push({command:ke.setLayerProperty,args:[_,f,p[f]]}));for(f in p)p.hasOwnProperty(f)&&!d.hasOwnProperty(f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?Ne(d[f],p[f],i,_,f.slice(6),ke.setPaintProperty):n(d[f],p[f])||i.push({command:ke.setLayerProperty,args:[_,f,p[f]]}));}else i.push({command:ke.removeLayer,args:[_]}),m=l[l.lastIndexOf(_)+1],i.push({command:ke.addLayer,args:[p,m]});}(a,t.layers,i);}catch(e){console.warn(\"Unable to compute style diff:\",e),i=[{command:ke.setStyle,args:[t]}];}return i}(this.serialize(),t).filter((e=>!(e.command in Bt)));if(0===i.length)return !1;const o=i.filter((e=>!(e.command in Ot)));if(o.length>0)throw new Error(`Unimplemented: ${o.map((e=>e.command)).join(\", \")}.`);return i.forEach((e=>{\"setTransition\"!==e.command&&this[e.command].apply(this,e.args);})),this.stylesheet=t,this.updateProjection(),!0}addImage(t,i){if(this.getImage(t))return this.fire(new e.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(t,i),this._afterImageUpdated(t);}updateImage(e,t){this.imageManager.updateImage(e,t);}getImage(e){return this.imageManager.getImage(e)}removeImage(t){if(!this.getImage(t))return this.fire(new e.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(t),this._afterImageUpdated(t);}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new e.Event(\"data\",{dataType:\"style\"}));}listImages(){return this._checkLoaded(),this._availableImages.slice()}addSource(t,i,o={}){if(this._checkLoaded(),void 0!==this.getSource(t))throw new Error(\"There is already a source with this ID\");if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0&&this._validate(e.validateStyle.source,`sources.${t}`,i,null,o))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const r=Te(t,i,this.dispatcher,this);r.setEventedParent(this,(()=>({isSourceLoaded:this.loaded(),source:r.serialize(),sourceId:t})));const n=i=>{const o=(i?\"symbol:\":\"other:\")+t,n=this._sourceCaches[o]=new e.SourceCache(o,r,i);(i?this._symbolSourceCaches:this._otherSourceCaches)[t]=n,n.style=this,n.onAdd(this.map);};n(!1),\"vector\"!==i.type&&\"geojson\"!==i.type||n(!0),r.onAdd&&r.onAdd(this.map),this._changed=!0;}removeSource(t){this._checkLoaded();const i=this.getSource(t);if(void 0===i)throw new Error(\"There is no source with this ID\");for(const i in this._layers)if(this._layers[i].source===t)return this.fire(new e.ErrorEvent(new Error(`Source \"${t}\" cannot be removed while layer \"${i}\" is using it.`)));if(this.terrain&&this.terrain.get().source===t)return this.fire(new e.ErrorEvent(new Error(`Source \"${t}\" cannot be removed while terrain is using it.`)));const o=this._getSourceCaches(t);for(const t of o)delete this._sourceCaches[t.id],delete this._updatedSources[t.id],t.fire(new e.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:t.getSource().id})),t.setEventedParent(null),t.clearTiles();delete this._otherSourceCaches[t],delete this._symbolSourceCaches[t],i.setEventedParent(null),i.onRemove&&i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(e,t){this._checkLoaded(),this.getSource(e).setData(t),this._changed=!0;}getSource(e){const t=this._getSourceCache(e);return t&&t.getSource()}addLayer(t,i,o={}){this._checkLoaded();const r=t.id;if(this.getLayer(r))return void this.fire(new e.ErrorEvent(new Error(`Layer with id \"${r}\" already exists on this map`)));let n;if(\"custom\"===t.type){if(kt(this,e.validateCustomStyleLayer(t)))return;n=e.createStyleLayer(t);}else {if(\"object\"==typeof t.source&&(this.addSource(r,t.source),t=e.clone$1(t),t=e.extend(t,{source:r})),this._validate(e.validateStyle.layer,`layers.${r}`,t,{arrayIndex:-1},o))return;n=e.createStyleLayer(t),this._validateLayer(n),n.setEventedParent(this,{layer:{id:r}}),this._serializedLayers[n.id]=n.serialize(),this._updateLayerCount(n,!0);}const a=i?this._order.indexOf(i):this._order.length;if(i&&-1===a)return void this.fire(new e.ErrorEvent(new Error(`Layer with id \"${i}\" does not exist on this map.`)));this._order.splice(a,0,r),this._layerOrderChanged=!0,this._layers[r]=n;const s=this._getLayerSourceCache(n);if(this._removedLayers[r]&&n.source&&s&&\"custom\"!==n.type){const e=this._removedLayers[r];delete this._removedLayers[r],e.type!==n.type?this._updatedSources[n.source]=\"clear\":(this._updatedSources[n.source]=\"reload\",s.pause());}this._updateLayer(n),n.onAdd&&n.onAdd(this.map),this._updateDrapeFirstLayers();}moveLayer(t,i){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===i)return;const o=this._order.indexOf(t);this._order.splice(o,1);const r=i?this._order.indexOf(i):this._order.length;i&&-1===r?this.fire(new e.ErrorEvent(new Error(`Layer with id \"${i}\" does not exist on this map.`))):(this._order.splice(r,0,t),this._layerOrderChanged=!0,this._updateDrapeFirstLayers());}removeLayer(t){this._checkLoaded();const i=this._layers[t];if(!i)return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be removed.`)));i.setEventedParent(null),this._updateLayerCount(i,!1);const o=this._order.indexOf(t);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=i,delete this._layers[t],delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],i.onRemove&&i.onRemove(this.map),this._updateDrapeFirstLayers();}getLayer(e){return this._layers[e]}hasLayer(e){return e in this._layers}hasLayerType(e){for(const t in this._layers)if(this._layers[t].type===e)return !0;return !1}setLayerZoomRange(t,i,o){this._checkLoaded();const r=this.getLayer(t);r?r.minzoom===i&&r.maxzoom===o||(null!=i&&(r.minzoom=i),null!=o&&(r.maxzoom=o),this._updateLayer(r)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot have zoom extent.`)));}setFilter(t,i,o={}){this._checkLoaded();const r=this.getLayer(t);if(r){if(!n(r.filter,i))return null==i?(r.filter=void 0,void this._updateLayer(r)):void(this._validate(e.validateStyle.filter,`layers.${r.id}.filter`,i,{layerType:r.type},o)||(r.filter=e.clone$1(i),this._updateLayer(r)))}else this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be filtered.`)));}getFilter(t){return e.clone$1(this.getLayer(t).filter)}setLayoutProperty(t,i,o,r={}){this._checkLoaded();const a=this.getLayer(t);a?n(a.getLayoutProperty(i),o)||(a.setLayoutProperty(i,o,r),this._updateLayer(a)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be styled.`)));}getLayoutProperty(t,i){const o=this.getLayer(t);if(o)return o.getLayoutProperty(i);this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style.`)));}setPaintProperty(t,i,o,r={}){this._checkLoaded();const a=this.getLayer(t);a?n(a.getPaintProperty(i),o)||(a.setPaintProperty(i,o,r)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[t]=!0):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be styled.`)));}getPaintProperty(e,t){return this.getLayer(e).getPaintProperty(t)}setFeatureState(t,i){this._checkLoaded();const o=t.source,r=t.sourceLayer,n=this.getSource(o);if(void 0===n)return void this.fire(new e.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const a=n.type;if(\"geojson\"===a&&r)return void this.fire(new e.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\")));if(\"vector\"===a&&!r)return void this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));void 0===t.id&&this.fire(new e.ErrorEvent(new Error(\"The feature id parameter must be provided.\")));const s=this._getSourceCaches(o);for(const e of s)e.setFeatureState(r,t.id,i);}removeFeatureState(t,i){this._checkLoaded();const o=t.source,r=this.getSource(o);if(void 0===r)return void this.fire(new e.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const n=r.type,a=\"vector\"===n?t.sourceLayer:void 0;if(\"vector\"===n&&!a)return void this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));if(i&&\"string\"!=typeof t.id&&\"number\"!=typeof t.id)return void this.fire(new e.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\")));const s=this._getSourceCaches(o);for(const e of s)e.removeFeatureState(a,t.id,i);}getFeatureState(t){this._checkLoaded();const i=t.source,o=t.sourceLayer,r=this.getSource(i);if(void 0!==r){if(\"vector\"!==r.type||o)return void 0===t.id&&this.fire(new e.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),this._getSourceCaches(i)[0].getFeatureState(o,t.id);this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new e.ErrorEvent(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return e.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){const t={};for(const e in this._sourceCaches){const i=this._sourceCaches[e].getSource();t[i.id]||(t[i.id]=i.serialize());}return e.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,terrain:this.stylesheet.terrain,fog:this.stylesheet.fog,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,projection:this.stylesheet.projection,sources:t,layers:this._serializeLayers(this._order)},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0;const t=this._getLayerSourceCache(e);e.source&&!this._updatedSources[e.source]&&t&&\"raster\"!==t.getSource().type&&(this._updatedSources[e.source]=\"reload\",t.pause()),this._changed=!0,e.invalidateCompiledFilter();}_flattenAndSortRenderedFeatures(e){const t=e=>\"fill-extrusion\"===this._layers[e].type,i={},o=[];for(let r=this._order.length-1;r>=0;r--){const n=this._order[r];if(t(n)){i[n]=r;for(const t of e){const e=t[n];if(e)for(const t of e)o.push(t);}}}o.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const r=[];for(let n=this._order.length-1;n>=0;n--){const a=this._order[n];if(t(a))for(let e=o.length-1;e>=0;e--){const t=o[e].feature;if(i[t.layer.id]<n)break;r.push(t),o.pop();}else for(const t of e){const e=t[a];if(e)for(const t of e)r.push(t.feature);}}return r}queryRenderedFeatures(t,i,o){i&&i.filter&&this._validate(e.validateStyle.filter,\"queryRenderedFeatures.filter\",i.filter,null,i);const r={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new e.ErrorEvent(new Error(\"parameters.layers must be an Array.\"))),[];for(const t of i.layers){const i=this._layers[t];if(!i)return this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be queried for features.`))),[];r[i.source]=!0;}}const n=[];i.availableImages=this._availableImages;const a=i&&i.layers?i.layers.some((e=>{const t=this.getLayer(e);return t&&t.is3D()})):this.has3DLayers(),s=pe.createFromScreenPoints(t,o);for(const e in this._sourceCaches){const t=this._sourceCaches[e].getSource().id;i.layers&&!r[t]||n.push(Ce(this._sourceCaches[e],this._layers,this._serializedLayers,s,i,o,a,!!this.map._showQueryGeometry));}return this.placement&&n.push(function(e,t,i,o,r,n,a){const s={},l=n.queryRenderedSymbols(o),c=[];for(const e of Object.keys(l).map(Number))c.push(a[e]);c.sort(Se);for(const i of c){const o=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,r.filter,r.layers,r.availableImages,e);for(const e in o){const t=s[e]=s[e]||[],r=o[e];r.sort(((e,t)=>{const o=i.featureSortOrder;if(o){const i=o.indexOf(e.featureIndex);return o.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const e of r)t.push(e);}}for(const t in s)s[t].forEach((o=>{const r=o.feature,n=i(e[t]).getFeatureState(r.layer[\"source-layer\"],r.id);r.source=r.layer.source,r.layer[\"source-layer\"]&&(r.sourceLayer=r.layer[\"source-layer\"]),r.state=n;}));return s}(this._layers,this._serializedLayers,this._getLayerSourceCache.bind(this),s.screenGeometry,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(n)}querySourceFeatures(t,i){i&&i.filter&&this._validate(e.validateStyle.filter,\"querySourceFeatures.filter\",i.filter,null,i);const o=this._getSourceCaches(t);let r=[];for(const e of o)r=r.concat(Me(e,i));return r}addSourceType(e,t,i){return Nt.getSourceType(e)?i(new Error(`A source type called \"${e}\" already exists.`)):(Nt.setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:e,url:t.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(t,i={}){this._checkLoaded();const o=this.light.getLight();let r=!1;for(const e in t)if(!n(t[e],o[e])){r=!0;break}if(!r)return;const a={now:e.exported.now(),transition:e.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,i),this.light.updateTransitions(a);}getTerrain(){return this.terrain&&1===this.terrain.drapeRenderMode?this.terrain.get():null}setTerrainForDraping(){this.setTerrain({source:\"\",exaggeration:0},0);}setTerrain(t,i=1){if(this._checkLoaded(),!t)return delete this.terrain,delete this.stylesheet.terrain,this.dispatcher.broadcast(\"enableTerrain\",!1),this._force3DLayerUpdate(),void(this._markersNeedUpdate=!0);if(1===i){if(\"object\"==typeof t.source){const i=\"terrain-dem-src\";this.addSource(i,t.source),t=e.clone$1(t),t=e.extend(t,{source:i});}if(this._validate(e.validateStyle.terrain,\"terrain\",t))return}if(!this.terrain||this.terrain&&i!==this.terrain.drapeRenderMode)this._createTerrain(t,i);else {const i=this.terrain,o=i.get();for(const r in t)if(!n(t[r],o[r])){i.set(t),this.stylesheet.terrain=t;const o={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(o);break}}this._updateDrapeFirstLayers(),this._markersNeedUpdate=!0;}_createFog(t){const i=this.fog=new E(t,this.map.transform);this.stylesheet.fog=t;const o={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(o);}_updateMarkersOpacity(){0!==this.map._markers.length&&this.map._requestDomTask((()=>{for(const e of this.map._markers)e._evaluateOpacity();}));}getFog(){return this.fog?this.fog.get():null}setFog(t){if(this._checkLoaded(),!t)return delete this.fog,delete this.stylesheet.fog,void(this._markersNeedUpdate=!0);if(this.fog){const i=this.fog,o=i.get();for(const r in t)if(!n(t[r],o[r])){i.set(t),this.stylesheet.fog=t;const o={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(o);break}}else this._createFog(t);this._markersNeedUpdate=!0;}_updateDrapeFirstLayers(){if(!this.map._optimizeForTerrain||!this.terrain)return;const e=this._order.filter((e=>this.isLayerDraped(this._layers[e]))),t=this._order.filter((e=>!this.isLayerDraped(this._layers[e])));this._drapedFirstOrder=[],this._drapedFirstOrder.push(...e),this._drapedFirstOrder.push(...t);}_createTerrain(t,i){const o=this.terrain=new x(t,i);this.stylesheet.terrain=t,this.dispatcher.broadcast(\"enableTerrain\",!0),this._force3DLayerUpdate();const r={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};o.updateTransitions(r);}_force3DLayerUpdate(){for(const e in this._layers){const t=this._layers[e];\"fill-extrusion\"===t.type&&this._updateLayer(t);}}_forceSymbolLayerUpdate(){for(const e in this._layers){const t=this._layers[e];\"symbol\"===t.type&&this._updateLayer(t);}}_validate(t,i,o,r,n={}){return (!n||!1!==n.validate)&&kt(this,t.call(e.validateStyle,e.extend({key:i,style:this.serialize(),value:o,styleSpec:e.spec},r)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),e.evented.off(\"pluginStateChange\",this._rtlTextPluginCallback);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this._sourceCaches)this._sourceCaches[e].clearTiles(),this._sourceCaches[e].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove();}_clearSource(e){const t=this._getSourceCaches(e);for(const e of t)e.clearTiles();}_reloadSource(e){const t=this._getSourceCaches(e);for(const e of t)e.resume(),e.reload();}_updateSources(e){for(const t in this._sourceCaches)this._sourceCaches[t].update(e);}_generateCollisionBoxes(){for(const e in this._sourceCaches){const t=this._sourceCaches[e];t.resume(),t.reload();}}_updatePlacement(t,i,o,r,n=!1){let a=!1,s=!1;const l={};for(const e of this._order){const i=this._layers[e];if(\"symbol\"!==i.type)continue;if(!l[i.source]){const e=this._getLayerSourceCache(i);if(!e)continue;l[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)));}const o=this.crossTileSymbolIndex.addLayer(i,l[i.source],t.center.lng,t.projection);a=a||o;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),n=n||this._layerOrderChanged||0===o,this._layerOrderChanged&&this.fire(new e.Event(\"neworder\")),(n||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(e.exported.now(),t.zoom))&&(this.pauseablePlacement=new zt(t,this._order,n,i,o,r,this.placement,this.fog&&t.projection.supportsFog?this.fog.state:null),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(e.exported.now()),s=!0),a&&this.pauseablePlacement.placement.setStale()),s||a)for(const e of this._order){const t=this._layers[e];\"symbol\"===t.type&&this.placement.updateLayerOpacities(t,l[t.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(e.exported.now())}_releaseSymbolFadeTiles(){for(const e in this._sourceCaches)this._sourceCaches[e].releaseSymbolFadeTiles();}getImages(e,t,i){this.imageManager.getImages(t.icons,i),this._updateTilesForChangedImages();const o=e=>{e&&e.setDependencies(t.tileID.key,t.type,t.icons);};o(this._otherSourceCaches[t.source]),o(this._symbolSourceCaches[t.source]);}getGlyphs(e,t,i){this.glyphManager.getGlyphs(t.stacks,i);}getResource(t,i,o){return e.makeRequest(i,o)}_getSourceCache(e){return this._otherSourceCaches[e]}_getLayerSourceCache(e){return \"symbol\"===e.type?this._symbolSourceCaches[e.source]:this._otherSourceCaches[e.source]}_getSourceCaches(e){const t=[];return this._otherSourceCaches[e]&&t.push(this._otherSourceCaches[e]),this._symbolSourceCaches[e]&&t.push(this._symbolSourceCaches[e]),t}has3DLayers(){return this._num3DLayers>0}hasSymbolLayers(){return this._numSymbolLayers>0}hasCircleLayers(){return this._numCircleLayers>0}_clearWorkerCaches(){this.dispatcher.broadcast(\"clearCaches\");}destroy(){this._clearWorkerCaches(),this.terrainSetForDrapingOnly()&&(delete this.terrain,delete this.stylesheet.terrain);}}Nt.getSourceType=function(e){return we[e]},Nt.setSourceType=function(e,t){we[e]=t;},Nt.registerForPluginStateChange=e.registerForPluginStateChange;var Gt=\"\\n#define EPSILON 0.0000001\\n#define PI 3.141592653589793\\n#define EXTENT 8192.0\\n#ifdef FOG\\nuniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;varying vec3 v_fog_pos;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}\\n#endif\",jt=\"attribute highp vec3 a_pos_3f;uniform lowp mat4 u_matrix;varying highp vec3 v_uv;void main() {const mat3 half_neg_pi_around_x=mat3(1.0,0.0, 0.0,0.0,0.0,-1.0,0.0,1.0, 0.0);v_uv=half_neg_pi_around_x*a_pos_3f;vec4 pos=u_matrix*vec4(a_pos_3f,1.0);gl_Position=pos.xyww;}\";let Zt={},Vt={};Zt=$t(\"\",\"\\n#define ELEVATION_SCALE 7.0\\n#define ELEVATION_OFFSET 450.0\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_tl_up;uniform vec3 u_tile_tr_up;uniform vec3 u_tile_br_up;uniform vec3 u_tile_bl_up;uniform float u_tile_up_scale;vec3 elevationVector(vec2 pos) {vec2 uv=pos/EXTENT;vec3 up=normalize(mix(\\nmix(u_tile_tl_up,u_tile_tr_up,uv.xxx),mix(u_tile_bl_up,u_tile_br_up,uv.xxx),uv.yyy));return up*u_tile_up_scale;}\\n#else\\nvec3 elevationVector(vec2 pos) { return vec3(0,0,1); }\\n#endif\\n#ifdef TERRAIN\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nuniform highp sampler2D u_dem;uniform highp sampler2D u_dem_prev;\\n#else\\nuniform sampler2D u_dem;uniform sampler2D u_dem_prev;\\n#endif\\nuniform vec4 u_dem_unpack;uniform vec2 u_dem_tl;uniform vec2 u_dem_tl_prev;uniform float u_dem_scale;uniform float u_dem_scale_prev;uniform float u_dem_size;uniform float u_dem_lerp;uniform float u_exaggeration;uniform float u_meter_to_dem;uniform mat4 u_label_plane_matrix_inv;uniform sampler2D u_depth;uniform vec2 u_depth_size_inv;vec4 tileUvToDemSample(vec2 uv,float dem_size,float dem_scale,vec2 dem_tl) {vec2 pos=dem_size*(uv*dem_scale+dem_tl)+1.0;vec2 f=fract(pos);return vec4((pos-f+0.5)/(dem_size+2.0),f);}float decodeElevation(vec4 v) {return dot(vec4(v.xyz*255.0,-1.0),u_dem_unpack);}float currentElevation(vec2 apos) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale+u_dem_tl)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem,pos).a;\\n#else\\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale,u_dem_tl);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem,pos));\\n#ifdef TERRAIN_DEM_NEAREST_FILTER\\nreturn u_exaggeration*tl;\\n#endif\\nfloat tr=decodeElevation(texture2D(u_dem,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\\n#endif\\n}float prevElevation(vec2 apos) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale_prev+u_dem_tl_prev)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem_prev,pos).a;\\n#else\\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale_prev,u_dem_tl_prev);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem_prev,pos));float tr=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem_prev,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\\n#endif\\n}\\n#ifdef TERRAIN_VERTEX_MORPHING\\nfloat elevation(vec2 apos) {float nextElevation=currentElevation(apos);float prevElevation=prevElevation(apos);return mix(prevElevation,nextElevation,u_dem_lerp);}\\n#else\\nfloat elevation(vec2 apos) {return currentElevation(apos);}\\n#endif\\nfloat unpack_depth(vec4 rgba_depth)\\n{const vec4 bit_shift=vec4(1.0/(256.0*256.0*256.0),1.0/(256.0*256.0),1.0/256.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}bool isOccluded(vec4 frag) {vec3 coord=frag.xyz/frag.w;float depth=unpack_depth(texture2D(u_depth,(coord.xy+1.0)*0.5));return coord.z > depth+0.0005;}float occlusionFade(vec4 frag) {vec3 coord=frag.xyz/frag.w;vec3 df=vec3(5.0*u_depth_size_inv,0.0);vec2 uv=0.5*coord.xy+0.5;vec4 depth=vec4(\\nunpack_depth(texture2D(u_depth,uv-df.xz)),unpack_depth(texture2D(u_depth,uv+df.xz)),unpack_depth(texture2D(u_depth,uv-df.zy)),unpack_depth(texture2D(u_depth,uv+df.zy))\\n);return dot(vec4(0.25),vec4(1.0)-clamp(300.0*(vec4(coord.z-0.001)-depth),0.0,1.0));}vec4 fourSample(vec2 pos,vec2 off) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nfloat tl=texture2D(u_dem,pos).a;float tr=texture2D(u_dem,pos+vec2(off.x,0.0)).a;float bl=texture2D(u_dem,pos+vec2(0.0,off.y)).a;float br=texture2D(u_dem,pos+off).a;\\n#else\\nvec4 demtl=vec4(texture2D(u_dem,pos).xyz*255.0,-1.0);float tl=dot(demtl,u_dem_unpack);vec4 demtr=vec4(texture2D(u_dem,pos+vec2(off.x,0.0)).xyz*255.0,-1.0);float tr=dot(demtr,u_dem_unpack);vec4 dembl=vec4(texture2D(u_dem,pos+vec2(0.0,off.y)).xyz*255.0,-1.0);float bl=dot(dembl,u_dem_unpack);vec4 dembr=vec4(texture2D(u_dem,pos+off).xyz*255.0,-1.0);float br=dot(dembr,u_dem_unpack);\\n#endif\\nreturn vec4(tl,tr,bl,br);}float flatElevation(vec2 pack) {vec2 apos=floor(pack/8.0);vec2 span=10.0*(pack-apos*8.0);vec2 uvTex=(apos-vec2(1.0,1.0))/8190.0;float size=u_dem_size+2.0;float dd=1.0/size;vec2 pos=u_dem_size*(uvTex*u_dem_scale+u_dem_tl)+1.0;vec2 f=fract(pos);pos=(pos-f+0.5)*dd;vec4 h=fourSample(pos,vec2(dd));float z=mix(mix(h.x,h.y,f.x),mix(h.z,h.w,f.x),f.y);vec2 w=floor(0.5*(span*u_meter_to_dem-1.0));vec2 d=dd*w;vec4 bounds=vec4(d,vec2(1.0)-d);h=fourSample(pos-d,2.0*d+vec2(dd));vec4 diff=abs(h.xzxy-h.ywzw);vec2 slope=min(vec2(0.25),u_meter_to_dem*0.5*(diff.xz+diff.yw)/(2.0*w+vec2(1.0)));vec2 fix=slope*span;float base=z+max(fix.x,fix.y);return u_exaggeration*base;}float elevationFromUint16(float word) {return u_exaggeration*(word/ELEVATION_SCALE-ELEVATION_OFFSET);}\\n#else\\nfloat elevation(vec2 pos) { return 0.0; }bool isOccluded(vec4 frag) { return false; }float occlusionFade(vec4 frag) { return 1.0; }\\n#endif\",!0),Vt=$t(\"#ifdef FOG\\nuniform float u_fog_temporal_offset;float fog_opacity(vec3 pos) {float depth=length(pos);return fog_opacity(fog_range(depth));}vec3 fog_apply(vec3 color,vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));opacity*=fog_horizon_blending(pos/depth);return mix(color,u_fog_color.rgb,opacity);}vec4 fog_apply_from_vert(vec4 color,float fog_opac) {float alpha=EPSILON+color.a;color.rgb=mix(color.rgb/alpha,u_fog_color.rgb,fog_opac)*alpha;return color;}vec3 fog_apply_sky_gradient(vec3 camera_ray,vec3 sky_color) {float horizon_blend=fog_horizon_blending(normalize(camera_ray));return mix(sky_color,u_fog_color.rgb,horizon_blend);}vec4 fog_apply_premultiplied(vec4 color,vec3 pos) {float alpha=EPSILON+color.a;color.rgb=fog_apply(color.rgb/alpha,pos)*alpha;return color;}vec3 fog_dither(vec3 color) {vec2 dither_seed=gl_FragCoord.xy+u_fog_temporal_offset;return dither(color,dither_seed);}vec4 fog_dither(vec4 color) {return vec4(fog_dither(color.rgb),color.a);}\\n#endif\",\"#ifdef FOG\\nuniform mat4 u_fog_matrix;vec3 fog_position(vec3 pos) {return (u_fog_matrix*vec4(pos,1.0)).xyz;}vec3 fog_position(vec2 pos) {return fog_position(vec3(pos,0.0));}float fog(vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));return opacity*fog_horizon_blending(pos/depth);}\\n#endif\",!0);const Wt=$t(\"\\nhighp vec3 hash(highp vec2 p) {highp vec3 p3=fract(p.xyx*vec3(443.8975,397.2973,491.1871));p3+=dot(p3,p3.yxz+19.19);return fract((p3.xxy+p3.yzz)*p3.zyx);}vec3 dither(vec3 color,highp vec2 seed) {vec3 rnd=hash(seed)+hash(seed+0.59374)-0.5;return color+rnd/255.0;}\\n#ifdef TERRAIN\\nhighp vec4 pack_depth(highp float ndc_z) {highp float depth=ndc_z*0.5+0.5;const highp vec4 bit_shift=vec4(256.0*256.0*256.0,256.0*256.0,256.0,1.0);const highp vec4 bit_mask =vec4(0.0,1.0/256.0,1.0/256.0,1.0/256.0);highp vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}\\n#endif\",\"\\nfloat wrap(float n,float min,float max) {float d=max-min;float w=mod(mod(n-min,d)+d,d)+min;return (w==min) ? max : w;}vec3 mercator_tile_position(mat4 matrix,vec2 tile_anchor,vec3 tile_id,vec2 mercator_center) {\\n#if defined(PROJECTION_GLOBE_VIEW) && !defined(PROJECTED_POS_ON_VIEWPORT)\\nfloat tiles=tile_id.z;vec2 mercator=(tile_anchor/EXTENT+tile_id.xy)/tiles;mercator-=mercator_center;mercator.x=wrap(mercator.x,-0.5,0.5);vec4 mercator_tile=vec4(mercator.xy*EXTENT,EXTENT/(2.0*PI),1.0);mercator_tile=matrix*mercator_tile;return mercator_tile.xyz;\\n#else\\nreturn vec3(0.0);\\n#endif\\n}vec3 mix_globe_mercator(vec3 globe,vec3 mercator,float t) {\\n#if defined(PROJECTION_GLOBE_VIEW) && !defined(PROJECTED_POS_ON_VIEWPORT)\\nreturn mix(globe,mercator,t);\\n#else\\nreturn globe;\\n#endif\\n}\\n#ifdef PROJECTION_GLOBE_VIEW\\nmat3 globe_mercator_surface_vectors(vec3 pos_normal,vec3 up_dir,float zoom_transition) {vec3 normal=zoom_transition==0.0 ? pos_normal : normalize(mix(pos_normal,up_dir,zoom_transition));vec3 xAxis=normalize(vec3(normal.z,0.0,-normal.x));vec3 yAxis=normalize(cross(normal,xAxis));return mat3(xAxis,yAxis,normal);}\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(\\nunpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}const vec4 AWAY=vec4(-1000.0,-1000.0,-1000.0,1);//Normalized device coordinate that is not rendered.\"),qt=Gt;var Xt={background:$t(\"uniform vec4 u_color;uniform float u_opacity;void main() {vec4 out_color=u_color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),backgroundPattern:$t(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_mix);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),circle:$t(\"varying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(\\nantialiased_blur,0.0,extrude_length-radius/(radius+stroke_width)\\n);vec4 out_color=mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef FOG\\nout_color=fog_apply_premultiplied(out_color,v_fog_pos);\\n#endif\\ngl_FragColor=out_color*(v_visibility*opacity_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"#define NUM_VISIBILITY_RINGS 2\\n#define INV_SQRT2 0.70710678\\n#define ELEVATION_BIAS 0.0001\\n#define NUM_SAMPLES_PER_RING 16\\nuniform mat4 u_matrix;uniform mat2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;attribute float a_scale;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\\n#endif\\nvarying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvec2 calc_offset(vec2 extrusion,float radius,float stroke_width, float view_scale) {return extrusion*(radius+stroke_width)*u_extrude_scale*view_scale;}float cantilevered_elevation(vec2 pos,float radius,float stroke_width,float view_scale) {vec2 c1=pos+calc_offset(vec2(-1,-1),radius,stroke_width,view_scale);vec2 c2=pos+calc_offset(vec2(1,-1),radius,stroke_width,view_scale);vec2 c3=pos+calc_offset(vec2(1,1),radius,stroke_width,view_scale);vec2 c4=pos+calc_offset(vec2(-1,1),radius,stroke_width,view_scale);float h1=elevation(c1)+ELEVATION_BIAS;float h2=elevation(c2)+ELEVATION_BIAS;float h3=elevation(c3)+ELEVATION_BIAS;float h4=elevation(c4)+ELEVATION_BIAS;return max(h4,max(h3,max(h1,h2)));}float circle_elevation(vec2 pos) {\\n#if defined(TERRAIN)\\nreturn elevation(pos)+ELEVATION_BIAS;\\n#else\\nreturn 0.0;\\n#endif\\n}vec4 project_vertex(vec2 extrusion,vec4 world_center,vec4 projected_center,float radius,float stroke_width, float view_scale,mat3 surface_vectors) {vec2 sample_offset=calc_offset(extrusion,radius,stroke_width,view_scale);\\n#ifdef PITCH_WITH_MAP\\n#ifdef PROJECTION_GLOBE_VIEW\\nreturn u_matrix*( world_center+vec4(sample_offset.x*surface_vectors[0]+sample_offset.y*surface_vectors[1],0) );\\n#else\\nreturn u_matrix*( world_center+vec4(sample_offset,0,0) );\\n#endif\\n#else\\nreturn projected_center+vec4(sample_offset,0,0);\\n#endif\\n}float get_sample_step() {\\n#ifdef PITCH_WITH_MAP\\nreturn 2.0*PI/float(NUM_SAMPLES_PER_RING);\\n#else\\nreturn PI/float(NUM_SAMPLES_PER_RING);\\n#endif\\n}void main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec2 scaled_extrude=extrude*a_scale;vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=scaled_extrude.x*surface_vectors[0]+scaled_extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(circle_center)*circle_elevation(circle_center);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*circle_elevation(circle_center);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,circle_center,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);vec4 world_center=vec4(pos,1);\\n#else \\nmat3 surface_vectors=mat3(1.0);float height=circle_elevation(circle_center);vec4 world_center=vec4(circle_center,height,1);\\n#endif\\nvec4 projected_center=u_matrix*world_center;float view_scale=0.0;\\n#ifdef PITCH_WITH_MAP\\n#ifdef SCALE_WITH_MAP\\nview_scale=1.0;\\n#else\\nview_scale=projected_center.w/u_camera_to_center_distance;\\n#endif\\n#else\\n#ifdef SCALE_WITH_MAP\\nview_scale=u_camera_to_center_distance;\\n#else\\nview_scale=projected_center.w;\\n#endif\\n#endif\\n#if defined(SCALE_WITH_MAP) && defined(PROJECTION_GLOBE_VIEW)\\nview_scale*=a_scale;\\n#endif\\ngl_Position=project_vertex(extrude,world_center,projected_center,radius,stroke_width,view_scale,surface_vectors);float visibility=0.0;\\n#ifdef TERRAIN\\nfloat step=get_sample_step();\\n#ifdef PITCH_WITH_MAP\\nfloat cantilevered_height=cantilevered_elevation(circle_center,radius,stroke_width,view_scale);vec4 occlusion_world_center=vec4(circle_center,cantilevered_height,1);vec4 occlusion_projected_center=u_matrix*occlusion_world_center;\\n#else\\nvec4 occlusion_world_center=world_center;vec4 occlusion_projected_center=projected_center;\\n#endif\\nfor(int ring=0; ring < NUM_VISIBILITY_RINGS; ring++) {float scale=(float(ring)+1.0)/float(NUM_VISIBILITY_RINGS);for(int i=0; i < NUM_SAMPLES_PER_RING; i++) {vec2 extrusion=vec2(cos(step*float(i)),-sin(step*float(i)))*scale;vec4 frag_pos=project_vertex(extrusion,occlusion_world_center,occlusion_projected_center,radius,stroke_width,view_scale,surface_vectors);visibility+=float(!isOccluded(frag_pos));}}visibility/=float(NUM_VISIBILITY_RINGS)*float(NUM_SAMPLES_PER_RING);\\n#else\\nvisibility=1.0;\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nvisibility=1.0;\\n#endif\\nv_visibility=visibility;lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);\\n#ifdef FOG\\nv_fog_pos=fog_position(world_center.xyz);\\n#endif\\n}\"),clippingMask:$t(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:$t(\"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef FOG\\ngl_FragColor.r*=pow(1.0-fog_opacity(v_fog_pos),2.0);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;attribute float a_scale;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\\n#endif\\nvarying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 tilePos=floor(a_pos*0.5);\\n#ifdef PROJECTION_GLOBE_VIEW\\nextrude*=a_scale;vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(tilePos)*elevation(tilePos);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*elevation(tilePos);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,tilePos,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#else\\nvec3 pos=vec3(tilePos+extrude,elevation(tilePos));\\n#endif\\ngl_Position=u_matrix*vec4(pos,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),heatmapTexture:$t(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=vec4(a_pos,0,1);v_pos=a_pos*0.5+0.5;}\"),collisionBox:$t(\"varying float v_placed;varying float v_notUsed;void main() {vec4 red =vec4(1.0,0.0,0.0,1.0);vec4 blue=vec4(0.0,0.0,1.0,0.5);gl_FragColor =mix(red,blue,step(0.5,v_placed))*0.5;gl_FragColor*=mix(1.0,0.1,step(0.5,v_notUsed));}\",\"attribute vec3 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;attribute float a_size_scale;attribute vec2 a_padding;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_pos+elevationVector(a_anchor_pos)*elevation(a_anchor_pos),1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(\\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,1.5);gl_Position=projectedPoint;gl_Position.xy+=(a_extrude*a_size_scale+a_shift+a_padding)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:$t(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos_2f;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd  =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz  /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos_2f;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(\\nmix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(\\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:$t(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;\\n#endif\\nvarying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {float h=elevation(a_pos);v_uv=a_pos/8192.0;\\n#ifdef PROJECTION_GLOBE_VIEW\\ngl_Position=u_matrix*vec4(a_pos_3+elevationVector(a_pos)*h,1);\\n#else\\ngl_Position=u_matrix*vec4(a_pos*u_overlay_scale,h,1);\\n#endif\\n}\"),fill:$t(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\nvec4 out_color=color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillOutline:$t(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=outline_color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillOutlinePattern:$t(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=mix(color1,color2,u_fade);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillPattern:$t(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillExtrusion:$t(\"varying vec4 v_color;void main() {vec4 color=v_color;\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\\n#endif\\ngl_FragColor=color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\\n#endif\\nvarying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 pos_nx=floor(a_pos_normal_ed.xyz*0.5);mediump vec3 top_up_ny=a_pos_normal_ed.xyz-2.0*pos_nx;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);\\n#if defined(HAS_CENTROID) || defined(TERRAIN)\\ncentroid_pos=a_centroid_pos;\\n#endif\\n#ifdef TERRAIN\\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;float ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;float h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 pos=vec3(pos_nx.xy,h);\\n#else\\nvec3 pos=vec3(pos_nx.xy,t > 0.0 ? height : base);\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nfloat lift=float((t+base) > 0.0)*u_height_lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(pos.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,pos.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*pos.z;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#endif\\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(pos,1),AWAY,hidden);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.rgb+=clamp(color.rgb*directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_color*=u_opacity;\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),fillExtrusionPattern:$t(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);out_color=out_color*v_lighting;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\\n#endif\\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 pos_nx=floor(a_pos_normal_ed.xyz*0.5);mediump vec3 top_up_ny=a_pos_normal_ed.xyz-2.0*pos_nx;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));float edgedistance=a_pos_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;float z=t > 0.0 ? height : base;vec2 centroid_pos=vec2(0.0);\\n#if defined(HAS_CENTROID) || defined(TERRAIN)\\ncentroid_pos=a_centroid_pos;\\n#endif\\n#ifdef TERRAIN\\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;float ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;float h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 p=vec3(pos_nx.xy,h);\\n#else\\nvec3 p=vec3(pos_nx.xy,z);\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nfloat lift=float((t+base) > 0.0)*u_height_lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(p.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,p.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*p.z;p=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#endif\\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(p,1),AWAY,hidden);vec2 pos=normal.z==1.0\\n? pos_nx.xy\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;\\n#ifdef FOG\\nv_fog_pos=fog_position(p);\\n#endif\\n}\"),hillshadePrepare:$t(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nreturn texture2D(u_image,coord).a/4.0;\\n#else\\nvec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;\\n#endif\\n}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y));float b=getElevation(v_pos+vec2(0,-epsilon.y));float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y));float d=getElevation(v_pos+vec2(-epsilon.x,0));float e=getElevation(v_pos);float f=getElevation(v_pos+vec2(epsilon.x,0));float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y));float h=getElevation(v_pos+vec2(0,epsilon.y));float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2(\\n(c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c)\\n)/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(\\nderiv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:$t(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef FOG\\ngl_FragColor=fog_dither(fog_apply_premultiplied(gl_FragColor,v_fog_pos));\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),line:$t(\"uniform lowp float u_device_pixel_ratio;uniform float u_alpha_discard_threshold;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#ifdef RENDER_LINE_DASH\\nuniform sampler2D u_dash_image;uniform float u_mix;uniform vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nuniform sampler2D u_gradient_image;varying highp vec2 v_uv;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 dash_from\\n#pragma mapbox: define lowp vec4 dash_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize lowp vec4 dash_from\\n#pragma mapbox: initialize lowp vec4 dash_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);\\n#ifdef RENDER_LINE_DASH\\nfloat sdfdist_a=texture2D(u_dash_image,v_tex_a).a;float sdfdist_b=texture2D(u_dash_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfwidth=min(dash_from.z*u_scale.y,dash_to.z*u_scale.z);float sdfgamma=1.0/(2.0*u_device_pixel_ratio)/sdfwidth;alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nvec4 out_color=texture2D(u_gradient_image,v_uv);\\n#else\\nvec4 out_color=color;\\n#endif\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\n#ifdef RENDER_LINE_ALPHA_DISCARD\\nif (alpha < u_alpha_discard_threshold) {discard;}\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define EXTRUDE_SCALE 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;\\n#ifdef RENDER_LINE_GRADIENT\\nattribute vec3 a_packed;\\n#else\\nattribute float a_linesofar;\\n#endif\\nuniform mat4 u_matrix;uniform mat2 u_pixels_to_tile_units;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;\\n#ifdef RENDER_LINE_DASH\\nuniform vec2 u_texsize;uniform mediump vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nuniform float u_image_height;varying highp vec2 v_uv;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 dash_from\\n#pragma mapbox: define lowp vec4 dash_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize lowp vec4 dash_from\\n#pragma mapbox: initialize lowp vec4 dash_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*EXTRUDE_SCALE;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*EXTRUDE_SCALE*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\\n#ifndef RENDER_TO_TEXTURE\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#else\\nv_gamma_scale=1.0;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nfloat a_uv_x=a_packed[0];float a_split_index=a_packed[1];float a_linesofar=a_packed[2];highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);\\n#endif\\n#ifdef RENDER_LINE_DASH\\nfloat tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;float scaleA=dash_from.z==0.0 ? 0.0 : tileZoomRatio/(dash_from.z*fromScale);float scaleB=dash_to.z==0.0 ? 0.0 : tileZoomRatio/(dash_to.z*toScale);float heightA=dash_from.y;float heightB=dash_to.y;v_tex_a=vec2(a_linesofar*scaleA/floorwidth,(-normal.y*heightA+dash_from.x+0.5)/u_texsize.y);v_tex_b=vec2(a_linesofar*scaleB/floorwidth,(-normal.y*heightB+dash_to.x+0.5)/u_texsize.y);\\n#endif\\nv_width2=vec2(outset,inset);\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),linePattern:$t(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\\n#endif\\ngl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_linesofar;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mat2 u_pixels_to_tile_units;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\\n#ifndef RENDER_TO_TEXTURE\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#else\\nv_gamma_scale=1.0;\\n#endif\\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),raster:$t(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(\\ndot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);vec3 out_color=mix(u_high_vec,u_low_vec,rgb);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=vec4(out_color*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform vec2 u_perspective_transform;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {float w=1.0+dot(a_texture_pos,u_perspective_transform);gl_Position=u_matrix*vec4(a_pos*w,0,w);v_pos0=a_texture_pos/8192.0;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),symbolIcon:$t(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchorZ=a_z_tile_anchor.x;vec2 tileAnchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tileAnchor)*elevation(tileAnchor);vec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tileAnchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchorZ)+h,mercator_pos,u_zoom_transition);vec4 projectedPoint=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),anchorZ,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchorZ),mercator_pos,u_zoom_transition);\\n#ifdef PROJECTED_POS_ON_VIEWPORT\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projectedPoint);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projectedPoint.w <=0.0 || occlusion_fade==0.0));float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nv_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change))*projection_transition_fade;}\"),symbolSDF:$t(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_tile_id;uniform float u_zoom_transition;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchorZ=a_z_tile_anchor.x;vec2 tileAnchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tileAnchor)*elevation(tileAnchor);vec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tileAnchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchorZ)+h,mercator_pos,u_zoom_transition);vec4 projectedPoint=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),anchorZ,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchorZ),mercator_pos,u_zoom_transition);\\n#ifdef PROJECTED_POS_ON_VIEWPORT\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projectedPoint);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projectedPoint.w <=0.0 || occlusion_fade==0.0));float gamma_scale=gl_Position.w;float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nvec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade);}\"),symbolTextAndIcon:$t(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchorZ=a_z_tile_anchor.x;vec2 tileAnchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tileAnchor)*elevation(tileAnchor);vec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tileAnchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchorZ)+h,mercator_pos,u_zoom_transition);vec4 projectedPoint=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),anchorZ,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchorZ),mercator_pos,u_zoom_transition);\\n#ifdef PROJECTED_POS_ON_VIEWPORT\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*fontScale);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projectedPoint);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projectedPoint.w <=0.0 || occlusion_fade==0.0));float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nv_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade,is_sdf);}\"),terrainRaster:$t(\"uniform sampler2D u_image0;varying vec2 v_pos0;\\n#ifdef FOG\\nvarying float v_fog_opacity;\\n#endif\\nvoid main() {vec4 color=texture2D(u_image0,v_pos0);\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_from_vert(color,v_fog_opacity));\\n#endif\\ngl_FragColor=color;\\n#ifdef TERRAIN_WIREFRAME\\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_skirt_height;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;\\n#ifdef FOG\\nvarying float v_fog_opacity;\\n#endif\\nconst float skirtOffset=24575.0;const float wireframeOffset=0.00015;void main() {v_pos0=a_texture_pos/8192.0;float skirt=float(a_pos.x >=skirtOffset);float elevation=elevation(a_texture_pos)-skirt*u_skirt_height;\\n#ifdef TERRAIN_WIREFRAME\\nelevation+=u_skirt_height*u_skirt_height*wireframeOffset;\\n#endif\\nvec2 decodedPos=a_pos-vec2(skirt*skirtOffset,0.0);gl_Position=u_matrix*vec4(decodedPos,elevation,1.0);\\n#ifdef FOG\\nv_fog_opacity=fog(fog_position(vec3(decodedPos,elevation)));\\n#endif\\n}\"),terrainDepth:$t(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nvarying float v_depth;void main() {gl_FragColor=pack_depth(v_depth);}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying float v_depth;void main() {float elevation=elevation(a_texture_pos);gl_Position=u_matrix*vec4(a_pos,elevation,1.0);v_depth=gl_Position.z/gl_Position.w;}\"),skybox:$t(\"\\nvarying lowp vec3 v_uv;uniform lowp samplerCube u_cubemap;uniform lowp float u_opacity;uniform highp float u_temporal_offset;uniform highp vec3 u_sun_direction;float sun_disk(highp vec3 ray_direction,highp vec3 sun_direction) {highp float cos_angle=dot(normalize(ray_direction),sun_direction);const highp float cos_sun_angular_diameter=0.99996192306;const highp float smoothstep_delta=1e-5;return smoothstep(\\ncos_sun_angular_diameter-smoothstep_delta,cos_sun_angular_diameter+smoothstep_delta,cos_angle);}float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec3 uv=v_uv;const float y_bias=0.015;uv.y+=y_bias;uv.y=pow(abs(uv.y),1.0/5.0);uv.y=map(uv.y,0.0,1.0,-1.0,1.0);vec3 sky_color=textureCube(u_cubemap,uv).rgb;\\n#ifdef FOG\\nsky_color=fog_apply_sky_gradient(v_uv.xzy,sky_color);\\n#endif\\nsky_color.rgb=dither(sky_color.rgb,gl_FragCoord.xy+u_temporal_offset);sky_color+=0.1*sun_disk(v_uv,u_sun_direction);gl_FragColor=vec4(sky_color*u_opacity,u_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",jt),skyboxGradient:$t(\"varying highp vec3 v_uv;uniform lowp sampler2D u_color_ramp;uniform highp vec3 u_center_direction;uniform lowp float u_radius;uniform lowp float u_opacity;uniform highp float u_temporal_offset;void main() {float progress=acos(dot(normalize(v_uv),u_center_direction))/u_radius;vec4 color=texture2D(u_color_ramp,vec2(progress,0.5));\\n#ifdef FOG\\ncolor.rgb=fog_apply_sky_gradient(v_uv.xzy,color.rgb/color.a)*color.a;\\n#endif\\ncolor*=u_opacity;color.rgb=dither(color.rgb,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",jt),skyboxCapture:$t(\"\\nvarying highp vec3 v_position;uniform highp float u_sun_intensity;uniform highp float u_luminance;uniform lowp vec3 u_sun_direction;uniform highp vec4 u_color_tint_r;uniform highp vec4 u_color_tint_m;\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\n#define BETA_R                  vec3(5.5e-6,13.0e-6,22.4e-6)\\n#define BETA_M                  vec3(21e-6,21e-6,21e-6)\\n#define MIE_G                   0.76\\n#define DENSITY_HEIGHT_SCALE_R  8000.0\\n#define DENSITY_HEIGHT_SCALE_M  1200.0\\n#define PLANET_RADIUS           6360e3\\n#define ATMOSPHERE_RADIUS       6420e3\\n#define SAMPLE_STEPS            10\\n#define DENSITY_STEPS           4\\nfloat ray_sphere_exit(vec3 orig,vec3 dir,float radius) {float a=dot(dir,dir);float b=2.0*dot(dir,orig);float c=dot(orig,orig)-radius*radius;float d=sqrt(b*b-4.0*a*c);return (-b+d)/(2.0*a);}vec3 extinction(vec2 density) {return exp(-vec3(BETA_R*u_color_tint_r.a*density.x+BETA_M*u_color_tint_m.a*density.y));}vec2 local_density(vec3 point) {float height=max(length(point)-PLANET_RADIUS,0.0);float exp_r=exp(-height/DENSITY_HEIGHT_SCALE_R);float exp_m=exp(-height/DENSITY_HEIGHT_SCALE_M);return vec2(exp_r,exp_m);}float phase_ray(float cos_angle) {return (3.0/(16.0*PI))*(1.0+cos_angle*cos_angle);}float phase_mie(float cos_angle) {return (3.0/(8.0*PI))*((1.0-MIE_G*MIE_G)*(1.0+cos_angle*cos_angle))/((2.0+MIE_G*MIE_G)*pow(1.0+MIE_G*MIE_G-2.0*MIE_G*cos_angle,1.5));}vec2 density_to_atmosphere(vec3 point,vec3 light_dir) {float ray_len=ray_sphere_exit(point,light_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(DENSITY_STEPS);vec2 density_point_to_atmosphere=vec2(0.0);for (int i=0; i < DENSITY_STEPS;++i) {vec3 point_on_ray=point+light_dir*((float(i)+0.5)*step_len);density_point_to_atmosphere+=local_density(point_on_ray)*step_len;;}return density_point_to_atmosphere;}vec3 atmosphere(vec3 ray_dir,vec3 sun_direction,float sun_intensity) {vec2 density_orig_to_point=vec2(0.0);vec3 scatter_r=vec3(0.0);vec3 scatter_m=vec3(0.0);vec3 origin=vec3(0.0,PLANET_RADIUS,0.0);float ray_len=ray_sphere_exit(origin,ray_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(SAMPLE_STEPS);for (int i=0; i < SAMPLE_STEPS;++i) {vec3 point_on_ray=origin+ray_dir*((float(i)+0.5)*step_len);vec2 density=local_density(point_on_ray)*step_len;density_orig_to_point+=density;vec2 density_point_to_atmosphere=density_to_atmosphere(point_on_ray,sun_direction);vec2 density_orig_to_atmosphere=density_orig_to_point+density_point_to_atmosphere;vec3 extinction=extinction(density_orig_to_atmosphere);scatter_r+=density.x*extinction;scatter_m+=density.y*extinction;}float cos_angle=dot(ray_dir,sun_direction);float phase_r=phase_ray(cos_angle);float phase_m=phase_mie(cos_angle);vec3 beta_r=BETA_R*u_color_tint_r.rgb*u_color_tint_r.a;vec3 beta_m=BETA_M*u_color_tint_m.rgb*u_color_tint_m.a;return (scatter_r*phase_r*beta_r+scatter_m*phase_m*beta_m)*sun_intensity;}const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;vec3 uncharted2_tonemap(vec3 x) {return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}void main() {vec3 ray_direction=v_position;ray_direction.y=pow(ray_direction.y,5.0);const float y_bias=0.015;ray_direction.y+=y_bias;vec3 color=atmosphere(normalize(ray_direction),u_sun_direction,u_sun_intensity);float white_scale=1.0748724675633854;color=uncharted2_tonemap((log2(2.0/pow(u_luminance,4.0)))*color)*white_scale;gl_FragColor=vec4(color,1.0);}\",\"attribute highp vec3 a_pos_3f;uniform mat3 u_matrix_3f;varying highp vec3 v_position;float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec4 pos=vec4(u_matrix_3f*a_pos_3f,1.0);v_position=pos.xyz;v_position.y*=-1.0;v_position.y=map(v_position.y,-1.0,1.0,0.0,1.0);gl_Position=vec4(a_pos_3f.xy,0.0,1.0);}\"),globeRaster:$t(\"uniform sampler2D u_image0;varying vec2 v_pos0;void main() {gl_FragColor=texture2D(u_image0,v_pos0);\\n#ifdef TERRAIN_WIREFRAME\\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_proj_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform float u_zoom_transition;uniform vec2 u_merc_center;attribute vec3 a_globe_pos;attribute vec2 a_merc_pos;attribute vec2 a_uv;varying vec2 v_pos0;const float wireframeOffset=1e3;void main() {v_pos0=a_uv;vec2 uv=a_uv*EXTENT;vec4 up_vector=vec4(elevationVector(uv),1.0);float height=elevation(uv);\\n#ifdef TERRAIN_WIREFRAME\\nheight+=wireframeOffset;\\n#endif\\nvec4 globe=u_globe_matrix*vec4(a_globe_pos+up_vector.xyz*height,1.0);vec4 mercator=vec4(0.0);if (u_zoom_transition > 0.0) {mercator=vec4(a_merc_pos,height,1.0);mercator.xy-=u_merc_center;mercator.x=wrap(mercator.x,-0.5,0.5);mercator=u_merc_matrix*mercator;}vec3 position=mix(globe.xyz,mercator.xyz,u_zoom_transition);gl_Position=u_proj_matrix*vec4(position,1.0);}\"),globeAtmosphere:$t(\"uniform vec2 u_center;uniform float u_radius;uniform vec2 u_screen_size;uniform float u_opacity;uniform highp float u_fadeout_range;uniform vec3 u_start_color;uniform vec3 u_end_color;uniform float u_pixel_ratio;void main() {highp vec2 fragCoord=gl_FragCoord.xy/u_pixel_ratio;fragCoord.y=u_screen_size.y-fragCoord.y;float distFromCenter=length(fragCoord-u_center);float normDistFromCenter=length(fragCoord-u_center)/u_radius;if (normDistFromCenter < 1.0)\\ndiscard;float t=clamp(1.0-sqrt(normDistFromCenter-1.0)/u_fadeout_range,0.0,1.0);vec3 color=mix(u_start_color,u_end_color,1.0-t);gl_FragColor=vec4(color*t*u_opacity,u_opacity);}\",\"attribute vec3 a_pos;void main() {gl_Position=vec4(a_pos,1.0);}\")};function $t(e,t,i){const o=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,r=/uniform (highp |mediump |lowp )?([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g,n=t.match(/attribute (highp |mediump |lowp )?([\\w]+) ([\\w]+)/g),a=e.match(r),s=t.match(r),l=Gt.match(r);let c=s?s.concat(a):a;i||(Zt.staticUniforms&&(c=Zt.staticUniforms.concat(c)),Vt.staticUniforms&&(c=Vt.staticUniforms.concat(c))),c&&(c=c.concat(l));const h={};return {fragmentSource:e=e.replace(o,((e,t,i,o,r)=>(h[r]=!0,\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${r}\\nvarying ${i} ${o} ${r};\\n#else\\nuniform ${i} ${o} u_${r};\\n#endif\\n`:`\\n#ifdef HAS_UNIFORM_u_${r}\\n    ${i} ${o} ${r} = u_${r};\\n#endif\\n`))),vertexSource:t=t.replace(o,((e,t,i,o,r)=>{const n=\"float\"===o?\"vec2\":\"vec4\",a=r.match(/color/)?\"color\":n;return h[r]?\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${r}\\nuniform lowp float u_${r}_t;\\nattribute ${i} ${n} a_${r};\\nvarying ${i} ${o} ${r};\\n#else\\nuniform ${i} ${o} u_${r};\\n#endif\\n`:\"vec4\"===a?`\\n#ifndef HAS_UNIFORM_u_${r}\\n    ${r} = a_${r};\\n#else\\n    ${i} ${o} ${r} = u_${r};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${r}\\n    ${r} = unpack_mix_${a}(a_${r}, u_${r}_t);\\n#else\\n    ${i} ${o} ${r} = u_${r};\\n#endif\\n`:\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${r}\\nuniform lowp float u_${r}_t;\\nattribute ${i} ${n} a_${r};\\n#else\\nuniform ${i} ${o} u_${r};\\n#endif\\n`:\"vec4\"===a?`\\n#ifndef HAS_UNIFORM_u_${r}\\n    ${i} ${o} ${r} = a_${r};\\n#else\\n    ${i} ${o} ${r} = u_${r};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${r}\\n    ${i} ${o} ${r} = unpack_mix_${a}(a_${r}, u_${r}_t);\\n#else\\n    ${i} ${o} ${r} = u_${r};\\n#endif\\n`})),staticAttributes:n,staticUniforms:c}}class Ht{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(e,t,i,o,r,n,a,s){this.context=e;let l=this.boundPaintVertexBuffers.length!==o.length;for(let e=0;!l&&e<o.length;e++)this.boundPaintVertexBuffers[e]!==o[e]&&(l=!0);e.extVertexArrayObject&&this.vao&&this.boundProgram===t&&this.boundLayoutVertexBuffer===i&&!l&&this.boundIndexBuffer===r&&this.boundVertexOffset===n&&this.boundDynamicVertexBuffer===a&&this.boundDynamicVertexBuffer2===s?(e.bindVertexArrayOES.set(this.vao),a&&a.bind(),r&&r.dynamicDraw&&r.bind(),s&&s.bind()):this.freshBind(t,i,o,r,n,a,s);}freshBind(e,t,i,o,r,n,a){let s;const l=e.numAttributes,c=this.context,h=c.gl;if(c.extVertexArrayObject)this.vao&&this.destroy(),this.vao=c.extVertexArrayObject.createVertexArrayOES(),c.bindVertexArrayOES.set(this.vao),s=0,this.boundProgram=e,this.boundLayoutVertexBuffer=t,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=o,this.boundVertexOffset=r,this.boundDynamicVertexBuffer=n,this.boundDynamicVertexBuffer2=a;else {s=c.currentNumAttributes||0;for(let e=l;e<s;e++)h.disableVertexAttribArray(e);}t.enableAttributes(h,e);for(const t of i)t.enableAttributes(h,e);n&&n.enableAttributes(h,e),a&&a.enableAttributes(h,e),t.bind(),t.setVertexAttribPointers(h,e,r);for(const t of i)t.bind(),t.setVertexAttribPointers(h,e,r);n&&(n.bind(),n.setVertexAttribPointers(h,e,r)),o&&o.bind(),a&&(a.bind(),a.setVertexAttribPointers(h,e,r)),c.currentNumAttributes=l;}destroy(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null);}}function Kt(t,i){const o=Math.pow(2,i.canonical.z),r=i.canonical.y;return [new e.MercatorCoordinate(0,r/o).toLngLat().lat,new e.MercatorCoordinate(0,(r+1)/o).toLngLat().lat]}function Yt(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=o.fbo;if(!h)return;t.prepareDrawTile(i);const u=t.useProgram(\"hillshade\");l.activeTexture.set(c.TEXTURE0),c.bindTexture(c.TEXTURE_2D,h.colorAttachment.get());const _=((e,t,i,o)=>{const r=i.paint.get(\"hillshade-shadow-color\"),n=i.paint.get(\"hillshade-highlight-color\"),a=i.paint.get(\"hillshade-accent-color\");let s=i.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===i.paint.get(\"hillshade-illumination-anchor\")&&(s-=e.transform.angle);const l=!e.options.moving;return {u_matrix:o||e.transform.calculateProjMatrix(t.tileID.toUnwrapped(),l),u_image:0,u_latrange:Kt(0,t.tileID),u_light:[i.paint.get(\"hillshade-exaggeration\"),s],u_shadow:r,u_highlight:n,u_accent:a}})(t,o,r,t.terrain?i.projMatrix:null);t.prepareDrawProgram(l,u,i.toUnwrapped());const{tileBoundsBuffer:d,tileBoundsIndexBuffer:p,tileBoundsSegments:m}=t.getTileBoundsBuffers(o);u.draw(l,c.TRIANGLES,n,a,s,e.CullFaceMode.disabled,_,r.id,d,p,m);}function Jt(t,i,o){if(!i.needsDEMTextureUpload)return;const r=t.context,n=r.gl;r.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||t.getTileTexture(o.stride);const a=o.getPixels();i.demTexture?i.demTexture.update(a,{premultiply:!1}):i.demTexture=new e.Texture(r,a,n.RGBA,{premultiply:!1}),i.needsDEMTextureUpload=!1;}function Qt(t,i,o,r,n,a){const s=t.context,l=s.gl;if(!i.dem)return;const c=i.dem;if(s.activeTexture.set(l.TEXTURE1),Jt(t,i,c),!i.demTexture)return;i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);const h=c.dim;s.activeTexture.set(l.TEXTURE0);let u=i.fbo;if(!u){const t=new e.Texture(s,{width:h,height:h,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),u=i.fbo=s.createFramebuffer(h,h,!0),u.colorAttachment.set(t.texture);}s.bindFramebuffer.set(u.framebuffer),s.viewport.set([0,0,h,h]);const{tileBoundsBuffer:_,tileBoundsIndexBuffer:d,tileBoundsSegments:p}=t.getMercatorTileBoundsBuffers();t.useProgram(\"hillshadePrepare\").draw(s,l.TRIANGLES,r,n,a,e.CullFaceMode.disabled,((t,i)=>{const o=i.stride,r=e.create();return e.ortho(r,0,e.EXTENT,-e.EXTENT,0,0,1),e.translate(r,r,[0,-e.EXTENT,0]),{u_matrix:r,u_image:1,u_dimension:[o,o],u_zoom:t.overscaledZ,u_unpack:i.unpackVector}})(i.tileID,c),o.id,_,d,p),i.needsHillshadePrepare=!1;}const ei=(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image0:new e.Uniform1i(t,i.u_image0),u_skirt_height:new e.Uniform1f(t,i.u_skirt_height)}),ti=(e,t)=>({u_matrix:e,u_image0:0,u_skirt_height:t}),ii=(e,t,i,o,r)=>({u_proj_matrix:Float32Array.from(e),u_globe_matrix:t,u_merc_matrix:i,u_zoom_transition:o,u_merc_center:r,u_image0:0});function oi(e,t){return null!=e&&null!=t&&!(!e.hasData()||!t.hasData())&&null!=e.demTexture&&null!=t.demTexture&&e.tileID.key!==t.tileID.key}const ri=new class{constructor(){this.operations={};}newMorphing(e,t,i,o,r){if(e in this.operations){const t=this.operations[e];t.to.tileID.key!==i.tileID.key&&(t.queued=i);}else this.operations[e]={startTime:o,phase:0,duration:r,from:t,to:i,queued:null};}getMorphValuesForProxy(e){if(!(e in this.operations))return null;const t=this.operations[e];return {from:t.from,to:t.to,phase:t.phase}}update(e){for(const t in this.operations){const i=this.operations[t];for(i.phase=(e-i.startTime)/i.duration;i.phase>=1||!this._validOp(i);)if(!this._nextOp(i,e)){delete this.operations[t];break}}}_nextOp(e,t){return !!e.queued&&(e.from=e.to,e.to=e.queued,e.queued=null,e.phase=0,e.startTime=t,!0)}_validOp(e){return e.from.hasData()&&e.to.hasData()}},ni={0:null,1:\"TERRAIN_VERTEX_MORPHING\",2:\"TERRAIN_WIREFRAME\"};function ai(e,t){const i=1<<e.z;return !t&&(0===e.x||e.x===i-1)||0===e.y||e.y===i-1}const si=e=>({u_matrix:e});function li(t,i,o,r,n){if(n>0){const a=e.exported.now(),s=(a-t.timeAdded)/n,l=i?(a-i.timeAdded)/n:-1,c=o.getSource(),h=r.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(t.tileID.overscaledZ-h),_=u&&t.refreshedUponExpiration?1:e.clamp(u?s:1-l,0,1);return t.refreshedUponExpiration&&s>=1&&(t.refreshedUponExpiration=!1),i?{opacity:1,mix:1-_}:{opacity:_,mix:0}}return {opacity:1,mix:0}}class ci extends e.SourceCache{constructor(e){const t={type:\"raster-dem\",maxzoom:e.transform.maxZoom},i=new C(Ae(),null),o=Te(\"mock-dem\",t,i,e.style);super(\"mock-dem\",o,!1),o.setEventedParent(this),this._sourceLoaded=!0;}_loadTile(e,t){e.state=\"loaded\",t(null);}}class hi extends e.SourceCache{constructor(e){const t=Te(\"proxy\",{type:\"geojson\",maxzoom:e.transform.maxZoom},new C(Ae(),null),e.style);super(\"proxy\",t,!1),t.setEventedParent(this),this.map=this.getSource().map=e,this.used=this._sourceLoaded=!0,this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={};}update(t,i,o){if(t.freezeTileCoverage)return;this.transform=t;const r=t.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}).reduce(((i,o)=>{if(i[o.key]=\"\",!this._tiles[o.key]){const i=new e.Tile(o,this._source.tileSize*o.overscaleFactor(),t.tileZoom);i.state=\"loaded\",this._tiles[o.key]=i;}return i}),{});for(const e in this._tiles)e in r||(this.freeFBO(e),this._tiles[e].unloadVectorData(),delete this._tiles[e]);}freeFBO(e){const t=this.proxyCachedFBO[e];if(void 0!==t){const i=Object.values(t);this.renderCachePool.push(...i),delete this.proxyCachedFBO[e];}}deallocRenderCache(){this.renderCache.forEach((e=>e.fb.destroy())),this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={};}}class ui extends e.OverscaledTileID{constructor(e,t,i){super(e.overscaledZ,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y),this.proxyTileKey=t,this.projMatrix=i;}}class _i extends e.Elevation{constructor(t,i){super(),this.painter=t,this.terrainTileForTile={},this.prevTerrainTileForTile={};const[o,r,n]=function(t){const i=new e.StructArrayLayout4i8,o=new e.StructArrayLayout3ui6,r=131;i.reserve(17161),o.reserve(33800);const n=e.EXTENT/128,a=e.EXTENT+n/2,s=a+n;for(let t=-n;t<s;t+=n)for(let o=-n;o<s;o+=n){const r=o<0||o>a||t<0||t>a?24575:0,n=e.clamp(Math.round(o),0,e.EXTENT),s=e.clamp(Math.round(t),0,e.EXTENT);i.emplaceBack(n+r,s,n,s);}const l=(e,t)=>{const i=t*r+e;o.emplaceBack(i+1,i,i+r),o.emplaceBack(i+r,i+r+1,i+1);};for(let e=1;e<129;e++)for(let t=1;t<129;t++)l(t,e);return [0,129].forEach((e=>{for(let t=0;t<130;t++)l(t,e),l(e,t);})),[i,o,32768]}(),a=t.context;this.gridBuffer=a.createVertexBuffer(o,e.boundsAttributes.members),this.gridIndexBuffer=a.createIndexBuffer(r),this.gridSegments=e.SegmentVector.simpleSegment(0,0,o.length,r.length),this.gridNoSkirtSegments=e.SegmentVector.simpleSegment(0,0,o.length,n),this.proxyCoords=[],this.proxiedCoords={},this._visibleDemTiles=[],this._drapedRenderBatches=[],this._sourceTilesOverlap={},this.proxySourceCache=new hi(i.map),this.orthoMatrix=e.create(),e.ortho(this.orthoMatrix,0,e.EXTENT,0,e.EXTENT,0,1);const s=a.gl;this._overlapStencilMode=new e.StencilMode({func:s.GEQUAL,mask:255},0,255,s.KEEP,s.KEEP,s.REPLACE),this._previousZoom=t.transform.zoom,this.pool=[],this._findCoveringTileCache={},this._tilesDirty={},this.style=i,this._useVertexMorphing=!0,this._exaggeration=1,this._mockSourceCache=new ci(i.map);}set style(e){e.on(\"data\",this._onStyleDataEvent.bind(this)),e.on(\"neworder\",this._checkRenderCacheEfficiency.bind(this)),this._style=e,this._checkRenderCacheEfficiency();}update(t,i,o){if(t&&t.terrain){this._style!==t&&(this.style=t),this.enabled=!0;const r=t.terrain.properties;this.sourceCache=0===t.terrain.drapeRenderMode?this._mockSourceCache:t._getSourceCache(r.get(\"source\")),this._exaggeration=r.get(\"exaggeration\");const n=()=>{this.sourceCache.used&&e.warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.\\nThis leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.`);const t=this.getScaledDemTileSize();this.sourceCache.update(i,t,!0),this.resetTileLookupCache(this.sourceCache.id);};this.sourceCache.usedForTerrain||(this.resetTileLookupCache(this.sourceCache.id),this.sourceCache.usedForTerrain=!0,n(),this._initializing=!0),n(),i.updateElevation(!o),this.resetTileLookupCache(this.proxySourceCache.id),this.proxySourceCache.update(i),this._emptyDEMTextureDirty=!0;}else this._disable();}resetTileLookupCache(e){this._findCoveringTileCache[e]={};}getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/128*this.proxySourceCache.getSource().tileSize}_checkRenderCacheEfficiency(){const t=this.renderCacheEfficiency(this._style);this._style.map._optimizeForTerrain||100!==t.efficiency&&e.warnOnce(`Terrain render cache efficiency is not optimal (${t.efficiency}%) and performance\\n                may be affected negatively, consider placing all background, fill and line layers before layer\\n                with id '${t.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`);}_onStyleDataEvent(e){e.coord&&\"source\"===e.dataType?this._clearRenderCacheForTile(e.sourceCacheId,e.coord):\"style\"===e.dataType&&(this._invalidateRenderCache=!0);}_disable(){if(this.enabled&&(this.enabled=!1,this._sharedDepthStencil=void 0,this.proxySourceCache.deallocRenderCache(),this._style))for(const e in this._style._sourceCaches)this._style._sourceCaches[e].usedForTerrain=!1;}destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture.destroy(),this._emptyDepthBufferTexture&&this._emptyDepthBufferTexture.destroy(),this.pool.forEach((e=>e.fb.destroy())),this.pool=[],this._depthFBO&&(this._depthFBO.destroy(),delete this._depthFBO,delete this._depthTexture);}_source(){return this.enabled?this.sourceCache:null}exaggeration(){return this._exaggeration}get visibleDemTiles(){return this._visibleDemTiles}get drapeBufferSize(){const e=2*this.proxySourceCache.getSource().tileSize;return [e,e]}set useVertexMorphing(e){this._useVertexMorphing=e;}updateTileBinding(t){if(!this.enabled)return;this.prevTerrainTileForTile=this.terrainTileForTile;const i=this.proxySourceCache,o=this.painter.transform;this._initializing&&(this._initializing=0===o._centerAltitude&&-1===this.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(o.center),-1),this._emptyDEMTextureDirty=!this._initializing);const r=this.proxyCoords=i.getIds().map((e=>{const t=i.getTileByID(e).tileID;return t.projMatrix=o.calculateProjMatrix(t.toUnwrapped()),t}));!function(t,i){const o=i.transform.pointCoordinate(i.transform.getCameraPoint()),r=new e.pointGeometry(o.x,o.y);t.sort(((t,i)=>{if(i.overscaledZ-t.overscaledZ)return i.overscaledZ-t.overscaledZ;const o=new e.pointGeometry(t.canonical.x+(1<<t.canonical.z)*t.wrap,t.canonical.y),n=new e.pointGeometry(i.canonical.x+(1<<i.canonical.z)*i.wrap,i.canonical.y),a=r.mult(1<<t.canonical.z);return a.x-=.5,a.y-=.5,a.distSqr(o)-a.distSqr(n)}));}(r,this.painter),this._previousZoom=o.zoom;const n=this.proxyToSource||{};this.proxyToSource={},r.forEach((e=>{this.proxyToSource[e.key]={};})),this.terrainTileForTile={};const a=this._style._sourceCaches;for(const e in a){const i=a[e];if(!i.used)continue;if(i!==this.sourceCache&&this.resetTileLookupCache(i.id),this._setupProxiedCoordsForOrtho(i,t[e],n),i.usedForTerrain)continue;const o=t[e];i.getSource().reparseOverscaled&&this._assignTerrainTiles(o);}this.proxiedCoords[i.id]=r.map((e=>new ui(e,e.key,this.orthoMatrix))),this._assignTerrainTiles(r),this._prepareDEMTextures(),this._setupDrapedRenderBatches(),this._initFBOPool(),this._setupRenderCache(n),this.renderingToTexture=!1,this._updateTimestamp=e.exported.now();const s={};this._visibleDemTiles=[];for(const e of this.proxyCoords){const t=this.terrainTileForTile[e.key];if(!t)continue;const i=t.tileID.key;i in s||(this._visibleDemTiles.push(t),s[i]=i);}}_assignTerrainTiles(e){this._initializing||e.forEach((e=>{if(this.terrainTileForTile[e.key])return;const t=this._findTileCoveringTileID(e,this.sourceCache);t&&(this.terrainTileForTile[e.key]=t);}));}_prepareDEMTextures(){const e=this.painter.context,t=e.gl;for(const i in this.terrainTileForTile){const o=this.terrainTileForTile[i],r=o.dem;!r||o.demTexture&&!o.needsDEMTextureUpload||(e.activeTexture.set(t.TEXTURE1),Jt(this.painter,o,r));}}_prepareDemTileUniforms(e,t,i,o){if(!t||null==t.demTexture)return !1;const r=e.tileID.canonical,n=Math.pow(2,t.tileID.canonical.z-r.z),a=o||\"\";return i[`u_dem_tl${a}`]=[r.x*n%1,r.y*n%1],i[`u_dem_scale${a}`]=n,!0}get emptyDEMTexture(){return !this._emptyDEMTextureDirty&&this._emptyDEMTexture?this._emptyDEMTexture:this._updateEmptyDEMTexture()}get emptyDepthBufferTexture(){const t=this.painter.context,i=t.gl;if(!this._emptyDepthBufferTexture){const o={width:1,height:1,data:new Uint8Array([255,255,255,255])};this._emptyDepthBufferTexture=new e.Texture(t,o,i.RGBA,{premultiply:!1});}return this._emptyDepthBufferTexture}_getLoadedAreaMinimum(){let e=0;const t=this._visibleDemTiles.reduce(((t,i)=>{if(!i.dem)return t;const o=i.dem.tree.minimums[0];return o>0&&e++,t+o}),0);return e?t/e:0}_updateEmptyDEMTexture(){const t=this.painter.context,i=t.gl;t.activeTexture.set(i.TEXTURE2);const o=this._getLoadedAreaMinimum(),r={width:1,height:1,data:new Uint8Array(e.DEMData.pack(o,this.sourceCache.getSource().encoding))};this._emptyDEMTextureDirty=!1;let n=this._emptyDEMTexture;return n?n.update(r,{premultiply:!1}):n=this._emptyDEMTexture=new e.Texture(t,r,i.RGBA,{premultiply:!1}),n}setupElevationDraw(t,i,o){const r=this.painter.context,n=r.gl,a=(s=this.sourceCache.getSource().encoding,{u_dem:2,u_dem_prev:4,u_dem_unpack:e.DEMData.getUnpackVector(s),u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_exaggeration:0,u_tile_tl_up:[0,0,1],u_tile_tr_up:[0,0,1],u_tile_br_up:[0,0,1],u_tile_bl_up:[0,0,1],u_tile_up_scale:1});var s;a.u_dem_size=this.sourceCache.getSource().tileSize,a.u_exaggeration=this.exaggeration();const l=this.painter.transform,c=l.projection.createTileTransform(l,l.worldSize),h=t.tileID.canonical;a.u_tile_tl_up=c.upVector(h,0,0),a.u_tile_tr_up=c.upVector(h,e.EXTENT,0),a.u_tile_br_up=c.upVector(h,e.EXTENT,e.EXTENT),a.u_tile_bl_up=c.upVector(h,0,e.EXTENT),a.u_tile_up_scale=c.upVectorScale(h);let u=null,_=null,d=1;if(o&&o.morphing&&this._useVertexMorphing){const e=o.morphing.srcDemTile,i=o.morphing.dstDemTile;d=o.morphing.phase,e&&i&&(this._prepareDemTileUniforms(t,e,a,\"_prev\")&&(_=e),this._prepareDemTileUniforms(t,i,a)&&(u=i));}if(_&&u?(r.activeTexture.set(n.TEXTURE2),u.demTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE,n.NEAREST),r.activeTexture.set(n.TEXTURE4),_.demTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE,n.NEAREST),a.u_dem_lerp=d):(u=this.terrainTileForTile[t.tileID.key],r.activeTexture.set(n.TEXTURE2),(this._prepareDemTileUniforms(t,u,a)?u.demTexture:this.emptyDEMTexture).bind(n.NEAREST,n.CLAMP_TO_EDGE)),r.activeTexture.set(n.TEXTURE3),o&&o.useDepthForOcclusion?(this._depthTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE),a.u_depth_size_inv=[1/this._depthFBO.width,1/this._depthFBO.height]):(this.emptyDepthBufferTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE),a.u_depth_size_inv=[1,1]),o&&o.useMeterToDem&&u){const t=(1<<u.tileID.canonical.z)*e.mercatorZfromAltitude(1,this.painter.transform.center.lat)*this.sourceCache.getSource().tileSize;a.u_meter_to_dem=t;}o&&o.labelPlaneMatrixInv&&(a.u_label_plane_matrix_inv=o.labelPlaneMatrixInv),i.setTerrainUniformValues(r,a);}renderToBackBuffer(t){const i=this.painter,o=this.painter.context;0!==t.length&&(o.bindFramebuffer.set(null),o.viewport.set([0,0,i.width,i.height]),this.renderingToTexture=!1,function(t,i,o,r,n){if(\"globe\"===t.transform.projection.name)!function(t,i,o,r,n){const a=t.context,s=a.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,u=(e,i)=>{if(c===e)return;const o=[];i&&o.push(ni[h]),o.push(ni[e]),o.push(\"PROJECTION_GLOBE_VIEW\"),l=t.useProgram(\"globeRaster\",null,o),c=e;},_=t.colorModeForRenderPass(),d=new e.DepthMode(s.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);ri.update(n);const p=t.transform,m=e.calculateGlobeMatrix(p,p.worldSize),f=e.calculateGlobeMercatorMatrix(p),g=[e.mercatorXfromLng(p.center.lng),e.mercatorYfromLat(p.center.lat)],v=t.globeSharedBuffers;(h?[!1,!0]:[!1]).forEach((h=>{c=-1;const x=h?s.LINES:s.TRIANGLES;for(const c of r){const r=o.getTile(c),y=Math.pow(2,c.canonical.z),[b,w]=e.globeBuffersForTileMesh(t,r,c,y),T=e.StencilMode.disabled,E=i.prevTerrainTileForTile[c.key],C=i.terrainTileForTile[c.key];oi(E,C)&&ri.newMorphing(c.key,E,C,n,250),a.activeTexture.set(s.TEXTURE0),r.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE);const M=ri.getMorphValuesForProxy(c.key),S=M?1:0,I={};M&&e.extend$1(I,{morphing:{srcDemTile:M.from,dstDemTile:M.to,phase:e.easeCubicInOut(M.phase)}});const z=e.globeMatrixForTile(c.canonical,m),D=ii(p.projMatrix,z,f,e.globeToMercatorTransition(p.zoom),g);if(u(S,h),i.setupElevationDraw(r,l,I),t.prepareDrawProgram(a,l,c.toUnwrapped()),v){const[i,o]=h?v.getWirefameBuffer(t.context):[v.gridIndexBuffer,v.gridSegments];l.draw(a,x,d,T,_,e.CullFaceMode.backCCW,D,\"globe_raster\",b,i,o);}if(!h){const t=[0===c.canonical.y?e.globePoleMatrixForTile(c.canonical,!1,p):null,c.canonical.y===y-1?e.globePoleMatrixForTile(c.canonical,!0,p):null];for(const i of t){if(!i)continue;const t=ii(p.projMatrix,i,i,0,g);v&&l.draw(a,x,d,T,_,e.CullFaceMode.disabled,t,\"globe_pole_raster\",w,v.poleIndexBuffer,v.poleSegments);}}}}));}(t,i,o,r,n);else {const a=t.context,s=a.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,u=(e,i)=>{if(c===e)return;const o=[ni[e]];i&&o.push(ni[h]),l=t.useProgram(\"terrainRaster\",null,o),c=e;},_=t.colorModeForRenderPass(),d=new e.DepthMode(s.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);ri.update(n);const p=t.transform,m=6*Math.pow(1.5,22-p.zoom)*i.exaggeration();(h?[!1,!0]:[!1]).forEach((h=>{c=-1;const f=h?s.LINES:s.TRIANGLES,[g,v]=h?i.getWirefameBuffer():[i.gridIndexBuffer,i.gridSegments];for(const c of r){const r=o.getTile(c),x=e.StencilMode.disabled,y=i.prevTerrainTileForTile[c.key],b=i.terrainTileForTile[c.key];oi(y,b)&&ri.newMorphing(c.key,y,b,n,250),a.activeTexture.set(s.TEXTURE0),r.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST);const w=ri.getMorphValuesForProxy(c.key),T=w?1:0;let E;w&&(E={morphing:{srcDemTile:w.from,dstDemTile:w.to,phase:e.easeCubicInOut(w.phase)}});const C=ti(c.projMatrix,ai(c.canonical,p.renderWorldCopies)?m/10:m);u(T,h),i.setupElevationDraw(r,l,E),t.prepareDrawProgram(a,l,c.toUnwrapped()),l.draw(a,f,d,x,_,e.CullFaceMode.backCCW,C,\"terrain_raster\",i.gridBuffer,g,v);}}));}}(i,this,this.proxySourceCache,t,this._updateTimestamp),this.renderingToTexture=!0,t.splice(0,t.length));}renderBatch(t){if(0===this._drapedRenderBatches.length)return t+1;this.renderingToTexture=!0;const i=this.painter,o=this.painter.context,r=this.proxySourceCache,n=this.proxiedCoords[r.id],a=this._drapedRenderBatches.shift(),s=[],l=i.style.order;let c=0;for(const h of n){const n=r.getTileByID(h.proxyTileKey),u=r.proxyCachedFBO[h.key]?r.proxyCachedFBO[h.key][t]:void 0,_=void 0!==u?r.renderCache[u]:this.pool[c++],d=void 0!==u;if(n.texture=_.tex,d&&!_.dirty){s.push(n.tileID);continue}let p;o.bindFramebuffer.set(_.fb.framebuffer),this.renderedToTile=!1,_.dirty&&(o.clear({color:e.Color.transparent,stencil:0}),_.dirty=!1);for(let e=a.start;e<=a.end;++e){const t=i.style._layers[l[e]];if(t.isHidden(i.transform.zoom))continue;const r=i.style._getLayerSourceCache(t),n=r?this.proxyToSource[h.key][r.id]:[h];if(!n)continue;const a=n;o.viewport.set([0,0,_.fb.width,_.fb.height]),p!==(r?r.id:null)&&(this._setupStencil(_,n,t,r),p=r?r.id:null),i.renderLayer(i,r,t,a);}this.renderedToTile?(_.dirty=!0,s.push(n.tileID)):d||--c,5===c&&(c=0,this.renderToBackBuffer(s));}return this.renderToBackBuffer(s),this.renderingToTexture=!1,o.bindFramebuffer.set(null),o.viewport.set([0,0,i.width,i.height]),a.end+1}postRender(){}renderCacheEfficiency(e){const t=e.order.length;if(0===t)return {efficiency:100};let i,o=0,r=0,n=!1;for(let a=0;a<t;++a){const t=e._layers[e.order[a]];this._style.isLayerDraped(t)?(n&&++o,++r):n||(n=!0,i=t.id);}return 0===r?{efficiency:100}:{efficiency:100*(1-o/r),firstUndrapedLayer:i}}getMinElevationBelowMSL(){let e=0;return this._visibleDemTiles.filter((e=>e.dem)).forEach((t=>{e=Math.min(e,t.dem.tree.minimums[0]);})),0===e?e:(e-30)*this._exaggeration}raycast(e,t,i){if(!this._visibleDemTiles)return null;const o=this._visibleDemTiles.filter((e=>e.dem)).map((o=>{const r=o.tileID,n=Math.pow(2,r.overscaledZ),{x:a,y:s}=r.canonical,l=a/n,c=(a+1)/n,h=s/n,u=(s+1)/n;return {minx:l,miny:h,maxx:c,maxy:u,t:o.dem.tree.raycastRoot(l,h,c,u,e,t,i),tile:o}}));o.sort(((e,t)=>(null!==e.t?e.t:Number.MAX_VALUE)-(null!==t.t?t.t:Number.MAX_VALUE)));for(const r of o){if(null==r.t)return null;const o=r.tile.dem.tree.raycast(r.minx,r.miny,r.maxx,r.maxy,e,t,i);if(null!=o)return o}return null}_createFBO(){const t=this.painter.context,i=t.gl,o=this.drapeBufferSize;t.activeTexture.set(i.TEXTURE0);const r=new e.Texture(t,{width:o[0],height:o[1],data:null},i.RGBA);r.bind(i.LINEAR,i.CLAMP_TO_EDGE);const n=t.createFramebuffer(o[0],o[1],!1);return n.colorAttachment.set(r.texture),n.depthAttachment=new ue(t,n.framebuffer),void 0===this._sharedDepthStencil?(this._sharedDepthStencil=t.createRenderbuffer(t.gl.DEPTH_STENCIL,o[0],o[1]),this._stencilRef=0,n.depthAttachment.set(this._sharedDepthStencil),t.clear({stencil:0})):n.depthAttachment.set(this._sharedDepthStencil),t.extTextureFilterAnisotropic&&!t.extTextureFilterAnisotropicForceOff&&i.texParameterf(i.TEXTURE_2D,t.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.extTextureFilterAnisotropicMax),{fb:n,tex:r,dirty:!1}}_initFBOPool(){for(;this.pool.length<Math.min(5,this.proxyCoords.length);)this.pool.push(this._createFBO());}_shouldDisableRenderCache(){if(this._style.light&&this._style.light.hasTransition())return !0;for(const e in this._style._sourceCaches)if(this._style._sourceCaches[e].hasTransition())return !0;return this._style.order.some((e=>{const t=this._style._layers[e],i=t.isHidden(this.painter.transform.zoom),o=t.getCrossfadeParameters(),r=!!o&&1!==o.t,n=t.hasTransition();return \"custom\"!==t.type&&!i&&(r||n)}))}_clearRasterFadeFromRenderCache(){let e=!1;for(const t in this._style._sourceCaches)if(this._style._sourceCaches[t]._source instanceof ve){e=!0;break}if(e)for(let e=0;e<this._style.order.length;++e){const t=this._style._layers[this._style.order[e]],i=t.isHidden(this.painter.transform.zoom),o=this._style._getLayerSourceCache(t);if(\"raster\"!==t.type||i||!o)continue;const r=t.paint.get(\"raster-fade-duration\");for(const e of this.proxyCoords){const t=this.proxyToSource[e.key][o.id];if(t)for(const e of t){const t=li(o.getTile(e),o.findLoadedParent(e,0),o,this.painter.transform,r);(1!==t.opacity||0!==t.mix)&&this._clearRenderCacheForTile(o.id,e);}}}}_setupDrapedRenderBatches(){const e=this._style.order,t=e.length;if(0===t)return;const i=[];let o,r=0,n=this._style._layers[e[r]];for(;!this._style.isLayerDraped(n)&&n.isHidden(this.painter.transform.zoom)&&++r<t;)n=this._style._layers[e[r]];for(;r<t;++r){const t=this._style._layers[e[r]];t.isHidden(this.painter.transform.zoom)||(this._style.isLayerDraped(t)?void 0===o&&(o=r):void 0!==o&&(i.push({start:o,end:r-1}),o=void 0));}void 0!==o&&i.push({start:o,end:r-1}),this._drapedRenderBatches=i;}_setupRenderCache(e){const t=this.proxySourceCache;if(this._shouldDisableRenderCache()||this._invalidateRenderCache){if(this._invalidateRenderCache=!1,t.renderCache.length>t.renderCachePool.length){const e=Object.values(t.proxyCachedFBO);t.proxyCachedFBO={};for(let i=0;i<e.length;++i){const o=Object.values(e[i]);t.renderCachePool.push(...o);}}return}this._clearRasterFadeFromRenderCache();const i=this.proxyCoords,o=this._tilesDirty;for(let r=i.length-1;r>=0;r--){const n=i[r];if(t.getTileByID(n.key),void 0!==t.proxyCachedFBO[n.key]){const i=e[n.key],r=this.proxyToSource[n.key];let a=0;for(const e in r){const t=r[e],n=i[e];if(!n||n.length!==t.length||t.some(((t,i)=>t!==n[i]||o[e]&&o[e].hasOwnProperty(t.key)))){a=-1;break}++a;}for(const e in t.proxyCachedFBO[n.key])t.renderCache[t.proxyCachedFBO[n.key][e]].dirty=a<0||a!==Object.values(i).length;}}const r=[...this._drapedRenderBatches];r.sort(((e,t)=>t.end-t.start-(e.end-e.start)));for(const e of r)for(const o of i){if(t.proxyCachedFBO[o.key])continue;let i=t.renderCachePool.pop();void 0===i&&t.renderCache.length<50&&(i=t.renderCache.length,t.renderCache.push(this._createFBO())),void 0!==i&&(t.proxyCachedFBO[o.key]={},t.proxyCachedFBO[o.key][e.start]=i,t.renderCache[i].dirty=!0);}this._tilesDirty={};}_setupStencil(e,t,i,o){if(!o||!this._sourceTilesOverlap[o.id])return void(this._overlapStencilType&&(this._overlapStencilType=!1));const r=this.painter.context,n=r.gl;if(t.length<=1)return void(this._overlapStencilType=!1);let a;if(i.isTileClipped())a=t.length,this._overlapStencilMode.test={func:n.EQUAL,mask:255},this._overlapStencilType=\"Clip\";else {if(!(t[0].overscaledZ>t[t.length-1].overscaledZ))return void(this._overlapStencilType=!1);a=1,this._overlapStencilMode.test={func:n.GREATER,mask:255},this._overlapStencilType=\"Mask\";}this._stencilRef+a>255&&(r.clear({stencil:0}),this._stencilRef=0),this._stencilRef+=a,this._overlapStencilMode.ref=this._stencilRef,i.isTileClipped()&&this._renderTileClippingMasks(t,this._overlapStencilMode.ref);}clipOrMaskOverlapStencilType(){return \"Clip\"===this._overlapStencilType||\"Mask\"===this._overlapStencilType}stencilModeForRTTOverlap(t){return this.renderingToTexture&&this._overlapStencilType?(\"Clip\"===this._overlapStencilType&&(this._overlapStencilMode.ref=this.painter._tileClippingMaskIDs[t.key]),this._overlapStencilMode):e.StencilMode.disabled}_renderTileClippingMasks(t,i){const o=this.painter,r=this.painter.context,n=r.gl;o._tileClippingMaskIDs={},r.setColorMode(e.ColorMode.disabled),r.setDepthMode(e.DepthMode.disabled);const a=o.useProgram(\"clippingMask\");for(const s of t){const t=o._tileClippingMaskIDs[s.key]=--i;a.draw(r,n.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:n.ALWAYS,mask:0},t,255,n.KEEP,n.KEEP,n.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,si(s.projMatrix),\"$clipping\",o.tileExtentBuffer,o.quadTriangleIndexBuffer,o.tileExtentSegments);}}pointCoordinate(t){const i=this.painter.transform;if(t.x<0||t.x>i.width||t.y<0||t.y>i.height)return null;const o=[t.x,t.y,1,1];e.transformMat4$1(o,o,i.pixelMatrixInverse),e.scale$1(o,o,1/o[3]),o[0]/=i.worldSize,o[1]/=i.worldSize;const r=i._camera.position,n=e.mercatorZfromAltitude(1,i.center.lat),a=[r[0],r[1],r[2]/n,0],s=e.subtract([],o.slice(0,3),a);e.normalize(s,s);const l=this.raycast(a,s,this._exaggeration);return null!==l&&l?(e.scaleAndAdd(a,a,s,l),a[3]=a[2],a[2]*=n,a):null}drawDepth(){const t=this.painter,i=t.context,o=this.proxySourceCache,r=Math.ceil(t.width),n=Math.ceil(t.height);if(!this._depthFBO||this._depthFBO.width===r&&this._depthFBO.height===n||(this._depthFBO.destroy(),delete this._depthFBO,delete this._depthTexture),!this._depthFBO){const t=i.gl,o=i.createFramebuffer(r,n,!0);i.activeTexture.set(t.TEXTURE0);const a=new e.Texture(i,{width:r,height:n,data:null},t.RGBA);a.bind(t.NEAREST,t.CLAMP_TO_EDGE),o.colorAttachment.set(a.texture);const s=i.createRenderbuffer(i.gl.DEPTH_COMPONENT16,r,n);o.depthAttachment.set(s),this._depthFBO=o,this._depthTexture=a;}i.bindFramebuffer.set(this._depthFBO.framebuffer),i.viewport.set([0,0,r,n]),function(t,i,o,r){if(\"globe\"===t.transform.projection.name)return;const n=t.context,a=n.gl;n.clear({depth:1});const s=t.useProgram(\"terrainDepth\"),l=new e.DepthMode(a.LESS,e.DepthMode.ReadWrite,t.depthRangeFor3D);for(const t of r){const r=o.getTile(t),c=ti(t.projMatrix,0);i.setupElevationDraw(r,s),s.draw(n,a.TRIANGLES,l,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.backCCW,c,\"terrain_depth\",i.gridBuffer,i.gridIndexBuffer,i.gridNoSkirtSegments);}}(t,this,o,this.proxyCoords);}_setupProxiedCoordsForOrtho(e,t,i){if(e.getSource()instanceof be)return this._setupProxiedCoordsForImageSource(e,t,i);this._findCoveringTileCache[e.id]=this._findCoveringTileCache[e.id]||{};const o=this.proxiedCoords[e.id]=[],r=this.proxyCoords;for(let t=0;t<r.length;t++){const n=r[t],a=this._findTileCoveringTileID(n,e);if(a){const t=this._createProxiedId(n,a,i[n.key]&&i[n.key][e.id]);o.push(t),this.proxyToSource[n.key][e.id]=[t];}}let n=!1;for(let r=0;r<t.length;r++){const a=e.getTile(t[r]);if(!a||!a.hasData())continue;const s=this._findTileCoveringTileID(a.tileID,this.proxySourceCache);if(s&&s.tileID.canonical.z!==a.tileID.canonical.z){const t=this.proxyToSource[s.tileID.key][e.id],r=this._createProxiedId(s.tileID,a,i[s.tileID.key]&&i[s.tileID.key][e.id]);t?t.splice(t.length-1,0,r):this.proxyToSource[s.tileID.key][e.id]=[r],o.push(r),n=!0;}}this._sourceTilesOverlap[e.id]=n;}_setupProxiedCoordsForImageSource(t,i,o){if(!t.getSource().loaded())return;const r=this.proxiedCoords[t.id]=[],n=this.proxyCoords,a=t.getSource(),s=new e.pointGeometry(a.tileID.x,a.tileID.y)._div(1<<a.tileID.z),l=a.coordinates.map(e.MercatorCoordinate.fromLngLat).reduce(((e,t)=>(e.min.x=Math.min(e.min.x,t.x-s.x),e.min.y=Math.min(e.min.y,t.y-s.y),e.max.x=Math.max(e.max.x,t.x-s.x),e.max.y=Math.max(e.max.y,t.y-s.y),e)),{min:new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE),max:new e.pointGeometry(-Number.MAX_VALUE,-Number.MAX_VALUE)}),c=(t,i)=>{const o=t.wrap+t.canonical.x/(1<<t.canonical.z),r=t.canonical.y/(1<<t.canonical.z),n=e.EXTENT/(1<<t.canonical.z),a=i.wrap+i.canonical.x/(1<<i.canonical.z),s=i.canonical.y/(1<<i.canonical.z);return o+n<a+l.min.x||o>a+l.max.x||r+n<s+l.min.y||r>s+l.max.y};for(let e=0;e<n.length;e++){const a=n[e];for(let e=0;e<i.length;e++){const n=t.getTile(i[e]);if(!n||!n.hasData())continue;if(c(a,n.tileID))continue;const s=this._createProxiedId(a,n,o[a.key]&&o[a.key][t.id]),l=this.proxyToSource[a.key][t.id];l?l.push(s):this.proxyToSource[a.key][t.id]=[s],r.push(s);}}}_createProxiedId(t,i,o){let r=this.orthoMatrix;if(o){const e=o.find((e=>e.key===i.tileID.key));if(e)return e}if(i.tileID.key!==t.key){const o=t.canonical.z-i.tileID.canonical.z;let n,a,s;r=e.create();const l=i.tileID.wrap-t.wrap<<t.overscaledZ;o>0?(n=e.EXTENT>>o,a=n*((i.tileID.canonical.x<<o)-t.canonical.x+l),s=n*((i.tileID.canonical.y<<o)-t.canonical.y)):(n=e.EXTENT<<-o,a=e.EXTENT*(i.tileID.canonical.x-(t.canonical.x+l<<-o)),s=e.EXTENT*(i.tileID.canonical.y-(t.canonical.y<<-o))),e.ortho(r,0,n,0,n,0,1),e.translate(r,r,[a,s,0]);}return new ui(i.tileID,t.key,r)}_findTileCoveringTileID(t,i){let o=i.getTile(t);if(o&&o.hasData())return o;const r=this._findCoveringTileCache[i.id],n=r[t.key];if(o=n?i.getTileByID(n):null,o&&o.hasData()||null===n)return o;let a=o?o.tileID:t,s=a.overscaledZ;const l=i.getSource().minzoom,c=[];if(!n){const r=i.getSource().maxzoom;if(t.canonical.z>=r){const o=t.canonical.z-r;i.getSource().reparseOverscaled?(s=Math.max(t.canonical.z+2,i.transform.tileZoom),a=new e.OverscaledTileID(s,t.wrap,r,t.canonical.x>>o,t.canonical.y>>o)):0!==o&&(s=r,a=new e.OverscaledTileID(s,t.wrap,r,t.canonical.x>>o,t.canonical.y>>o));}a.key!==t.key&&(c.push(a.key),o=i.getTile(a));}const h=e=>{c.forEach((t=>{r[t]=e;})),c.length=0;};for(s-=1;s>=l&&(!o||!o.hasData());s--){o&&h(o.tileID.key);const e=a.calculateScaledKey(s);if(o=i.getTileByID(e),o&&o.hasData())break;const t=r[e];if(null===t)break;void 0===t?c.push(e):o=i.getTileByID(t);}return h(o?o.tileID.key:null),o&&o.hasData()?o:null}findDEMTileFor(e){return this.enabled?this._findTileCoveringTileID(e,this.sourceCache):null}prepareDrawTile(e){this.renderedToTile=!0;}_clearRenderCacheForTile(e,t){let i=this._tilesDirty[e];i||(i=this._tilesDirty[e]={}),i[t.key]=!0;}getWirefameBuffer(){if(!this.wireframeSegments){const t=function(t){let i,o,r;const n=new e.StructArrayLayout2ui4,a=131;for(o=1;o<129;o++){for(i=1;i<129;i++)r=o*a+i,n.emplaceBack(r,r+1),n.emplaceBack(r,r+a),n.emplaceBack(r+1,r+a),128===o&&n.emplaceBack(r+a,r+a+1);n.emplaceBack(r+1,r+1+a);}return n}();this.wireframeIndexBuffer=this.painter.context.createIndexBuffer(t),this.wireframeSegments=e.SegmentVector.simpleSegment(0,0,this.gridBuffer.length,t.length);}return [this.wireframeIndexBuffer,this.wireframeSegments]}}function di(e){const t=[];for(let i=0;i<e.length;i++){if(null===e[i])continue;const o=e[i].split(\" \");t.push(o.pop());}return t}class pi{static cacheKey(e,t,i){let o=`${e}${i?i.cacheKey:\"\"}`;for(const e of t)o+=`/${e}`;return o}constructor(t,i,o,r,n,a){const s=t.gl;this.program=s.createProgram();const l=di(o.staticAttributes),c=r?r.getBinderAttributes():[],h=l.concat(c),u=o.staticUniforms?di(o.staticUniforms):[],_=r?r.getBinderUniforms():[],d=u.concat(_),p=[];for(const e of d)p.indexOf(e)<0&&p.push(e);let m=r?r.defines():[];m=m.concat(a.map((e=>`#define ${e}`)));const f=m.concat(\"\\n#ifdef GL_ES\\nprecision mediump float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\",qt,Wt.fragmentSource,Vt.fragmentSource,o.fragmentSource).join(\"\\n\"),g=m.concat(\"\\n#ifdef GL_ES\\nprecision highp float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\",qt,Wt.vertexSource,Vt.vertexSource,Zt.vertexSource,o.vertexSource).join(\"\\n\"),v=s.createShader(s.FRAGMENT_SHADER);if(s.isContextLost())return void(this.failedToCreate=!0);s.shaderSource(v,f),s.compileShader(v),s.attachShader(this.program,v);const x=s.createShader(s.VERTEX_SHADER);if(s.isContextLost())return void(this.failedToCreate=!0);s.shaderSource(x,g),s.compileShader(x),s.attachShader(this.program,x),this.attributes={};const y={};this.numAttributes=h.length;for(let e=0;e<this.numAttributes;e++)h[e]&&(s.bindAttribLocation(this.program,e,h[e]),this.attributes[h[e]]=e);s.linkProgram(this.program),s.deleteShader(x),s.deleteShader(v);for(let e=0;e<p.length;e++){const t=p[e];if(t&&!y[t]){const e=s.getUniformLocation(this.program,t);e&&(y[t]=e);}}this.fixedUniforms=n(t,y),this.binderUniforms=r?r.getUniforms(t,y):[],-1!==a.indexOf(\"TERRAIN\")&&(this.terrainUniforms=((t,i)=>({u_dem:new e.Uniform1i(t,i.u_dem),u_dem_prev:new e.Uniform1i(t,i.u_dem_prev),u_dem_unpack:new e.Uniform4f(t,i.u_dem_unpack),u_dem_tl:new e.Uniform2f(t,i.u_dem_tl),u_dem_scale:new e.Uniform1f(t,i.u_dem_scale),u_dem_tl_prev:new e.Uniform2f(t,i.u_dem_tl_prev),u_dem_scale_prev:new e.Uniform1f(t,i.u_dem_scale_prev),u_dem_size:new e.Uniform1f(t,i.u_dem_size),u_dem_lerp:new e.Uniform1f(t,i.u_dem_lerp),u_exaggeration:new e.Uniform1f(t,i.u_exaggeration),u_depth:new e.Uniform1i(t,i.u_depth),u_depth_size_inv:new e.Uniform2f(t,i.u_depth_size_inv),u_meter_to_dem:new e.Uniform1f(t,i.u_meter_to_dem),u_label_plane_matrix_inv:new e.UniformMatrix4f(t,i.u_label_plane_matrix_inv),u_tile_tl_up:new e.Uniform3f(t,i.u_tile_tl_up),u_tile_tr_up:new e.Uniform3f(t,i.u_tile_tr_up),u_tile_br_up:new e.Uniform3f(t,i.u_tile_br_up),u_tile_bl_up:new e.Uniform3f(t,i.u_tile_bl_up),u_tile_up_scale:new e.Uniform1f(t,i.u_tile_up_scale)}))(t,y)),-1!==a.indexOf(\"FOG\")&&(this.fogUniforms=((t,i)=>({u_fog_matrix:new e.UniformMatrix4f(t,i.u_fog_matrix),u_fog_range:new e.Uniform2f(t,i.u_fog_range),u_fog_color:new e.Uniform4f(t,i.u_fog_color),u_fog_horizon_blend:new e.Uniform1f(t,i.u_fog_horizon_blend),u_fog_temporal_offset:new e.Uniform1f(t,i.u_fog_temporal_offset)}))(t,y));}setTerrainUniformValues(e,t){if(!this.terrainUniforms)return;const i=this.terrainUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].set(t[e]);}}setFogUniformValues(e,t){if(!this.fogUniforms)return;const i=this.fogUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].location&&i[e].set(t[e]);}}draw(e,t,i,o,r,n,a,s,l,c,h,u,_,d,p,m){const f=e.gl;if(this.failedToCreate)return;e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(o),e.setColorMode(r),e.setCullFace(n);for(const e of Object.keys(this.fixedUniforms))this.fixedUniforms[e].set(a[e]);d&&d.setUniforms(e,this.binderUniforms,u,{zoom:_});const g={[f.LINES]:2,[f.TRIANGLES]:3,[f.LINE_STRIP]:1}[t];for(const i of h.get()){const o=i.vaos||(i.vaos={});(o[s]||(o[s]=new Ht)).bind(e,this,l,d?d.getPaintVertexBuffers():[],c,i.vertexOffset,p,m),f.drawElements(t,i.primitiveLength*g,f.UNSIGNED_SHORT,i.primitiveOffset*g*2);}}}function mi(e,t,i){const o=1/M(i,1,t.transform.tileZoom),r=Math.pow(2,i.tileID.overscaledZ),n=i.tileSize*Math.pow(2,t.transform.tileZoom)/r,a=n*(i.tileID.canonical.x+i.tileID.wrap*r),s=n*i.tileID.canonical.y;return {u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[o,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[a>>16,s>>16],u_pixel_coord_lower:[65535&a,65535&s]}}const fi=(t,i,o,r)=>{const n=i.style.light,a=n.properties.get(\"position\"),s=[a.x,a.y,a.z],l=e.create$1();\"viewport\"===n.properties.get(\"anchor\")&&(e.fromRotation(l,-i.transform.angle),e.transformMat3(s,s,l));const c=n.properties.get(\"color\");return {u_matrix:t,u_lightpos:s,u_lightintensity:n.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+o,u_opacity:r}},gi=(t,i,o,r,n,a,s)=>e.extend(fi(t,i,o,r),mi(a,i,s),{u_height_factor:-Math.pow(2,n.overscaledZ)/s.tileSize/8}),vi=e=>({u_matrix:e}),xi=(t,i,o,r)=>e.extend(vi(t),mi(o,i,r)),yi=(e,t)=>({u_matrix:e,u_world:t}),bi=(t,i,o,r,n)=>e.extend(xi(t,i,o,r),{u_world:n}),wi=(t,i,o,r)=>{const n=t.transform;let a;return a=\"map\"===r.paint.get(\"circle-pitch-alignment\")?n.calculatePixelsToTileUnitsMatrix(o):new Float32Array([n.pixelsToGLUnits[0],0,0,n.pixelsToGLUnits[1]]),{u_camera_to_center_distance:n.cameraToCenterDistance,u_matrix:t.translatePosMatrix(i.projMatrix,o,r.paint.get(\"circle-translate\"),r.paint.get(\"circle-translate-anchor\")),u_device_pixel_ratio:e.exported.devicePixelRatio,u_extrude_scale:a}},Ti=e=>{const t=[];return \"map\"===e.paint.get(\"circle-pitch-alignment\")&&t.push(\"PITCH_WITH_MAP\"),\"map\"===e.paint.get(\"circle-pitch-scale\")&&t.push(\"SCALE_WITH_MAP\"),t},Ei=(t,i,o)=>{const r=e.EXTENT/o.tileSize;return {u_matrix:t,u_camera_to_center_distance:i.cameraToCenterDistance,u_extrude_scale:[i.pixelsToGLUnits[0]/r,i.pixelsToGLUnits[1]/r]}},Ci=(e,t,i=1)=>({u_matrix:e,u_color:t,u_overlay:0,u_overlay_scale:i}),Mi=(e,t,i,o)=>({u_matrix:e,u_extrude_scale:M(t,1,i),u_intensity:o}),Si=(t,i,o,r,n,a)=>{const s=t.transform,l=s.calculatePixelsToTileUnitsMatrix(i),c={u_matrix:Di(t,i,o,n),u_pixels_to_tile_units:l,u_device_pixel_ratio:e.exported.devicePixelRatio,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]],u_dash_image:0,u_gradient_image:1,u_image_height:a,u_texsize:[0,0],u_scale:[0,0,0],u_mix:0,u_alpha_discard_threshold:0};if(Pi(o)){const e=zi(i,t.transform);c.u_texsize=i.lineAtlasTexture.size,c.u_scale=[e,r.fromScale,r.toScale],c.u_mix=r.t;}return c},Ii=(t,i,o,r,n)=>{const a=t.transform,s=zi(i,a);return {u_matrix:Di(t,i,o,n),u_texsize:i.imageAtlasTexture.size,u_pixels_to_tile_units:a.calculatePixelsToTileUnitsMatrix(i),u_device_pixel_ratio:e.exported.devicePixelRatio,u_image:0,u_scale:[s,r.fromScale,r.toScale],u_fade:r.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]],u_alpha_discard_threshold:0}};function zi(e,t){return 1/M(e,1,t.tileZoom)}function Di(e,t,i,o){return e.translatePosMatrix(o||t.tileID.projMatrix,t,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"))}function Pi(e){const t=e.paint.get(\"line-dasharray\").value;return t.value||\"constant\"!==t.kind}const Ai=(e,t,i,o,r,n)=>{return {u_matrix:e,u_tl_parent:t,u_scale_parent:i,u_fade_t:o.mix,u_opacity:o.opacity*r.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:r.paint.get(\"raster-brightness-min\"),u_brightness_high:r.paint.get(\"raster-brightness-max\"),u_saturation_factor:(s=r.paint.get(\"raster-saturation\"),s>0?1-1/(1.001-s):-s),u_contrast_factor:(a=r.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Li(r.paint.get(\"raster-hue-rotate\")),u_perspective_transform:n};var a,s;};function Li(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return [(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const Ri=(e,t,i,o,r,n,a,s,l,c,h,u,_,d)=>{const p=r.transform;return {u_is_size_zoom_constant:+(\"constant\"===e||\"source\"===e),u_is_size_feature_constant:+(\"constant\"===e||\"camera\"===e),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:p.cameraToCenterDistance,u_pitch:p.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:p.width/p.height,u_fade_change:r.options.fadeDuration?r.symbolFadeChange:1,u_matrix:n,u_label_plane_matrix:a,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+o,u_texsize:c,u_tile_id:h,u_zoom_transition:u,u_inv_rot_matrix:_,u_merc_center:d,u_texture:0}},ki=(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m)=>{const{cameraToCenterDistance:f,_pitch:g}=n.transform;return e.extend(Ri(t,i,o,r,n,a,s,l,c,h,_,d,p,m),{u_gamma_scale:r?f*Math.cos(n.terrain?0:g):1,u_device_pixel_ratio:e.exported.devicePixelRatio,u_is_halo:+u})},Oi=(t,i,o,r,n,a,s,l,c,h,u,_,d,p)=>e.extend(ki(t,i,o,r,n,a,s,l,!0,c,!0,u,_,d,p),{u_texsize_icon:h,u_texture_icon:1}),Bi=(e,t,i)=>({u_matrix:e,u_opacity:t,u_color:i}),Fi=(t,i,o,r,n,a)=>e.extend(function(e,t,i,o){const r=i.imageManager.getPattern(e.from.toString()),n=i.imageManager.getPattern(e.to.toString()),{width:a,height:s}=i.imageManager.getPixelSize(),l=Math.pow(2,o.tileID.overscaledZ),c=o.tileSize*Math.pow(2,i.transform.tileZoom)/l,h=c*(o.tileID.canonical.x+o.tileID.wrap*l),u=c*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:n.tl,u_pattern_br_b:n.br,u_texsize:[a,s],u_mix:t.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:n.displaySize,u_scale_a:t.fromScale,u_scale_b:t.toScale,u_tile_units_to_pixels:1/M(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,u>>16],u_pixel_coord_lower:[65535&h,65535&u]}}(r,a,o,n),{u_matrix:t,u_opacity:i}),Ui={fillExtrusion:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_lightpos:new e.Uniform3f(t,i.u_lightpos),u_lightintensity:new e.Uniform1f(t,i.u_lightintensity),u_lightcolor:new e.Uniform3f(t,i.u_lightcolor),u_vertical_gradient:new e.Uniform1f(t,i.u_vertical_gradient),u_opacity:new e.Uniform1f(t,i.u_opacity)}),fillExtrusionPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_lightpos:new e.Uniform3f(t,i.u_lightpos),u_lightintensity:new e.Uniform1f(t,i.u_lightintensity),u_lightcolor:new e.Uniform3f(t,i.u_lightcolor),u_vertical_gradient:new e.Uniform1f(t,i.u_vertical_gradient),u_height_factor:new e.Uniform1f(t,i.u_height_factor),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade),u_opacity:new e.Uniform1f(t,i.u_opacity)}),fill:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),fillPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade)}),fillOutline:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_world:new e.Uniform2f(t,i.u_world)}),fillOutlinePattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_world:new e.Uniform2f(t,i.u_world),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade)}),circle:(t,i)=>({u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_extrude_scale:new e.UniformMatrix2f(t,i.u_extrude_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),collisionBox:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_extrude_scale:new e.Uniform2f(t,i.u_extrude_scale)}),collisionCircle:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_inv_matrix:new e.UniformMatrix4f(t,i.u_inv_matrix),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_viewport_size:new e.Uniform2f(t,i.u_viewport_size)}),debug:(t,i)=>({u_color:new e.UniformColor(t,i.u_color),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_overlay:new e.Uniform1i(t,i.u_overlay),u_overlay_scale:new e.Uniform1f(t,i.u_overlay_scale)}),clippingMask:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),heatmap:(t,i)=>({u_extrude_scale:new e.Uniform1f(t,i.u_extrude_scale),u_intensity:new e.Uniform1f(t,i.u_intensity),u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),heatmapTexture:(t,i)=>({u_image:new e.Uniform1i(t,i.u_image),u_color_ramp:new e.Uniform1i(t,i.u_color_ramp),u_opacity:new e.Uniform1f(t,i.u_opacity)}),hillshade:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_latrange:new e.Uniform2f(t,i.u_latrange),u_light:new e.Uniform2f(t,i.u_light),u_shadow:new e.UniformColor(t,i.u_shadow),u_highlight:new e.UniformColor(t,i.u_highlight),u_accent:new e.UniformColor(t,i.u_accent)}),hillshadePrepare:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_dimension:new e.Uniform2f(t,i.u_dimension),u_zoom:new e.Uniform1f(t,i.u_zoom),u_unpack:new e.Uniform4f(t,i.u_unpack)}),line:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_pixels_to_tile_units:new e.UniformMatrix2f(t,i.u_pixels_to_tile_units),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_units_to_pixels:new e.Uniform2f(t,i.u_units_to_pixels),u_dash_image:new e.Uniform1i(t,i.u_dash_image),u_gradient_image:new e.Uniform1i(t,i.u_gradient_image),u_image_height:new e.Uniform1f(t,i.u_image_height),u_texsize:new e.Uniform2f(t,i.u_texsize),u_scale:new e.Uniform3f(t,i.u_scale),u_mix:new e.Uniform1f(t,i.u_mix),u_alpha_discard_threshold:new e.Uniform1f(t,i.u_alpha_discard_threshold)}),linePattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixels_to_tile_units:new e.UniformMatrix2f(t,i.u_pixels_to_tile_units),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_image:new e.Uniform1i(t,i.u_image),u_units_to_pixels:new e.Uniform2f(t,i.u_units_to_pixels),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade),u_alpha_discard_threshold:new e.Uniform1f(t,i.u_alpha_discard_threshold)}),raster:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_tl_parent:new e.Uniform2f(t,i.u_tl_parent),u_scale_parent:new e.Uniform1f(t,i.u_scale_parent),u_fade_t:new e.Uniform1f(t,i.u_fade_t),u_opacity:new e.Uniform1f(t,i.u_opacity),u_image0:new e.Uniform1i(t,i.u_image0),u_image1:new e.Uniform1i(t,i.u_image1),u_brightness_low:new e.Uniform1f(t,i.u_brightness_low),u_brightness_high:new e.Uniform1f(t,i.u_brightness_high),u_saturation_factor:new e.Uniform1f(t,i.u_saturation_factor),u_contrast_factor:new e.Uniform1f(t,i.u_contrast_factor),u_spin_weights:new e.Uniform3f(t,i.u_spin_weights),u_perspective_transform:new e.Uniform2f(t,i.u_perspective_transform)}),symbolIcon:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_pitch:new e.Uniform1f(t,i.u_pitch),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_texture:new e.Uniform1i(t,i.u_texture)}),symbolSDF:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_pitch:new e.Uniform1f(t,i.u_pitch),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_texture:new e.Uniform1i(t,i.u_texture),u_gamma_scale:new e.Uniform1f(t,i.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_is_halo:new e.Uniform1i(t,i.u_is_halo)}),symbolTextAndIcon:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_pitch:new e.Uniform1f(t,i.u_pitch),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_texsize_icon:new e.Uniform2f(t,i.u_texsize_icon),u_texture:new e.Uniform1i(t,i.u_texture),u_texture_icon:new e.Uniform1i(t,i.u_texture_icon),u_gamma_scale:new e.Uniform1f(t,i.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_is_halo:new e.Uniform1i(t,i.u_is_halo)}),background:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_opacity:new e.Uniform1f(t,i.u_opacity),u_color:new e.UniformColor(t,i.u_color)}),backgroundPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_opacity:new e.Uniform1f(t,i.u_opacity),u_image:new e.Uniform1i(t,i.u_image),u_pattern_tl_a:new e.Uniform2f(t,i.u_pattern_tl_a),u_pattern_br_a:new e.Uniform2f(t,i.u_pattern_br_a),u_pattern_tl_b:new e.Uniform2f(t,i.u_pattern_tl_b),u_pattern_br_b:new e.Uniform2f(t,i.u_pattern_br_b),u_texsize:new e.Uniform2f(t,i.u_texsize),u_mix:new e.Uniform1f(t,i.u_mix),u_pattern_size_a:new e.Uniform2f(t,i.u_pattern_size_a),u_pattern_size_b:new e.Uniform2f(t,i.u_pattern_size_b),u_scale_a:new e.Uniform1f(t,i.u_scale_a),u_scale_b:new e.Uniform1f(t,i.u_scale_b),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_tile_units_to_pixels:new e.Uniform1f(t,i.u_tile_units_to_pixels)}),terrainRaster:ei,terrainDepth:ei,skybox:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_sun_direction:new e.Uniform3f(t,i.u_sun_direction),u_cubemap:new e.Uniform1i(t,i.u_cubemap),u_opacity:new e.Uniform1f(t,i.u_opacity),u_temporal_offset:new e.Uniform1f(t,i.u_temporal_offset)}),skyboxGradient:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_color_ramp:new e.Uniform1i(t,i.u_color_ramp),u_center_direction:new e.Uniform3f(t,i.u_center_direction),u_radius:new e.Uniform1f(t,i.u_radius),u_opacity:new e.Uniform1f(t,i.u_opacity),u_temporal_offset:new e.Uniform1f(t,i.u_temporal_offset)}),skyboxCapture:(t,i)=>({u_matrix_3f:new e.UniformMatrix3f(t,i.u_matrix_3f),u_sun_direction:new e.Uniform3f(t,i.u_sun_direction),u_sun_intensity:new e.Uniform1f(t,i.u_sun_intensity),u_color_tint_r:new e.Uniform4f(t,i.u_color_tint_r),u_color_tint_m:new e.Uniform4f(t,i.u_color_tint_m),u_luminance:new e.Uniform1f(t,i.u_luminance)}),globeRaster:(t,i)=>({u_proj_matrix:new e.UniformMatrix4f(t,i.u_proj_matrix),u_globe_matrix:new e.UniformMatrix4f(t,i.u_globe_matrix),u_merc_matrix:new e.UniformMatrix4f(t,i.u_merc_matrix),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_image0:new e.Uniform1i(t,i.u_image0)}),globeAtmosphere:(t,i)=>({u_center:new e.Uniform2f(t,i.u_center),u_radius:new e.Uniform1f(t,i.u_radius),u_screen_size:new e.Uniform2f(t,i.u_screen_size),u_pixel_ratio:new e.Uniform1f(t,i.u_pixel_ratio),u_opacity:new e.Uniform1f(t,i.u_opacity),u_fadeout_range:new e.Uniform1f(t,i.u_fadeout_range),u_start_color:new e.Uniform3f(t,i.u_start_color),u_end_color:new e.Uniform3f(t,i.u_end_color)})};let Ni;function Gi(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=t.useProgram(\"collisionBox\"),u=[];let _=0,d=0;for(let p=0;p<r.length;p++){const m=r[p],f=i.getTile(m),g=f.getBucket(o);if(!g)continue;let v=m.projMatrix;0===n[0]&&0===n[1]||(v=t.translatePosMatrix(m.projMatrix,f,n,a));const x=s?g.textCollisionBox:g.iconCollisionBox,y=g.collisionCircleArray;if(y.length>0){const i=e.create(),o=v;e.mul(i,g.placementInvProjMatrix,t.transform.glCoordMatrix),e.mul(i,i,g.placementViewportMatrix),u.push({circleArray:y,circleOffset:d,transform:o,invTransform:i}),_+=y.length/4,d=_;}x&&(t.terrain&&t.terrain.setupElevationDraw(f,h),h.draw(l,c.LINES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,Ei(v,t.transform,f),o.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,t.transform.zoom,null,x.collisionVertexBuffer,x.collisionVertexBufferExt));}if(!s||!u.length)return;const p=t.useProgram(\"collisionCircle\"),m=new e.StructArrayLayout2f1f2i16;m.resize(4*_),m._trim();let f=0;for(const e of u)for(let t=0;t<e.circleArray.length/4;t++){const i=4*t,o=e.circleArray[i+0],r=e.circleArray[i+1],n=e.circleArray[i+2],a=e.circleArray[i+3];m.emplace(f++,o,r,n,a,0),m.emplace(f++,o,r,n,a,1),m.emplace(f++,o,r,n,a,2),m.emplace(f++,o,r,n,a,3);}(!Ni||Ni.length<2*_)&&(Ni=function(t){const i=2*t,o=new e.StructArrayLayout3ui6;o.resize(i),o._trim();for(let e=0;e<i;e++){const t=6*e;o.uint16[t+0]=4*e+0,o.uint16[t+1]=4*e+1,o.uint16[t+2]=4*e+2,o.uint16[t+3]=4*e+2,o.uint16[t+4]=4*e+3,o.uint16[t+5]=4*e+0;}return o}(_));const g=l.createIndexBuffer(Ni,!0),v=l.createVertexBuffer(m,e.collisionCircleLayout.members,!0);for(const i of u){const r={u_matrix:i.transform,u_inv_matrix:i.invTransform,u_camera_to_center_distance:(x=t.transform).cameraToCenterDistance,u_viewport_size:[x.width,x.height]};p.draw(l,c.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,r,o.id,v,g,e.SegmentVector.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,t.transform.zoom,null,null,null);}var x;v.destroy(),g.destroy();}const ji=e.identity(new Float32Array(16));function Zi(t,i,o,r,n,a){const{horizontalAlign:s,verticalAlign:l}=e.getAnchorAlignment(t),c=-(s-.5)*i,h=-(l-.5)*o,u=e.evaluateVariableOffset(t,r);return new e.pointGeometry((c/n+u[0])*a,(h/n+u[1])*a)}function Vi(t,i,o,r,n,a,s,l,c,h,u,_){const d=t.text.placedSymbolArray,p=t.text.dynamicLayoutVertexArray,m=t.icon.dynamicLayoutVertexArray,f={},g=l.projMatrix,v=a.elevation,x=v?v.getAtTileOffsetFunc(l,_):e=>[0,0,0];p.clear();for(let l=0;l<d.length;l++){const _=d.get(l),m=t.allowVerticalPlacement&&!_.placedOrientation,v=_.hidden||!_.crossTileID||m?null:r[_.crossTileID];if(v){const r=new e.pointGeometry(_.tileAnchorX,_.tileAnchorY),l=x(r),d=$e(r,o?g:s,l[2]),m=He(a.cameraToCenterDistance,d.signedDistanceFromCamera);let y=n.evaluateSizeForFeature(t.textSizeData,h,_)*m/e.ONE_EM;o&&(y*=t.tilePixelRatio/c);const{width:b,height:w,anchor:T,textOffset:E,textScale:C}=v,M=Zi(T,b,w,E,C,y),S=o?$e(r.add(M),s,l[2]).point:d.point.add(i?M.rotate(-a.angle):M),I=t.allowVerticalPlacement&&_.placedOrientation===e.WritingMode.vertical?Math.PI/2:0;for(let t=0;t<_.numGlyphs;t++)e.addDynamicAttributes(p,S,I);u&&_.associatedIconIndex>=0&&(f[_.associatedIconIndex]={shiftedAnchor:S,angle:I});}else nt(_.numGlyphs,p);}if(u){m.clear();const i=t.icon.placedSymbolArray;for(let t=0;t<i.length;t++){const o=i.get(t);if(o.hidden)nt(o.numGlyphs,m);else {const i=f[t];if(i)for(let t=0;t<o.numGlyphs;t++)e.addDynamicAttributes(m,i.shiftedAnchor,i.angle);else nt(o.numGlyphs,m);}}t.icon.dynamicLayoutVertexBuffer.updateData(m);}t.text.dynamicLayoutVertexBuffer.updateData(p);}function Wi(e,t,i){return i.iconsInText&&t?\"symbolTextAndIcon\":e?\"symbolSDF\":\"symbolIcon\"}function qi(t,i,o,r,n,a,s,l,c,h,u,_){const d=t.context,p=d.gl,m=t.transform,f=m.projection.createTileTransform(m,m.worldSize),g=\"map\"===l,v=\"map\"===c,x=g&&\"point\"!==o.layout.get(\"symbol-placement\"),y=g&&!v&&!x,b=void 0!==o.layout.get(\"symbol-sort-key\").constantOr(1);let w=!1;const T=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),E=[e.mercatorXfromLng(m.center.lng),e.mercatorYfromLat(m.center.lat)],C=o.layout.get(\"text-variable-anchor\"),M=\"globe\"===m.projection.name,S=M?e.globeToMercatorTransition(m.zoom):0,I=[],z=[];t.terrain&&v&&z.push(\"PITCH_WITH_MAP_TERRAIN\"),M&&z.push(\"PROJECTION_GLOBE_VIEW\"),x&&z.push(\"PROJECTED_POS_ON_VIEWPORT\");for(const l of r){const r=i.getTile(l),c=r.getBucket(o);if(!c||c.projection!==m.projection.name)continue;const u=n?c.text:c.icon;if(!u||c.fullyClipped||!u.segments.get().length)continue;const _=u.programConfigurations.get(o.id),d=n||c.sdfIcons,T=n?c.textSizeData:c.iconSizeData,M=v||0!==m.pitch,D=t.useProgram(Wi(d,n,c),_,z),P=e.evaluateSizeForZoom(T,m.zoom),A=[l.canonical.x,l.canonical.y,1<<l.canonical.z];let L,R,k,O,B=[0,0],F=null;if(n){if(R=r.glyphAtlasTexture,k=p.LINEAR,L=r.glyphAtlasTexture.size,c.iconsInText){B=r.imageAtlasTexture.size,F=r.imageAtlasTexture;const e=\"composite\"===T.kind||\"camera\"===T.kind;O=M||t.options.rotating||t.options.zooming||e?p.LINEAR:p.NEAREST;}}else {const e=1!==o.layout.get(\"icon-size\").constantOr(0)||c.iconsNeedLinear;R=r.imageAtlasTexture,k=d||t.options.rotating||t.options.zooming||e||M?p.LINEAR:p.NEAREST,L=r.imageAtlasTexture.size;}const U=t.transform.calculatePixelsToTileUnitsMatrix(r),N=qe(l.projMatrix,r.tileID.canonical,v,g,t.transform,U),G=t.terrain&&v&&x?e.invert(new Float32Array(16),N):ji,j=Xe(l.projMatrix,r.tileID.canonical,v,g,t.transform,U),Z=C&&c.hasTextData(),V=\"none\"!==o.layout.get(\"icon-text-fit\")&&Z&&c.hasIconData();if(x){const e=m.elevation,i=e?e.getAtTileOffsetFunc(l,f):e=>[0,0,0];Ye(c,l.projMatrix,t,n,N,j,v,h,i,l);}const W=t.translatePosMatrix(l.projMatrix,r,a,s),q=x||n&&C||V?ji:N,X=t.translatePosMatrix(j,r,a,s,!0),$=d&&0!==o.paint.get(n?\"text-halo-width\":\"icon-halo-width\").constantOr(1);let H;const K=f.createInversionMatrix(l.toUnwrapped());H=d?c.iconsInText?Oi(T.kind,P,y,v,t,W,q,X,L,B,A,S,K,E):ki(T.kind,P,y,v,t,W,q,X,n,L,!0,A,S,K,E):Ri(T.kind,P,y,v,t,W,q,X,n,L,A,S,K,E);const Y={program:D,buffers:u,uniformValues:H,atlasTexture:R,atlasTextureIcon:F,atlasInterpolation:k,atlasInterpolationIcon:O,isSDF:d,hasHalo:$,tile:r,labelPlaneMatrixInv:G};if(b&&c.canOverlap){w=!0;const t=u.segments.get();for(const i of t)I.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:Y});}else I.push({segments:u.segments,sortKey:0,state:Y});}w&&I.sort(((e,t)=>e.sortKey-t.sortKey));for(const e of I){const i=e.state;if(t.terrain&&t.terrain.setupElevationDraw(i.tile,i.program,{useDepthForOcclusion:!M,labelPlaneMatrixInv:i.labelPlaneMatrixInv}),d.activeTexture.set(p.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,p.CLAMP_TO_EDGE),i.atlasTextureIcon&&(d.activeTexture.set(p.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,p.CLAMP_TO_EDGE)),i.isSDF){const r=i.uniformValues;i.hasHalo&&(r.u_is_halo=1,Xi(i.buffers,e.segments,o,t,i.program,T,u,_,r)),r.u_is_halo=0;}Xi(i.buffers,e.segments,o,t,i.program,T,u,_,i.uniformValues);}}function Xi(t,i,o,r,n,a,s,l,c){const h=r.context;n.draw(h,h.gl.TRIANGLES,a,s,l,e.CullFaceMode.disabled,c,o.id,t.layoutVertexBuffer,t.indexBuffer,i,o.paint,r.transform.zoom,t.programConfigurations.get(o.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function $i(t,i,o,r,n,a,s){const l=t.context.gl,c=o.paint.get(\"fill-pattern\"),h=c&&c.constantOr(1),u=o.getCrossfadeParameters();let _,d,p,m,f;s?(d=h&&!o.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",_=l.LINES):(d=h?\"fillPattern\":\"fill\",_=l.TRIANGLES);for(const g of r){const r=i.getTile(g);if(h&&!r.patternsLoaded())continue;const v=r.getBucket(o);if(!v)continue;t.prepareDrawTile(g);const x=v.programConfigurations.get(o.id),y=t.useProgram(d,x);h&&(t.context.activeTexture.set(l.TEXTURE0),r.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),x.updatePaintBuffers(u));const b=c.constantOr(null);if(b&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[b.to.toString()],i=e.patternPositions[b.from.toString()];t&&i&&x.setConstantPatternPositions(t,i);}const w=t.translatePosMatrix(g.projMatrix,r,o.paint.get(\"fill-translate\"),o.paint.get(\"fill-translate-anchor\"));if(s){m=v.indexBuffer2,f=v.segments2;const e=t.terrain&&t.terrain.renderingToTexture?t.terrain.drapeBufferSize:[l.drawingBufferWidth,l.drawingBufferHeight];p=\"fillOutlinePattern\"===d&&h?bi(w,t,u,r,e):yi(w,e);}else m=v.indexBuffer,f=v.segments,p=h?xi(w,t,u,r):vi(w);t.prepareDrawProgram(t.context,y,g.toUnwrapped()),y.draw(t.context,_,n,t.stencilModeForClipping(g),a,e.CullFaceMode.disabled,p,o.id,v.layoutVertexBuffer,m,f,o.paint,t.transform.zoom,x);}}function Hi(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=o.paint.get(\"fill-extrusion-pattern\"),u=h.constantOr(1),_=o.getCrossfadeParameters(),d=o.paint.get(\"fill-extrusion-opacity\");for(const p of r){const r=i.getTile(p),m=r.getBucket(o);if(!m)continue;const f=m.programConfigurations.get(o.id),g=t.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",f);if(t.terrain){const e=t.terrain;if(!m.enableTerrain)continue;if(e.setupElevationDraw(r,g,{useMeterToDem:!0}),Ki(l,i,p,m,o,e),!m.centroidVertexBuffer){const e=g.attributes.a_centroid_pos;void 0!==e&&c.vertexAttrib2f(e,0,0);}}u&&(t.context.activeTexture.set(c.TEXTURE0),r.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),f.updatePaintBuffers(_));const v=h.constantOr(null);if(v&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[v.to.toString()],i=e.patternPositions[v.from.toString()];t&&i&&f.setConstantPatternPositions(t,i);}const x=t.translatePosMatrix(p.projMatrix,r,o.paint.get(\"fill-extrusion-translate\"),o.paint.get(\"fill-extrusion-translate-anchor\")),y=o.paint.get(\"fill-extrusion-vertical-gradient\"),b=u?gi(x,t,y,d,p,_,r):fi(x,t,y,d);t.prepareDrawProgram(l,g,p.toUnwrapped()),g.draw(l,l.gl.TRIANGLES,n,a,s,e.CullFaceMode.backCCW,b,o.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,o.paint,t.transform.zoom,f,t.terrain?m.centroidVertexBuffer:null);}}function Ki(t,i,o,r,n,a){const s=[t=>{let i=t.canonical.x-1,o=t.wrap;return i<0&&(i=(1<<t.canonical.z)-1,o--),new e.OverscaledTileID(t.overscaledZ,o,t.canonical.z,i,t.canonical.y)},t=>{let i=t.canonical.x+1,o=t.wrap;return i===1<<t.canonical.z&&(i=0,o++),new e.OverscaledTileID(t.overscaledZ,o,t.canonical.z,i,t.canonical.y)},t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,(0===t.canonical.y?1<<t.canonical.z:t.canonical.y)-1),t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y===(1<<t.canonical.z)-1?0:t.canonical.y+1)],l=e=>{const t=i.getSource().maxzoom,o=e=>{const t=i.getTileByID(e);if(t&&t.hasData())return t.getBucket(n)};let r,a,s;return (e.overscaledZ===e.canonical.z||e.overscaledZ>=t)&&(r=o(e.key)),e.overscaledZ>=t&&(a=o(e.calculateScaledKey(e.overscaledZ+1))),e.overscaledZ>t&&(s=o(e.calculateScaledKey(e.overscaledZ-1))),r||a||s},c=[0,0,0],h=(t,i)=>(c[0]=Math.min(t.min.y,i.min.y),c[1]=Math.max(t.max.y,i.max.y),c[2]=e.EXTENT-i.min.x>t.max.x?i.min.x-e.EXTENT:t.max.x,c),u=(t,i)=>(c[0]=Math.min(t.min.x,i.min.x),c[1]=Math.max(t.max.x,i.max.x),c[2]=e.EXTENT-i.min.y>t.max.y?i.min.y-e.EXTENT:t.max.y,c),_=[(e,t)=>h(e,t),(e,t)=>h(t,e),(e,t)=>u(e,t),(e,t)=>u(t,e)],d=new e.pointGeometry(0,0);let p,m,f;const g=(t,i,r,n,s)=>{const l=[[n?r:t,n?t:r,0],[n?r:i,n?i:r,0]],c=s<0?e.EXTENT+s:s,h=[n?c:(t+i)/2,n?(t+i)/2:c,0];return 0===r&&s<0||0!==r&&s>0?a.getForTilePoints(f,[h],!0,m):l.push(h),a.getForTilePoints(o,l,!0,p),Math.max(l[0][2],l[1][2],h[2])/a.exaggeration()};for(let t=0;t<4;t++){const i=r.borders[t];if(0===i.length&&(r.borderDone[t]=!0),r.borderDone[t])continue;const n=f=s[t](o),c=l(n);if(!c||!c.enableTerrain)continue;if(m=a.findDEMTileFor(n),!m||!m.dem)continue;if(!p){const e=a.findDEMTileFor(o);if(!e||!e.dem)return;p=e;}const h=(t<2?1:5)-t,u=c.borders[h];let v=0;for(let o=0;o<i.length;o++){const n=r.featuresOnBorder[i[o]],a=n.borders[t];let s;for(;v<u.length&&(s=c.featuresOnBorder[u[v]],!(s.borders[h][1]>a[0]+3));)c.borderDone[h]||c.encodeCentroid(void 0,s,!1),v++;if(s&&v<u.length){const i=v;let o=0;for(;!(s.borders[h][0]>a[1]-3)&&(o++,++v!==u.length);)s=c.featuresOnBorder[u[v]];if(s=c.featuresOnBorder[u[i]],n.intersectsCount()>1||s.intersectsCount()>1||1!==o){1!==o&&(v=i),r.encodeCentroid(void 0,n,!1),c.borderDone[h]||c.encodeCentroid(void 0,s,!1);continue}const l=_[t](n,s),p=t%2?e.EXTENT-1:0;d.x=g(l[0],Math.min(e.EXTENT-1,l[1]),p,t<2,l[2]),d.y=0,r.encodeCentroid(d,n,!1),c.borderDone[h]||c.encodeCentroid(d,s,!1);}else r.encodeCentroid(void 0,n,!1);}r.borderDone[t]=r.needsCentroidUpdate=!0,c.borderDone[h]||(c.borderDone[h]=c.needsCentroidUpdate=!0);}(r.needsCentroidUpdate||!r.centroidVertexBuffer&&0!==r.centroidVertexArray.length)&&r.uploadCentroid(t);}const Yi=new e.Color(1,0,0,1),Ji=new e.Color(0,1,0,1),Qi=new e.Color(0,0,1,1),eo=new e.Color(1,0,1,1),to=new e.Color(0,1,1,1);function io(e,t,i,o){ro(e,0,t+i/2,e.transform.width,i,o);}function oo(e,t,i,o){ro(e,t-i/2,0,i,e.transform.height,o);}function ro(t,i,o,r,n,a){const s=t.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(i*e.exported.devicePixelRatio,o*e.exported.devicePixelRatio,r*e.exported.devicePixelRatio,n*e.exported.devicePixelRatio),s.clear({color:a}),l.disable(l.SCISSOR_TEST);}function no(t,i,o){const r=t.context,n=r.gl,a=o.projMatrix,s=t.useProgram(\"debug\"),l=i.getTileByID(o.key);t.terrain&&t.terrain.setupElevationDraw(l,s);const c=e.DepthMode.disabled,h=e.StencilMode.disabled,u=t.colorModeForRenderPass(),_=\"$debug\";r.activeTexture.set(n.TEXTURE0),t.emptyTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE),l._makeDebugTileBoundsBuffers(t.context,t.transform.projection);const d=l._tileDebugBuffer||t.debugBuffer,p=l._tileDebugIndexBuffer||t.debugIndexBuffer,m=l._tileDebugSegments||t.debugSegments;s.draw(r,n.LINE_STRIP,c,h,u,e.CullFaceMode.disabled,Ci(a,e.Color.red),_,d,p,m);const f=l.latestRawTileData,g=Math.floor((f&&f.byteLength||0)/1024),v=i.getTile(o).tileSize,x=512/Math.min(v,512)*(o.overscaledZ/t.transform.zoom)*.5;let y=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(y+=` => ${o.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,o=e.context.gl,r=e.debugOverlayCanvas.getContext(\"2d\");r.clearRect(0,0,i.width,i.height),r.shadowColor=\"white\",r.shadowBlur=2,r.lineWidth=1.5,r.strokeStyle=\"white\",r.textBaseline=\"top\",r.font=\"bold 36px Open Sans, sans-serif\",r.fillText(t,5,5),r.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(t,`${y} ${g}kb`),s.draw(r,n.TRIANGLES,c,h,e.ColorMode.alphaBlended,e.CullFaceMode.disabled,Ci(a,e.Color.transparent,x),_,t.debugBuffer,t.quadTriangleIndexBuffer,t.debugSegments);}const ao=e.createLayout([{name:\"a_pos_3f\",components:3,type:\"Float32\"}]),{members:so}=ao;function lo(e,t,i,o){e.emplaceBack(t,i,o);}class co{constructor(t){this.vertexArray=new e.StructArrayLayout3f12,this.indices=new e.StructArrayLayout3ui6,lo(this.vertexArray,-1,-1,1),lo(this.vertexArray,1,-1,1),lo(this.vertexArray,-1,1,1),lo(this.vertexArray,1,1,1),lo(this.vertexArray,-1,-1,-1),lo(this.vertexArray,1,-1,-1),lo(this.vertexArray,-1,1,-1),lo(this.vertexArray,1,1,-1),this.indices.emplaceBack(5,1,3),this.indices.emplaceBack(3,7,5),this.indices.emplaceBack(6,2,0),this.indices.emplaceBack(0,4,6),this.indices.emplaceBack(2,6,7),this.indices.emplaceBack(7,3,2),this.indices.emplaceBack(5,4,0),this.indices.emplaceBack(0,1,5),this.indices.emplaceBack(0,2,3),this.indices.emplaceBack(3,1,0),this.indices.emplaceBack(7,6,4),this.indices.emplaceBack(4,5,7),this.vertexBuffer=t.createVertexBuffer(this.vertexArray,so),this.indexBuffer=t.createIndexBuffer(this.indices),this.segment=e.SegmentVector.simpleSegment(0,0,36,12);}}function ho(t,i,o,r,n,a){const s=t.gl,l=i.paint.get(\"sky-atmosphere-color\"),c=i.paint.get(\"sky-atmosphere-halo-color\"),h=i.paint.get(\"sky-atmosphere-sun-intensity\"),u=((e,t,i,o,r)=>({u_matrix_3f:e,u_sun_direction:t,u_sun_intensity:i,u_color_tint_r:[o.r,o.g,o.b,o.a],u_color_tint_m:[r.r,r.g,r.b,r.a],u_luminance:5e-5}))(e.fromMat4([],r),n,h,l,c);s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+a,i.skyboxTexture,0),o.draw(t,s.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.frontCW,u,\"skyboxCapture\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}const uo={symbol:function(t,i,o,r,n){if(\"translucent\"!==t.renderPass)return;const a=e.StencilMode.disabled,s=t.colorModeForRenderPass();o.layout.get(\"text-variable-anchor\")&&function(t,i,o,r,n,a,s){const l=i.transform,c=\"map\"===n,h=\"map\"===a,u=l.projection.createTileTransform(l,l.worldSize);for(const n of t){const t=r.getTile(n),a=t.getBucket(o);if(!a||a.projection!==l.projection.name||!a.text||!a.text.segments.get().length)continue;const _=e.evaluateSizeForZoom(a.textSizeData,l.zoom),d=i.transform.calculatePixelsToTileUnitsMatrix(t),p=qe(n.projMatrix,t.tileID.canonical,h,c,i.transform,d),m=\"none\"!==o.layout.get(\"icon-text-fit\")&&a.hasIconData();if(_){const i=Math.pow(2,l.zoom-t.tileID.overscaledZ);Vi(a,c,h,s,e.symbolSize,l,p,n,i,_,m,u);}}}(r,t,o,i,o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),n),0!==o.paint.get(\"icon-opacity\").constantOr(1)&&qi(t,i,o,r,!1,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),o.layout.get(\"icon-rotation-alignment\"),o.layout.get(\"icon-pitch-alignment\"),o.layout.get(\"icon-keep-upright\"),a,s),0!==o.paint.get(\"text-opacity\").constantOr(1)&&qi(t,i,o,r,!0,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.layout.get(\"text-keep-upright\"),a,s),i.map.showCollisionBoxes&&(Gi(t,i,o,r,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),!0),Gi(t,i,o,r,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),!1));},circle:function(t,i,o,r){if(\"translucent\"!==t.renderPass)return;const n=o.paint.get(\"circle-opacity\"),a=o.paint.get(\"circle-stroke-width\"),s=o.paint.get(\"circle-stroke-opacity\"),l=void 0!==o.layout.get(\"circle-sort-key\").constantOr(1);if(0===n.constantOr(1)&&(0===a.constantOr(1)||0===s.constantOr(1)))return;const c=t.context,h=c.gl,u=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),_=e.StencilMode.disabled,d=t.colorModeForRenderPass(),p=[];for(let n=0;n<r.length;n++){const a=r[n],s=i.getTile(a),c=s.getBucket(o);if(!c)continue;const h=c.programConfigurations.get(o.id),u=Ti(o),_={programConfiguration:h,program:t.useProgram(\"circle\",h,u),layoutVertexBuffer:c.layoutVertexBuffer,indexBuffer:c.indexBuffer,uniformValues:wi(t,a,s,o),tile:s};if(l){const t=c.segments.get();for(const i of t)p.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:_});}else p.push({segments:c.segments,sortKey:0,state:_});}l&&p.sort(((e,t)=>e.sortKey-t.sortKey));const m={useDepthForOcclusion:!(\"globe\"===t.transform.projection.name)};for(const i of p){const{programConfiguration:r,program:n,layoutVertexBuffer:a,indexBuffer:s,uniformValues:l,tile:p}=i.state,f=i.segments;t.terrain&&t.terrain.setupElevationDraw(p,n,m),t.prepareDrawProgram(c,n,p.tileID.toUnwrapped()),n.draw(c,h.TRIANGLES,u,_,d,e.CullFaceMode.disabled,l,o.id,a,s,f,o.paint,t.transform.zoom,r);}},heatmap:function(t,i,o,r){if(0!==o.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===t.renderPass){const n=t.context,a=n.gl,s=e.StencilMode.disabled,l=new e.ColorMode([a.ONE,a.ONE],e.Color.transparent,[!0,!0,!0,!0]);!function(e,t,i){const o=e.gl;e.activeTexture.set(o.TEXTURE1),e.viewport.set([0,0,t.width/4,t.height/4]);let r=i.heatmapFbo;if(r)o.bindTexture(o.TEXTURE_2D,r.colorAttachment.get()),e.bindFramebuffer.set(r.framebuffer);else {const n=o.createTexture();o.bindTexture(o.TEXTURE_2D,n),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),r=i.heatmapFbo=e.createFramebuffer(t.width/4,t.height/4,!1),function(e,t,i,o){const r=e.gl;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t.width/4,t.height/4,0,r.RGBA,e.extRenderToTextureHalfFloat?e.extTextureHalfFloat.HALF_FLOAT_OES:r.UNSIGNED_BYTE,null),o.colorAttachment.set(i);}(e,t,n,r);}}(n,t,o),n.clear({color:e.Color.transparent});for(let c=0;c<r.length;c++){const h=r[c];if(i.hasRenderableParent(h))continue;const u=i.getTile(h),_=u.getBucket(o);if(!_)continue;const d=_.programConfigurations.get(o.id),p=t.useProgram(\"heatmap\",d),{zoom:m}=t.transform;t.terrain&&t.terrain.setupElevationDraw(u,p),t.prepareDrawProgram(n,p,h.toUnwrapped()),p.draw(n,a.TRIANGLES,e.DepthMode.disabled,s,l,e.CullFaceMode.disabled,Mi(h.projMatrix,u,m,o.paint.get(\"heatmap-intensity\")),o.id,_.layoutVertexBuffer,_.indexBuffer,_.segments,o.paint,t.transform.zoom,d);}n.viewport.set([0,0,t.width,t.height]);}else \"translucent\"===t.renderPass&&(t.context.setColorMode(t.colorModeForRenderPass()),function(t,i){const o=t.context,r=o.gl,n=i.heatmapFbo;if(!n)return;o.activeTexture.set(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,n.colorAttachment.get()),o.activeTexture.set(r.TEXTURE1);let a=i.colorRampTexture;a||(a=i.colorRampTexture=new e.Texture(o,i.colorRamp,r.RGBA)),a.bind(r.LINEAR,r.CLAMP_TO_EDGE),t.useProgram(\"heatmapTexture\").draw(o,r.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,((e,t,i,o)=>({u_image:0,u_color_ramp:1,u_opacity:t.paint.get(\"heatmap-opacity\")}))(0,i),i.id,t.viewportBuffer,t.quadTriangleIndexBuffer,t.viewportSegments,i.paint,t.transform.zoom);}(t,o));},line:function(t,i,o,r){if(\"translucent\"!==t.renderPass)return;const n=o.paint.get(\"line-opacity\"),a=o.paint.get(\"line-width\");if(0===n.constantOr(1)||0===a.constantOr(1))return;const s=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),l=t.colorModeForRenderPass(),c=o.paint.get(\"line-dasharray\"),h=c.constantOr(1),u=o.layout.get(\"line-cap\"),_=o.paint.get(\"line-pattern\"),d=_.constantOr(1),p=o.paint.get(\"line-gradient\"),m=o.getCrossfadeParameters(),f=d?\"linePattern\":\"line\",g=t.context,v=g.gl,x=(e=>{const t=[];Pi(e)&&t.push(\"RENDER_LINE_DASH\"),e.paint.get(\"line-gradient\")&&t.push(\"RENDER_LINE_GRADIENT\");const i=e.paint.get(\"line-pattern\").constantOr(1),o=1!==e.paint.get(\"line-opacity\").constantOr(1);return !i&&o&&t.push(\"RENDER_LINE_ALPHA_DISCARD\"),t})(o);let y=x.includes(\"RENDER_LINE_ALPHA_DISCARD\");t.terrain&&t.terrain.clipOrMaskOverlapStencilType()&&(y=!1);for(const n of r){const r=i.getTile(n);if(d&&!r.patternsLoaded())continue;const a=r.getBucket(o);if(!a)continue;t.prepareDrawTile(n);const b=a.programConfigurations.get(o.id),w=t.useProgram(f,b,x),T=_.constantOr(null);if(T&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[T.to.toString()],i=e.patternPositions[T.from.toString()];t&&i&&b.setConstantPatternPositions(t,i);}const E=c.constantOr(null),C=u.constantOr(null);if(!d&&E&&C&&r.lineAtlas){const e=r.lineAtlas,t=e.getDash(E.to,C),i=e.getDash(E.from,C);t&&i&&b.setConstantPatternPositions(t,i);}const M=t.terrain?n.projMatrix:null,S=d?Ii(t,r,o,m,M):Si(t,r,o,m,M,a.lineClipsArray.length);if(p){const r=a.gradients[o.id];let s=r.texture;if(o.gradientVersion!==r.version){let l=256;if(o.stepInterpolant){const o=i.getSource().maxzoom,r=n.canonical.z===o?Math.ceil(1<<t.transform.maxZoom-n.canonical.z):1;l=e.clamp(e.nextPowerOfTwo(a.maxLineLength/e.EXTENT*1024*r),256,g.maxTextureSize);}r.gradient=e.renderColorRamp({expression:o.gradientExpression(),evaluationKey:\"lineProgress\",resolution:l,image:r.gradient||void 0,clips:a.lineClipsArray}),r.texture?r.texture.update(r.gradient):r.texture=new e.Texture(g,r.gradient,v.RGBA),r.version=o.gradientVersion,s=r.texture;}g.activeTexture.set(v.TEXTURE1),s.bind(o.stepInterpolant?v.NEAREST:v.LINEAR,v.CLAMP_TO_EDGE);}h&&(g.activeTexture.set(v.TEXTURE0),r.lineAtlasTexture.bind(v.LINEAR,v.REPEAT),b.updatePaintBuffers(m)),d&&(g.activeTexture.set(v.TEXTURE0),r.imageAtlasTexture.bind(v.LINEAR,v.CLAMP_TO_EDGE),b.updatePaintBuffers(m)),t.prepareDrawProgram(g,w,n.toUnwrapped());const I=i=>{w.draw(g,v.TRIANGLES,s,i,l,e.CullFaceMode.disabled,S,o.id,a.layoutVertexBuffer,a.indexBuffer,a.segments,o.paint,t.transform.zoom,b,a.layoutVertexBuffer2);};if(y){const i=t.stencilModeForClipping(n).ref;0===i&&t.terrain&&g.clear({stencil:0});const o={func:v.EQUAL,mask:255};S.u_alpha_discard_threshold=.8,I(new e.StencilMode(o,i,255,v.KEEP,v.KEEP,v.INVERT)),S.u_alpha_discard_threshold=0,I(new e.StencilMode(o,i,255,v.KEEP,v.KEEP,v.KEEP));}else I(t.stencilModeForClipping(n));}y&&(t.resetStencilClippingMasks(),t.terrain&&g.clear({stencil:0}));},fill:function(t,i,o,r){const n=o.paint.get(\"fill-color\"),a=o.paint.get(\"fill-opacity\");if(0===a.constantOr(1))return;const s=t.colorModeForRenderPass(),l=o.paint.get(\"fill-pattern\"),c=t.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===n.constantOr(e.Color.transparent).a&&1===a.constantOr(0)?\"opaque\":\"translucent\";if(t.renderPass===c){const n=t.depthModeForSublayer(1,\"opaque\"===t.renderPass?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly);$i(t,i,o,r,n,s,!1);}if(\"translucent\"===t.renderPass&&o.paint.get(\"fill-antialias\")){const n=t.depthModeForSublayer(o.getPaintProperty(\"fill-outline-color\")?2:0,e.DepthMode.ReadOnly);$i(t,i,o,r,n,s,!0);}},\"fill-extrusion\":function(t,i,o,r){const n=o.paint.get(\"fill-extrusion-opacity\");if(0!==n&&\"translucent\"===t.renderPass){const a=new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);if(1!==n||o.paint.get(\"fill-extrusion-pattern\").constantOr(1))Hi(t,i,o,r,a,e.StencilMode.disabled,e.ColorMode.disabled),Hi(t,i,o,r,a,t.stencilModeFor3D(),t.colorModeForRenderPass()),t.resetStencilClippingMasks();else {const n=t.colorModeForRenderPass();Hi(t,i,o,r,a,e.StencilMode.disabled,n);}}},hillshade:function(t,i,o,r){if(\"offscreen\"!==t.renderPass&&\"translucent\"!==t.renderPass)return;const n=t.context,a=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),s=t.colorModeForRenderPass(),l=t.terrain&&t.terrain.renderingToTexture,[c,h]=\"translucent\"!==t.renderPass||l?[{},r]:t.stencilConfigForOverlap(r);for(const r of h){const n=i.getTile(r);if(n.needsHillshadePrepare&&\"offscreen\"===t.renderPass)Qt(t,n,o,a,e.StencilMode.disabled,s);else if(\"translucent\"===t.renderPass){const e=l&&t.terrain?t.terrain.stencilModeForRTTOverlap(r):c[r.overscaledZ];Yt(t,r,n,o,a,e,s);}}n.viewport.set([0,0,t.width,t.height]),t.resetStencilClippingMasks();},raster:function(t,i,o,r,n,a){if(\"translucent\"!==t.renderPass)return;if(0===o.paint.get(\"raster-opacity\"))return;if(!r.length)return;const s=t.context,l=s.gl,c=i.getSource(),h=t.useProgram(\"raster\"),u=t.colorModeForRenderPass(),_=t.terrain&&t.terrain.renderingToTexture,[d,p]=c instanceof be||_?[{},r]:t.stencilConfigForOverlap(r),m=p[p.length-1].overscaledZ,f=!t.options.moving;for(const r of p){const n=_?e.DepthMode.disabled:t.depthModeForSublayer(r.overscaledZ-m,1===o.paint.get(\"raster-opacity\")?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly,l.LESS),p=r.toUnwrapped(),g=i.getTile(r);if(_&&(!g||!g.hasData()))continue;const v=_?r.projMatrix:t.transform.calculateProjMatrix(p,f),x=t.terrain&&_?t.terrain.stencilModeForRTTOverlap(r):d[r.overscaledZ],y=a?0:o.paint.get(\"raster-fade-duration\");g.registerFadeDuration(y);const b=i.findLoadedParent(r,0),w=li(g,b,i,t.transform,y);let T,E;t.terrain&&t.terrain.prepareDrawTile(r);const C=\"nearest\"===o.paint.get(\"raster-resampling\")?l.NEAREST:l.LINEAR;s.activeTexture.set(l.TEXTURE0),g.texture.bind(C,l.CLAMP_TO_EDGE),s.activeTexture.set(l.TEXTURE1),b?(b.texture.bind(C,l.CLAMP_TO_EDGE),T=Math.pow(2,b.tileID.overscaledZ-g.tileID.overscaledZ),E=[g.tileID.canonical.x*T%1,g.tileID.canonical.y*T%1]):g.texture.bind(C,l.CLAMP_TO_EDGE);const M=Ai(v,E||[0,0],T||1,w,o,c instanceof be?c.perspectiveTransform:[0,0]);if(t.prepareDrawProgram(s,h,p),c instanceof be)h.draw(s,l.TRIANGLES,n,e.StencilMode.disabled,u,e.CullFaceMode.disabled,M,o.id,c.boundsBuffer,t.quadTriangleIndexBuffer,c.boundsSegments);else {const{tileBoundsBuffer:i,tileBoundsIndexBuffer:r,tileBoundsSegments:a}=t.getTileBoundsBuffers(g);h.draw(s,l.TRIANGLES,n,x,u,e.CullFaceMode.disabled,M,o.id,i,r,a);}}t.resetStencilClippingMasks();},background:function(t,i,o,r){const n=o.paint.get(\"background-color\"),a=o.paint.get(\"background-opacity\");if(0===a)return;const s=t.context,l=s.gl,c=t.transform,h=c.tileSize,u=o.paint.get(\"background-pattern\");if(t.isPatternMissing(u))return;const _=!u&&1===n.a&&1===a&&t.opaquePassEnabledForLayer()?\"opaque\":\"translucent\";if(t.renderPass!==_)return;const d=e.StencilMode.disabled,p=t.depthModeForSublayer(0,\"opaque\"===_?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly),m=t.colorModeForRenderPass(),f=t.useProgram(u?\"backgroundPattern\":\"background\");let g,v=r;v||(g=t.getBackgroundTiles(),v=Object.values(g).map((e=>e.tileID))),u&&(s.activeTexture.set(l.TEXTURE0),t.imageManager.bind(t.context));const x=o.getCrossfadeParameters();for(const _ of v){const v=_.toUnwrapped(),y=r?_.projMatrix:t.transform.calculateProjMatrix(v);t.prepareDrawTile(_);const b=i?i.getTile(_):g?g[_.key]:new e.Tile(_,h,c.zoom,t),w=u?Fi(y,a,t,u,{tileID:_,tileSize:h},x):Bi(y,a,n);t.prepareDrawProgram(s,f,v);const{tileBoundsBuffer:T,tileBoundsIndexBuffer:E,tileBoundsSegments:C}=t.getTileBoundsBuffers(b);f.draw(s,l.TRIANGLES,p,d,m,e.CullFaceMode.disabled,w,o.id,T,E,C);}},sky:function(t,i,o){const r=t.transform,n=\"mercator\"===r.projection.name||\"globe\"===r.projection.name?1:e.smoothstep(7,8,r.zoom),a=o.paint.get(\"sky-opacity\")*n;if(0===a)return;const s=t.context,l=o.paint.get(\"sky-type\"),c=new e.DepthMode(s.gl.LEQUAL,e.DepthMode.ReadOnly,[0,1]),h=t.frameCounter/1e3%1;\"atmosphere\"===l?\"offscreen\"===t.renderPass?o.needsSkyboxCapture(t)&&(function(t,i,o,r){const n=t.context,a=n.gl;let s=i.skyboxFbo;if(!s){s=i.skyboxFbo=n.createFramebuffer(32,32,!1),i.skyboxGeometry=new co(n),i.skyboxTexture=n.gl.createTexture(),a.bindTexture(a.TEXTURE_CUBE_MAP,i.skyboxTexture),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MAG_FILTER,a.LINEAR);for(let e=0;e<6;++e)a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,a.RGBA,32,32,0,a.RGBA,a.UNSIGNED_BYTE,null);}n.bindFramebuffer.set(s.framebuffer),n.viewport.set([0,0,32,32]);const l=i.getCenter(t,!0),c=t.useProgram(\"skyboxCapture\"),h=new Float64Array(16);e.identity(h),e.rotateY(h,h,.5*-Math.PI),ho(n,i,c,h,l,0),e.identity(h),e.rotateY(h,h,.5*Math.PI),ho(n,i,c,h,l,1),e.identity(h),e.rotateX(h,h,.5*-Math.PI),ho(n,i,c,h,l,2),e.identity(h),e.rotateX(h,h,.5*Math.PI),ho(n,i,c,h,l,3),e.identity(h),ho(n,i,c,h,l,4),e.identity(h),e.rotateY(h,h,Math.PI),ho(n,i,c,h,l,5),n.viewport.set([0,0,t.width,t.height]);}(t,o),o.markSkyboxValid(t)):\"sky\"===t.renderPass&&function(t,i,o,r,n){const a=t.context,s=a.gl,l=t.transform,c=t.useProgram(\"skybox\");a.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_CUBE_MAP,i.skyboxTexture);const h=((e,t,i,o,r)=>({u_matrix:e,u_sun_direction:t,u_cubemap:0,u_opacity:o,u_temporal_offset:r}))(l.skyboxMatrix,i.getCenter(t,!1),0,r,n);t.prepareDrawProgram(a,c),c.draw(a,s.TRIANGLES,o,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,h,\"skybox\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}(t,o,c,a,h):\"gradient\"===l&&\"sky\"===t.renderPass&&function(t,i,o,r,n){const a=t.context,s=a.gl,l=t.transform,c=t.useProgram(\"skyboxGradient\");i.skyboxGeometry||(i.skyboxGeometry=new co(a)),a.activeTexture.set(s.TEXTURE0);let h=i.colorRampTexture;h||(h=i.colorRampTexture=new e.Texture(a,i.colorRamp,s.RGBA)),h.bind(s.LINEAR,s.CLAMP_TO_EDGE);const u=((t,i,o,r,n)=>({u_matrix:t,u_color_ramp:0,u_center_direction:i,u_radius:e.degToRad(o),u_opacity:r,u_temporal_offset:n}))(l.skyboxMatrix,i.getCenter(t,!1),i.paint.get(\"sky-gradient-radius\"),r,n);t.prepareDrawProgram(a,c),c.draw(a,s.TRIANGLES,o,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,u,\"skyboxGradient\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}(t,o,c,a,h);},debug:function(e,t,i){for(let o=0;o<i.length;o++)no(e,t,i[o]);},custom:function(t,i,o){const r=t.context,n=o.implementation;if(t.transform.projection.unsupportedLayers&&t.transform.projection.unsupportedLayers.includes(\"custom\"))e.warnOnce(\"Custom layers are not yet supported with non-mercator projections. Use mercator to enable custom layers.\");else if(\"offscreen\"===t.renderPass){const e=n.prerender;e&&(t.setCustomLayerDefaults(),r.setColorMode(t.colorModeForRenderPass()),e.call(n,r.gl,t.transform.customLayerMatrix()),r.setDirty(),t.setBaseState());}else if(\"translucent\"===t.renderPass){t.setCustomLayerDefaults(),r.setColorMode(t.colorModeForRenderPass()),r.setStencilMode(e.StencilMode.disabled);const i=\"3d\"===n.renderingMode?new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,e.DepthMode.ReadOnly);r.setDepthMode(i),n.render(r.gl,t.transform.customLayerMatrix()),r.setDirty(),t.setBaseState(),r.bindFramebuffer.set(null);}}};class _o{constructor(t,i){this.context=new de(t),this.transform=i,this._tileTextures={},this.frameCopies=[],this.loadTimeStamps=[],this.setup(),this.numSublayers=e.SourceCache.maxUnderzooming+e.SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Rt,this.gpuTimers={},this.frameCounter=0,this._backgroundTiles={};}updateTerrain(e,t){const i=!!e&&!!e.terrain&&this.transform.projection.supportsTerrain;if(!(i||this._terrain&&this._terrain.enabled))return;this._terrain||(this._terrain=new _i(this,e));const o=this._terrain;this.transform.elevation=i?o:null,o.update(e,this.transform,t);}_updateFog(e){const t=e.fog;if(!t||t.getOpacity(this.transform.pitch)<1||t.properties.get(\"horizon-blend\")<.03)return void(this.transform.fogCullDistSq=null);const[i,o]=t.getFovAdjustedRange(this.transform._fov);if(i>o)return void(this.transform.fogCullDistSq=null);const r=i+.78*(o-i);this.transform.fogCullDistSq=r*r;}get terrain(){return this.transform._terrainEnabled()&&this._terrain&&this._terrain.enabled?this._terrain:null}resize(t,i){if(this.width=t*e.exported.devicePixelRatio,this.height=i*e.exported.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style.order)this.style._layers[e].resize();}setup(){const t=this.context,i=new e.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(e.EXTENT,0),i.emplaceBack(0,e.EXTENT),i.emplaceBack(e.EXTENT,e.EXTENT),this.tileExtentBuffer=t.createVertexBuffer(i,e.posAttributes.members),this.tileExtentSegments=e.SegmentVector.simpleSegment(0,0,4,2);const o=new e.StructArrayLayout2i4;o.emplaceBack(0,0),o.emplaceBack(e.EXTENT,0),o.emplaceBack(0,e.EXTENT),o.emplaceBack(e.EXTENT,e.EXTENT),this.debugBuffer=t.createVertexBuffer(o,e.posAttributes.members),this.debugSegments=e.SegmentVector.simpleSegment(0,0,4,5);const r=new e.StructArrayLayout2i4;r.emplaceBack(-1,-1),r.emplaceBack(1,-1),r.emplaceBack(-1,1),r.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(r,e.posAttributes.members),this.viewportSegments=e.SegmentVector.simpleSegment(0,0,4,2);const n=new e.StructArrayLayout4i8;n.emplaceBack(0,0,0,0),n.emplaceBack(e.EXTENT,0,e.EXTENT,0),n.emplaceBack(0,e.EXTENT,0,e.EXTENT),n.emplaceBack(e.EXTENT,e.EXTENT,e.EXTENT,e.EXTENT),this.mercatorBoundsBuffer=t.createVertexBuffer(n,e.boundsAttributes.members),this.mercatorBoundsSegments=e.SegmentVector.simpleSegment(0,0,4,2);const a=new e.StructArrayLayout3ui6;a.emplaceBack(0,1,2),a.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(a);const s=new e.StructArrayLayout1ui2;for(const e of [0,1,3,2,0])s.emplaceBack(e);this.debugIndexBuffer=t.createIndexBuffer(s),this.emptyTexture=new e.Texture(t,{width:1,height:1,data:new Uint8Array([0,0,0,0])},t.gl.RGBA),this.identityMat=e.create();const l=this.context.gl;this.stencilClearMode=new e.StencilMode({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO),this.loadTimeStamps.push(e.window.performance.now());}getMercatorTileBoundsBuffers(){return {tileBoundsBuffer:this.mercatorBoundsBuffer,tileBoundsIndexBuffer:this.quadTriangleIndexBuffer,tileBoundsSegments:this.mercatorBoundsSegments}}getTileBoundsBuffers(e){return e._makeTileBoundsBuffers(this.context,this.transform.projection),e._tileBoundsBuffer?{tileBoundsBuffer:e._tileBoundsBuffer,tileBoundsIndexBuffer:e._tileBoundsIndexBuffer,tileBoundsSegments:e._tileBoundsSegments}:this.getMercatorTileBoundsBuffers()}clearStencil(){const t=this.context,i=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0,this._tileClippingMaskIDs={},this.useProgram(\"clippingMask\").draw(t,i.TRIANGLES,e.DepthMode.disabled,this.stencilClearMode,e.ColorMode.disabled,e.CullFaceMode.disabled,si(this.identityMat),\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}resetStencilClippingMasks(){this.terrain||(this.currentStencilSource=void 0,this._tileClippingMaskIDs={});}_renderTileClippingMasks(t,i,o){if(!i||this.currentStencilSource===i.id||!t.isTileClipped()||!o||0===o.length)return;if(this._tileClippingMaskIDs&&!this.terrain){let e=!1;for(const t of o)if(void 0===this._tileClippingMaskIDs[t.key]){e=!0;break}if(!e)return}this.currentStencilSource=i.id;const r=this.context,n=r.gl;this.nextStencilID+o.length>256&&this.clearStencil(),r.setColorMode(e.ColorMode.disabled),r.setDepthMode(e.DepthMode.disabled);const a=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(const t of o){const o=i.getTile(t),s=this._tileClippingMaskIDs[t.key]=this.nextStencilID++,{tileBoundsBuffer:l,tileBoundsIndexBuffer:c,tileBoundsSegments:h}=this.getTileBoundsBuffers(o);a.draw(r,n.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:n.ALWAYS,mask:0},s,255,n.KEEP,n.KEEP,n.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,si(t.projMatrix),\"$clipping\",l,c,h);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,i=this.context.gl;return new e.StencilMode({func:i.NOTEQUAL,mask:255},t,255,i.KEEP,i.KEEP,i.REPLACE)}stencilModeForClipping(t){if(this.terrain)return this.terrain.stencilModeForRTTOverlap(t);const i=this.context.gl;return new e.StencilMode({func:i.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,i.KEEP,i.KEEP,i.REPLACE)}stencilConfigForOverlap(t){const i=this.context.gl,o=t.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),r=o[o.length-1].overscaledZ,n=o[0].overscaledZ-r+1;if(n>1){this.currentStencilSource=void 0,this.nextStencilID+n>256&&this.clearStencil();const t={};for(let o=0;o<n;o++)t[o+r]=new e.StencilMode({func:i.GEQUAL,mask:255},o+this.nextStencilID,255,i.KEEP,i.KEEP,i.REPLACE);return this.nextStencilID+=n,[t,o]}return [{[r]:e.StencilMode.disabled},o]}colorModeForRenderPass(){const t=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new e.ColorMode([t.CONSTANT_COLOR,t.ONE],new e.Color(i,i,i,0),[!0,!0,!0,!0])}return \"opaque\"===this.renderPass?e.ColorMode.unblended:e.ColorMode.alphaBlended}depthModeForSublayer(t,i,o){if(!this.opaquePassEnabledForLayer())return e.DepthMode.disabled;const r=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new e.DepthMode(o||this.context.gl.LEQUAL,i,[r,r])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(t,i){this.style=t,this.options=i,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.symbolFadeChange=t.placement.symbolFadeChange(e.exported.now()),this.imageManager.beginFrame();const o=this.style.order,r=this.style._sourceCaches;for(const e in r){const t=r[e];t.used&&t.prepare(this.context);}const n={},a={},s={};for(const e in r){const t=r[e];n[e]=t.getVisibleCoordinates(),a[e]=n[e].slice().reverse(),s[e]=t.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let e=0;e<o.length;e++)if(this.style._layers[o[e]].is3D()){this.opaquePassCutoff=e;break}if(this.terrain&&(this.terrain.updateTileBinding(s),this.opaquePassCutoff=0),\"globe\"!==this.transform.projection.name||this.globeSharedBuffers||(this.globeSharedBuffers=new e.GlobeSharedBuffers(this.context)),!e.isMapAuthenticated(this.context.gl))return;this.renderPass=\"offscreen\";for(const e of o){const i=this.style._layers[e],o=t._getLayerSourceCache(i);if(!i.hasOffscreenPass()||i.isHidden(this.transform.zoom))continue;const r=o?a[o.id]:void 0;(\"custom\"===i.type||i.isSky()||r&&r.length)&&this.renderLayer(this,o,i,r);}this.depthRangeFor3D=[0,1-(t.order.length+2)*this.numSublayers*this.depthEpsilon],this.terrain&&(this.style.hasSymbolLayers()||this.style.hasCircleLayers())&&this.terrain.drawDepth(),this.context.bindFramebuffer.set(null),this.context.viewport.set([0,0,this.width,this.height]);let l=e.Color.transparent;if(this.style.fog&&this.style.fog.getOpacity(this.transform.pitch)&&(l=this.style.fog.properties.get(\"color\")),this.context.clear({color:i.showOverdrawInspector?e.Color.black:l,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.renderPass=\"opaque\",!this.terrain)for(this.currentLayer=o.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky())continue;const r=i?a[i.id]:void 0;this._renderTileClippingMasks(e,i,r),this.renderLayer(this,i,e,r);}if(this.renderPass=\"sky\",(e.globeToMercatorTransition(this.transform.zoom)>0||\"globe\"!==this.transform.projection.name)&&this.transform.isHorizonVisible())for(this.currentLayer=0;this.currentLayer<o.length;this.currentLayer++){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);e.isSky()&&this.renderLayer(this,i,e,i?a[i.id]:void 0);}for(\"globe\"===this.transform.projection.name&&function(t){const i=t.context,o=i.gl,r=t.transform,n=new e.DepthMode(o.LEQUAL,e.DepthMode.ReadOnly,[0,1]),a=t.useProgram(\"globeAtmosphere\"),s=r._camera.getWorldToCamera(r.worldSize,1),l=r._camera.getCameraToClipPerspective(r._fov,r.width/r.height,r._nearZ,r._farZ),c=e.mul([],s,e.calculateGlobeMatrix(r,r.worldSize)),h=e.mul([],r.labelPlaneMatrix,l),u=e.transformMat4([],[0,0,0],c),_=e.add([],u,[r.worldSize/Math.PI/2,0,0]),d=e.transformMat4([],u,h),p=e.transformMat4([],_,h),m=e.length(e.sub([],p,d)),f=1-e.globeToMercatorTransition(r.zoom),g={u_center:d,u_radius:m,u_screen_size:[r.width,r.height],u_pixel_ratio:e.exported.devicePixelRatio,u_opacity:f,u_fadeout_range:2,u_start_color:[1,1,1],u_end_color:[.0118,.7451,.9882]};t.prepareDrawProgram(i,a);const v=t.globeSharedBuffers;v&&a.draw(i,o.TRIANGLES,n,e.StencilMode.disabled,e.ColorMode.alphaBlended,e.CullFaceMode.backCW,g,\"skybox\",v.atmosphereVertexBuffer,v.atmosphereIndexBuffer,v.atmosphereSegments);}(this),this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer<o.length;){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky()){++this.currentLayer;continue}if(this.terrain&&this.style.isLayerDraped(e)){if(e.isHidden(this.transform.zoom)){++this.currentLayer;continue}this.currentLayer=this.terrain.renderBatch(this.currentLayer);continue}const r=i?(\"symbol\"===e.type?s:a)[i.id]:void 0;this._renderTileClippingMasks(e,i,i?n[i.id]:void 0),this.renderLayer(this,i,e,r),++this.currentLayer;}if(this.terrain&&this.terrain.postRender(),this.options.showTileBoundaries||this.options.showQueryGeometry){let i=null;e.values(this.style._layers).forEach((e=>{const o=t._getLayerSourceCache(e);o&&!e.isHidden(this.transform.zoom)&&(!i||i.getSource().maxzoom<o.getSource().maxzoom)&&(i=o);})),i&&this.options.showTileBoundaries&&uo.debug(this,i,i.getVisibleCoordinates());}this.options.showPadding&&function(e){const t=e.transform.padding;io(e,e.transform.height-(t.top||0),3,Yi),io(e,t.bottom||0,3,Ji),oo(e,t.left||0,3,Qi),oo(e,e.transform.width-(t.right||0),3,eo);const i=e.transform.centerPoint;!function(e,t,i,o){ro(e,t-1,i-10,2,20,o),ro(e,t-10,i-1,20,2,o);}(e,i.x,e.transform.height-i.y,to);}(this),this.context.setDefault(),this.frameCounter=(this.frameCounter+1)%Number.MAX_SAFE_INTEGER,this.tileLoaded&&this.options.speedIndexTiming&&(this.loadTimeStamps.push(e.window.performance.now()),this.saveCanvasCopy());}renderLayer(e,t,i,o){i.isHidden(this.transform.zoom)||(\"background\"===i.type||\"sky\"===i.type||\"custom\"===i.type||o&&o.length)&&(this.id=i.id,this.gpuTimingStart(i),e.transform.projection.unsupportedLayers&&e.transform.projection.unsupportedLayers.includes(i.type)||uo[i.type](e,t,i,o,this.style.placement.variableOffsets,this.options.isInitialLoad),this.gpuTimingEnd());}gpuTimingStart(e){if(!this.options.gpuTiming)return;const t=this.context.extTimerQuery;let i=this.gpuTimers[e.id];i||(i=this.gpuTimers[e.id]={calls:0,cpuTime:0,query:t.createQueryEXT()}),i.calls++,t.beginQueryEXT(t.TIME_ELAPSED_EXT,i.query);}gpuTimingEnd(){if(!this.options.gpuTiming)return;const e=this.context.extTimerQuery;e.endQueryEXT(e.TIME_ELAPSED_EXT);}collectGpuTimers(){const e=this.gpuTimers;return this.gpuTimers={},e}queryGpuTimers(e){const t={};for(const i in e){const o=e[i],r=this.context.extTimerQuery,n=r.getQueryObjectEXT(o.query,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(o.query),t[i]=n;}return t}translatePosMatrix(t,i,o,r,n){if(!o[0]&&!o[1])return t;const a=n?\"map\"===r?this.transform.angle:0:\"viewport\"===r?-this.transform.angle:0;if(a){const e=Math.sin(a),t=Math.cos(a);o=[o[0]*t-o[1]*e,o[0]*e+o[1]*t];}const s=[n?o[0]:M(i,o[0],this.transform.zoom),n?o[1]:M(i,o[1],this.transform.zoom),0],l=new Float32Array(16);return e.translate(l,t,s),l}saveTileTexture(e){const t=this._tileTextures[e.size[0]];t?t.push(e):this._tileTextures[e.size[0]]=[e];}getTileTexture(e){const t=this._tileTextures[e];return t&&t.length>0?t.pop():null}isPatternMissing(e){if(!e)return !1;if(!e.from||!e.to)return !0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return !t||!i}currentGlobalDefines(){const e=this.terrain&&this.terrain.renderingToTexture,t=this.style&&this.style.fog,i=[];return this.terrain&&!this.terrain.renderingToTexture&&i.push(\"TERRAIN\"),t&&!e&&0!==t.getOpacity(this.transform.pitch)&&i.push(\"FOG\"),e&&i.push(\"RENDER_TO_TEXTURE\"),this._showOverdrawInspector&&i.push(\"OVERDRAW_INSPECTOR\"),i}useProgram(e,t,i){this.cache=this.cache||{};const o=i||[],r=this.currentGlobalDefines().concat(o),n=pi.cacheKey(e,r,t);return this.cache[n]||(this.cache[n]=new pi(this.context,e,Xt[e],t,Ui[e],r)),this.cache[n]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.frontFace.setDefault(),this.context.cullFaceSide.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=e.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new e.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this._terrain&&this._terrain.destroy(),this.globeSharedBuffers&&this.globeSharedBuffers.destroy(),this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy();}prepareDrawTile(e){this.terrain&&this.terrain.prepareDrawTile(e);}prepareDrawProgram(e,t,i){if(this.terrain&&this.terrain.renderingToTexture)return;const o=this.style.fog;if(o){const r=o.getOpacity(this.transform.pitch);0!==r&&t.setFogUniformValues(e,((e,t,i,o)=>{const r=t.properties.get(\"color\"),n=e.frameCounter/1e3%1,a=[r.r/r.a,r.g/r.a,r.b/r.a,o];return {u_fog_matrix:i?e.transform.calculateFogTileMatrix(i):e.identityMat,u_fog_range:t.getFovAdjustedRange(e.transform._fov),u_fog_color:a,u_fog_horizon_blend:t.properties.get(\"horizon-blend\"),u_fog_temporal_offset:n}})(this,o,i,r));}}setTileLoadedFlag(e){this.tileLoaded=e;}saveCanvasCopy(){this.frameCopies.push(this.canvasCopy()),this.tileLoaded=!1;}canvasCopy(){const e=this.context.gl,t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,0,0,e.drawingBufferWidth,e.drawingBufferHeight,0),t}getCanvasCopiesAndTimestamps(){return {canvasCopies:this.frameCopies,timeStamps:this.loadTimeStamps}}averageElevationNeedsEasing(){if(!this.transform._elevation)return !1;const e=this.style&&this.style.fog;return !!e&&0!==e.getOpacity(this.transform.pitch)}getBackgroundTiles(){const t=this._backgroundTiles,i=this._backgroundTiles={},o=this.transform.coveringTiles({tileSize:512});for(const r of o)i[r.key]=t[r.key]||new e.Tile(r,512,this.transform.tileZoom,this);return i}clearBackgroundTiles(){this._backgroundTiles={};}}class po{constructor(e=0,t=0,i=0,o=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=e,this.bottom=t,this.left=i,this.right=o;}interpolate(t,i,o){return null!=i.top&&null!=t.top&&(this.top=e.number(t.top,i.top,o)),null!=i.bottom&&null!=t.bottom&&(this.bottom=e.number(t.bottom,i.bottom,o)),null!=i.left&&null!=t.left&&(this.left=e.number(t.left,i.left,o)),null!=i.right&&null!=t.right&&(this.right=e.number(t.right,i.right,o)),this}getCenter(t,i){const o=e.clamp((this.left+t-this.right)/2,0,t),r=e.clamp((this.top+i-this.bottom)/2,0,i);return new e.pointGeometry(o,r)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new po(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function mo(t,i){const o=e.getColumn(t,3);e.fromQuat(t,i),e.setColumn(t,3,o);}function fo(t,i){e.setColumn(t,3,[i[0],i[1],i[2],1]);}function go(t,i){const o=e.identity$1([]);return e.rotateZ$1(o,o,-i),e.rotateX$1(o,o,-t),o}function vo(t,i){const o=[t[0],t[1],0],r=[i[0],i[1],0];if(e.length(o)>=1e-15){const t=e.normalize([],o);e.scale$2(r,t,e.dot(r,t)),i[0]=r[0],i[1]=r[1];}const n=e.cross([],i,t);if(e.len(n)<1e-15)return null;const a=Math.atan2(-n[1],n[0]);return go(Math.atan2(Math.sqrt(t[0]*t[0]+t[1]*t[1]),-t[2]),a)}class xo{constructor(e,t){this.position=e,this.orientation=t;}get position(){return this._position}set position(t){this._position=this._renderWorldCopies?function(t){if(!t)return;const i=Array.isArray(t)?new e.MercatorCoordinate(t[0],t[1],t[2]):t;return i.x=e.wrap(i.x,0,1),i}(t):t;}lookAtPoint(t,i){if(this.orientation=null,!this.position)return;const o=this._elevation?this._elevation.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(t)):0,r=this.position,n=e.MercatorCoordinate.fromLngLat(t,o),a=[n.x-r.x,n.y-r.y,n.z-r.z];i||(i=[0,0,1]),i[2]=Math.abs(i[2]),this.orientation=vo(a,i);}setPitchBearing(t,i){this.orientation=go(e.degToRad(t),e.degToRad(-i));}}class yo{constructor(t,i){this._transform=e.identity([]),this._orientation=e.identity$1([]),i&&(this._orientation=i,mo(this._transform,this._orientation)),t&&fo(this._transform,t);}get mercatorPosition(){const t=this.position;return new e.MercatorCoordinate(t[0],t[1],t[2])}get position(){const t=e.getColumn(this._transform,3);return [t[0],t[1],t[2]]}set position(e){fo(this._transform,e);}get orientation(){return this._orientation}set orientation(e){this._orientation=e,mo(this._transform,this._orientation);}getPitchBearing(){const e=this.forward(),t=this.right();return {bearing:Math.atan2(-t[1],t[0]),pitch:Math.atan2(Math.sqrt(e[0]*e[0]+e[1]*e[1]),-e[2])}}setPitchBearing(e,t){this._orientation=go(e,t),mo(this._transform,this._orientation);}forward(){const t=e.getColumn(this._transform,2);return [-t[0],-t[1],-t[2]]}up(){const t=e.getColumn(this._transform,1);return [-t[0],-t[1],-t[2]]}right(){const t=e.getColumn(this._transform,0);return [t[0],t[1],t[2]]}getCameraToWorld(t,i){const o=new Float64Array(16);return e.invert(o,this.getWorldToCamera(t,i)),o}getWorldToCameraPosition(t,i,o){const r=this.position;e.scale$2(r,r,-t);const n=new Float64Array(16);return e.fromScaling(n,[o,o,o]),e.translate(n,n,r),n[10]*=i,n}getWorldToCamera(t,i){const o=new Float64Array(16),r=new Float64Array(4),n=this.position;return e.conjugate(r,this._orientation),e.scale$2(n,n,-t),e.fromQuat(o,r),e.translate(o,o,n),o[1]*=-1,o[5]*=-1,o[9]*=-1,o[13]*=-1,o[8]*=i,o[9]*=i,o[10]*=i,o[11]*=i,o}getCameraToClipPerspective(t,i,o,r){const n=new Float64Array(16);return e.perspective(n,t,i,o,r),n}getDistanceToElevation(t){const i=0===t?0:e.mercatorZfromAltitude(t,this.position[1]),o=this.forward();return (i-this.position[2])/o[2]}clone(){return new yo([...this.position],[...this.orientation])}}function bo(t,i){const o=To(t),r=function(t,i,o,r,n){const a=new e.LngLat(o.lng-180*Eo,o.lat),s=new e.LngLat(o.lng+180*Eo,o.lat),l=t.project(a.lng,a.lat),c=t.project(s.lng,s.lat),h=-Math.atan2(c.y-l.y,c.x-l.x),u=e.MercatorCoordinate.fromLngLat(o);u.y=e.clamp(u.y,-.999975,.999975);const _=u.toLngLat(),d=t.project(_.lng,_.lat),p=e.MercatorCoordinate.fromLngLat(_);p.x+=Eo;const m=p.toLngLat(),f=t.project(m.lng,m.lat),g=Mo(f.x-d.x,f.y-d.y,h),v=e.MercatorCoordinate.fromLngLat(_);v.y+=Eo;const x=v.toLngLat(),y=t.project(x.lng,x.lat),b=Mo(y.x-d.x,y.y-d.y,h),w=Math.abs(g.x)/Math.abs(b.y),T=e.identity([]);e.rotateZ(T,T,-h*(1-(n?0:r)));const E=e.identity([]);return e.scale(E,E,[1,1-(1-w)*r,1]),E[4]=-b.x/b.y*r,e.rotateZ(E,E,h),e.multiply$1(E,T,E),E}(t.projection,0,t.center,o,i),n=wo(t);return e.scale(r,r,[n,n,1]),r}function wo(t){const i=t.projection,o=To(t),r=Co(i,t.center),n=Co(i,e.LngLat.convert(i.center));return Math.pow(2,r*o+(1-o)*n)}function To(t){const i=t.projection.range;if(!i)return 0;const o=Math.max(t.width,t.height),r=Math.log(o/1024)/Math.LN2;return e.smoothstep(i[0]+r,i[1]+r,t.zoom)}const Eo=1/4e4;function Co(t,i){const o=e.clamp(i.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),r=new e.LngLat(i.lng-180*Eo,o),n=new e.LngLat(i.lng+180*Eo,o),a=t.project(r.lng,o),s=t.project(n.lng,o),l=e.MercatorCoordinate.fromLngLat(r),c=e.MercatorCoordinate.fromLngLat(n),h=s.x-a.x,u=s.y-a.y,_=c.x-l.x,d=c.y-l.y,p=Math.sqrt((_*_+d*d)/(h*h+u*u));return Math.log(p)/Math.LN2}function Mo(e,t,i){const o=Math.cos(i),r=Math.sin(i);return {x:e*o-t*r,y:e*r+t*o}}class So{constructor(t,i,o,r,n){this.tileSize=512,this._renderWorldCopies=void 0===n||n,this._minZoom=t||0,this._maxZoom=i||22,this._minPitch=null==o?0:o,this._maxPitch=null==r?60:r,this.setProjection(),this.setMaxBounds(),this.width=0,this.height=0,this._center=new e.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._nearZ=0,this._farZ=0,this._unmodified=!0,this._edgeInsets=new po,this._projMatrixCache={},this._alignedProjMatrixCache={},this._fogTileMatrixCache={},this._distanceTileDataCache={},this._camera=new yo,this._centerAltitude=0,this._averageElevation=0,this.cameraElevationReference=\"ground\",this._projectionScaler=1,this._horizonShift=.1;}clone(){const e=new So(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return e.setProjection(this.getProjection()),e._elevation=this._elevation,e._centerAltitude=this._centerAltitude,e.tileSize=this.tileSize,e.setMaxBounds(this.getMaxBounds()),e.width=this.width,e.height=this.height,e.cameraElevationReference=this.cameraElevationReference,e._center=this._center,e._setZoom(this.zoom),e._cameraZoom=this._cameraZoom,e.angle=this.angle,e._fov=this._fov,e._pitch=this._pitch,e._nearZ=this._nearZ,e._farZ=this._farZ,e._averageElevation=this._averageElevation,e._unmodified=this._unmodified,e._edgeInsets=this._edgeInsets.clone(),e._camera=this._camera.clone(),e._calcMatrices(),e.freezeTileCoverage=this.freezeTileCoverage,e}get elevation(){return this._elevation}set elevation(e){this._elevation!==e&&(this._elevation=e,e?this._updateCenterElevation()&&this._updateCameraOnTerrain():(this._cameraZoom=null,this._centerAltitude=0),this._calcMatrices());}updateElevation(e){this._terrainEnabled()&&null==this._cameraZoom&&this._updateCenterElevation()&&this._updateCameraOnTerrain(),e&&this._constrainCameraAltitude(),this._calcMatrices();}getProjection(){return e.pick(this.projection,[\"name\",\"center\",\"parallels\"])}setProjection(t){null==t&&(t={name:\"mercator\"}),this.projectionOptions=t;const i=this.projection?this.getProjection():void 0;return this.projection=e.getProjection(t),!n(i,this.getProjection())&&(this._calcMatrices(),!0)}get minZoom(){return this._minZoom}set minZoom(e){this._minZoom!==e&&(this._minZoom=e,this.zoom=Math.max(this.zoom,e));}get maxZoom(){return this._maxZoom}set maxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.zoom=Math.min(this.zoom,e));}get minPitch(){return this._minPitch}set minPitch(e){this._minPitch!==e&&(this._minPitch=e,this.pitch=Math.max(this.pitch,e));}get maxPitch(){return this._maxPitch}set maxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.pitch=Math.min(this.pitch,e));}get renderWorldCopies(){return this._renderWorldCopies&&!0===this.projection.supportsWorldCopies}set renderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e;}get worldSize(){return this.tileSize*this.scale}get cameraWorldSize(){const e=Math.max(this._camera.getDistanceToElevation(this._averageElevation),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(e))}get pixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.worldSize)}get cameraPixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.cameraWorldSize)}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new e.pointGeometry(this.width,this.height)}get bearing(){return e.wrap(this.rotation,-180,180)}set bearing(e){this.rotation=e;}get rotation(){return -this.angle/Math.PI*180}set rotation(t){const i=-t*Math.PI/180;var o;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=(o=new e.ARRAY_TYPE(4),e.ARRAY_TYPE!=Float32Array&&(o[1]=0,o[2]=0),o[0]=1,o[3]=1,o),function(e,t,i){var o=t[0],r=t[1],n=t[2],a=t[3],s=Math.sin(i),l=Math.cos(i);e[0]=o*l+n*s,e[1]=r*l+a*s,e[2]=o*-s+n*l,e[3]=r*-s+a*l;}(this.rotationMatrix,this.rotationMatrix,this.angle));}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const i=e.clamp(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());}get fov(){return this._fov/Math.PI*180}set fov(e){e=Math.max(.01,Math.min(60,e)),this._fov!==e&&(this._unmodified=!1,this._fov=e/180*Math.PI,this._calcMatrices());}get averageElevation(){return this._averageElevation}set averageElevation(e){this._averageElevation=e,this._calcFogMatrices();}get zoom(){return this._zoom}set zoom(e){const t=Math.min(Math.max(e,this.minZoom),this.maxZoom);this._zoom!==t&&(this._unmodified=!1,this._setZoom(t),this._terrainEnabled()&&this._updateCameraOnTerrain(),this._constrain(),this._calcMatrices());}_setZoom(e){this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom;}_updateCenterElevation(){if(!this._elevation)return !1;const e=this._elevation.getAtPointOrZero(this.locationCoordinate(this.center),-1);return -1===e?(this._cameraZoom=null,!1):(this._centerAltitude=e,!0)}_updateCameraOnTerrain(){this._cameraZoom=this._zoomFromMercatorZ((this.pixelsPerMeter*this._centerAltitude+this.cameraToCenterDistance)/this.worldSize);}sampleAverageElevation(){if(!this._elevation)return 0;const t=this._elevation,i=[[.5,.2],[.3,.5],[.5,.5],[.7,.5],[.5,.8]],o=this.horizonLineFromTop();let r=0,n=0;for(let a=0;a<i.length;a++){const s=new e.pointGeometry(i[a][0]*this.width,o+i[a][1]*(this.height-o)),l=t.pointCoordinate(s);if(!l)continue;const c=1/Math.hypot(l[0]-this._camera.position[0],l[1]-this._camera.position[1]);r+=l[3]*c,n+=c;}return 0===n?NaN:r/n}get center(){return this._center}set center(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this._terrainEnabled()&&(\"ground\"===this.cameraElevationReference?this._updateCenterElevation()?this._updateCameraOnTerrain():this._cameraZoom=null:this._updateZoomFromElevation()),this._constrain(),this._calcMatrices());}_updateZoomFromElevation(){if(null==this._cameraZoom||!this._elevation)return;const e=this._cameraZoom,t=this._elevation.getAtPointOrZero(this.locationCoordinate(this.center)),i=this.pixelsPerMeter/this.worldSize*t,o=this._mercatorZfromZoom(e),r=this._mercatorZfromZoom(this._maxZoom),n=Math.max(o-i,r);this._setZoom(this._zoomFromMercatorZ(n));}get padding(){return this._edgeInsets.toJSON()}set padding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices());}computeZoomRelativeTo(t){const i=this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint,t.toAltitude()));let o;o=t.z<this._camera.position[2]?[i.x,i.y,i.z]:[t.x,t.y,t.z];const r=e.length(e.sub([],this._camera.position,o));return e.clamp(this._zoomFromMercatorZ(r),this._minZoom,this._maxZoom)}setFreeCameraOptions(t){if(!this.height)return;if(!t.position&&!t.orientation)return;this._updateCameraState();let i=!1;if(t.orientation&&!e.exactEquals(t.orientation,this._camera.orientation)&&(i=this._setCameraOrientation(t.orientation)),t.position){const o=[t.position.x,t.position.y,t.position.z];e.exactEquals$1(o,this._camera.position)||(this._setCameraPosition(o),i=!0);}i&&(this._updateStateFromCamera(),this.recenterOnTerrain());}getFreeCameraOptions(){this._updateCameraState();const t=this._camera.position,i=new xo;return i.position=new e.MercatorCoordinate(t[0],t[1],t[2]),i.orientation=this._camera.orientation,i._elevation=this.elevation,i._renderWorldCopies=this.renderWorldCopies,i}_setCameraOrientation(t){if(!e.length$1(t))return !1;e.normalize$1(t,t);const i=e.transformQuat([],[0,0,-1],t),o=e.transformQuat([],[0,-1,0],t);if(o[2]<0)return !1;const r=vo(i,o);return !!r&&(this._camera.orientation=r,!0)}_setCameraPosition(t){const i=this.zoomScale(this.minZoom)*this.tileSize,o=this.zoomScale(this.maxZoom)*this.tileSize,r=this.cameraToCenterDistance;t[2]=e.clamp(t[2],r/o,r/i),this._camera.position=t;}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}get fovAboveCenter(){return this._fov*(.5+this.centerOffset.y/this.height)}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this._constrain(),this._calcMatrices();}coveringZoomLevel(e){const t=(e.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/e.tileSize));return Math.max(0,t)}getVisibleUnwrappedCoordinates(t){const i=[new e.UnwrappedTileID(0,t)];if(this.renderWorldCopies){const o=this.pointCoordinate(new e.pointGeometry(0,0)),r=this.pointCoordinate(new e.pointGeometry(this.width,0)),n=this.pointCoordinate(new e.pointGeometry(this.width,this.height)),a=this.pointCoordinate(new e.pointGeometry(0,this.height)),s=Math.floor(Math.min(o.x,r.x,n.x,a.x)),l=Math.floor(Math.max(o.x,r.x,n.x,a.x)),c=1;for(let o=s-c;o<=l+c;o++)0!==o&&i.push(new e.UnwrappedTileID(o,t));}return i}coveringTiles(t){let i=this.coveringZoomLevel(t);const o=i,r=this.elevation&&!t.isTerrainDEM,n=\"mercator\"===this.projection.name;if(void 0!==t.minzoom&&i<t.minzoom)return [];void 0!==t.maxzoom&&i>t.maxzoom&&(i=t.maxzoom);const a=this.locationCoordinate(this.center),s=1<<i,l=[s*a.x,s*a.y,0],c=e.Frustum.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,i,\"globe\"!==this.projection.name),h=this.pointCoordinate(this.getCameraPoint()),u=s*e.mercatorZfromAltitude(1,this.center.lat),_=this._camera.position[2]/e.mercatorZfromAltitude(1,this.center.lat),d=[s*h.x,s*h.y,_],p=this.cameraToCenterDistance/t.tileSize*(t.roundZoom?1:.502),m=this.pitch<=60&&this._edgeInsets.top<=this._edgeInsets.bottom&&!this._elevation&&!this.projection.isReprojectedInTileSpace?i:0,f=t.isTerrainDEM&&this._elevation?1e4*this._elevation.exaggeration():this._centerAltitude,g=t.isTerrainDEM?-f:this._elevation?this._elevation.getMinElevationBelowMSL():0,v=this.projection.isReprojectedInTileSpace?wo(this):1,x=t=>{const i=1/4e4,o=new e.MercatorCoordinate(t.x+i,t.y,t.z),r=new e.MercatorCoordinate(t.x,t.y+i,t.z),n=t.toLngLat(),a=o.toLngLat(),s=r.toLngLat(),l=this.locationCoordinate(n),c=this.locationCoordinate(a),h=this.locationCoordinate(s),u=Math.hypot(c.x-l.x,c.y-l.y),_=Math.hypot(h.x-l.x,h.y-l.y);return Math.sqrt(u*_)*v/i},y=t=>{const i=f,o=g;return {aabb:e.tileAABB(this,s,0,0,0,t,o,i,this.projection),zoom:0,x:0,y:0,minZ:o,maxZ:i,wrap:t,fullyVisible:!1}},b=[];let w=[];const T=i,E=t.reparseOverscaled?o:i,C=e=>e*e,M=C((_-this._centerAltitude)*u),S=e=>{if(!this._elevation||!e.tileID||!n)return;const t=this._elevation.getMinMaxForTile(e.tileID),i=e.aabb;t?(i.min[2]=t.min,i.max[2]=t.max,i.center[2]=(i.min[2]+i.max[2])/2):(e.shouldSplit=I(e),e.shouldSplit||(i.min[2]=i.max[2]=i.center[2]=this._centerAltitude));},I=t=>{if(t.zoom<m)return !0;if(t.zoom===T)return !1;if(null!=t.shouldSplit)return t.shouldSplit;const i=t.aabb.distanceX(d),n=t.aabb.distanceY(d);let a=M;r&&(a=C(t.aabb.distanceZ(d)*u));let s=1;if(this.projection.isReprojectedInTileSpace&&o<=5){const i=Math.pow(2,t.zoom),o=x(new e.MercatorCoordinate((t.x+.5)/i,(t.y+.5)/i));s=o>.85?1:o;}const l=i*i+n*n+a;return l<C((1<<T-t.zoom)*p*s*((e,t)=>{if(t*C(.707)<e)return 1;const i=Math.sqrt(t/e);return i/(1.4144271570014144+(Math.pow(1.1,i-1.4144271570014144+1)-1)/(1.1-1)-1)})(Math.max(a,M),l))};if(this.renderWorldCopies)for(let e=1;e<=3;e++)b.push(y(-e)),b.push(y(e));for(b.push(y(0));b.length>0;){const o=b.pop(),a=o.x,h=o.y;let u=o.fullyVisible;if(!u){const e=o.aabb.intersects(c);if(0===e)continue;u=2===e;}if(o.zoom!==T&&I(o))for(let t=0;t<4;t++){const i=(a<<1)+t%2,l=(h<<1)+(t>>1),c={aabb:n?o.aabb.quadrant(t):e.tileAABB(this,s,o.zoom+1,i,l,o.wrap,o.minZ,o.maxZ,this.projection),zoom:o.zoom+1,x:i,y:l,wrap:o.wrap,fullyVisible:u,tileID:void 0,shouldSplit:void 0,minZ:o.minZ,maxZ:o.maxZ};r&&(c.tileID=new e.OverscaledTileID(o.zoom+1===T?E:o.zoom+1,o.wrap,o.zoom+1,i,l),S(c)),b.push(c);}else {const r=o.zoom===T?E:o.zoom;if(t.minzoom&&t.minzoom>r)continue;const n=l[0]-(.5+a+(o.wrap<<o.zoom))*(1<<i-o.zoom),s=l[1]-.5-h,c=o.tileID?o.tileID:new e.OverscaledTileID(r,o.wrap,o.zoom,a,h);w.push({tileID:c,distanceSq:n*n+s*s});}}if(this.fogCullDistSq){const i=this.fogCullDistSq,o=this.horizonLineFromTop();w=w.filter((r=>{const n=[0,0,0,1],a=[e.EXTENT,e.EXTENT,0,1],s=this.calculateFogTileMatrix(r.tileID.toUnwrapped());e.transformMat4$1(n,n,s),e.transformMat4$1(a,a,s);const l=e.getAABBPointSquareDist(n,a);if(0===l)return !0;let c=!1;const h=this._elevation;if(h&&l>i&&0!==o){const i=this.calculateProjMatrix(r.tileID.toUnwrapped());let n;t.isTerrainDEM||(n=h.getMinMaxForTile(r.tileID)),n||(n={min:g,max:f});const a=e.furthestTileCorner(this.rotation),s=[a[0]*e.EXTENT,a[1]*e.EXTENT,n.max];e.transformMat4(s,s,i),c=(1-s[1])*this.height*.5<o;}return l<i||c}));}return w.sort(((e,t)=>e.distanceSq-t.distanceSq)).map((e=>e.tileID))}resize(e,t){this.width=e,this.height=t,this.pixelsToGLUnits=[2/e,-2/t],this._constrain(),this._calcMatrices();}get unmodified(){return this._unmodified}zoomScale(e){return Math.pow(2,e)}scaleZoom(e){return Math.log(e)/Math.LN2}project(t){const i=e.clamp(t.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),o=this.projection.project(t.lng,i);return new e.pointGeometry(o.x*this.worldSize,o.y*this.worldSize)}unproject(e){return this.projection.unproject(e.x/this.worldSize,e.y/this.worldSize)}get point(){return this.project(this.center)}setLocationAtPoint(t,i){const o=this.pointCoordinate(i),r=this.pointCoordinate(this.centerPoint),n=this.locationCoordinate(t);this.setLocation(new e.MercatorCoordinate(n.x-(o.x-r.x),n.y-(o.y-r.y)));}setLocation(e){this.center=this.coordinateLocation(e),this.projection.wrap&&(this.center=this.center.wrap());}locationPoint(e){return this.projection.locationPoint(this,e)}locationPoint3D(e){return this._coordinatePoint(this.locationCoordinate(e),!0)}pointLocation(e){return this.coordinateLocation(this.pointCoordinate(e))}pointLocation3D(e){return this.coordinateLocation(this.pointCoordinate3D(e))}locationCoordinate(t,i){const o=i?e.mercatorZfromAltitude(i,t.lat):void 0,r=this.projection.project(t.lng,t.lat);return new e.MercatorCoordinate(r.x,r.y,o)}coordinateLocation(e){return this.projection.unproject(e.x,e.y)}pointRayIntersection(t,i){const o=null!=i?i:this._centerAltitude,r=[t.x,t.y,0,1],n=[t.x,t.y,1,1];e.transformMat4$1(r,r,this.pixelMatrixInverse),e.transformMat4$1(n,n,this.pixelMatrixInverse);const a=n[3];e.scale$1(r,r,1/r[3]),e.scale$1(n,n,1/a);const s=r[2],l=n[2];return {p0:r,p1:n,t:s===l?0:(o-s)/(l-s)}}screenPointToMercatorRay(t){const i=[t.x,t.y,0,1],o=[t.x,t.y,1,1];return e.transformMat4$1(i,i,this.pixelMatrixInverse),e.transformMat4$1(o,o,this.pixelMatrixInverse),e.scale$1(i,i,1/i[3]),e.scale$1(o,o,1/o[3]),i[2]=e.mercatorZfromAltitude(i[2],this._center.lat)*this.worldSize,o[2]=e.mercatorZfromAltitude(o[2],this._center.lat)*this.worldSize,e.scale$1(i,i,1/this.worldSize),e.scale$1(o,o,1/this.worldSize),new e.Ray([i[0],i[1],i[2]],e.normalize([],e.sub([],o,i)))}rayIntersectionCoordinate(t){const{p0:i,p1:o,t:r}=t,n=e.mercatorZfromAltitude(i[2],this._center.lat),a=e.mercatorZfromAltitude(o[2],this._center.lat);return new e.MercatorCoordinate(e.number(i[0],o[0],r)/this.worldSize,e.number(i[1],o[1],r)/this.worldSize,e.number(n,a,r))}pointCoordinate(e,t=this._centerAltitude){return this.projection.createTileTransform(this,this.worldSize).pointCoordinate(e.x,e.y,t)}pointCoordinate3D(t){if(!this.elevation)return this.pointCoordinate(t);const i=this.elevation;let o=this.elevation.pointCoordinate(t);if(o)return new e.MercatorCoordinate(o[0],o[1],o[2]);let r=0,n=this.horizonLineFromTop();if(t.y>n)return this.pointCoordinate(t);const a=.02*n,s=t.clone();for(let t=0;t<10&&n-r>a;t++){s.y=e.number(r,n,.66);const t=i.pointCoordinate(s);t?(n=s.y,o=t):r=s.y;}return o?new e.MercatorCoordinate(o[0],o[1],o[2]):this.pointCoordinate(t)}isPointAboveHorizon(e){if(this.elevation)return !this.elevation.pointCoordinate(e);{const t=this.horizonLineFromTop();return e.y<t}}_coordinatePoint(t,i){const o=i&&this.elevation?this.elevation.getAtPointOrZero(t,this._centerAltitude):this._centerAltitude,r=[t.x*this.worldSize,t.y*this.worldSize,o+t.toAltitude(),1];return e.transformMat4$1(r,r,this.pixelMatrix),r[3]>0?new e.pointGeometry(r[0]/r[3],r[1]/r[3]):new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE)}_getBounds(t,i){const o=new e.pointGeometry(this._edgeInsets.left,this._edgeInsets.top),r=new e.pointGeometry(this.width-this._edgeInsets.right,this._edgeInsets.top),n=new e.pointGeometry(this.width-this._edgeInsets.right,this.height-this._edgeInsets.bottom),a=new e.pointGeometry(this._edgeInsets.left,this.height-this._edgeInsets.bottom);let s=this.pointCoordinate(o,t),l=this.pointCoordinate(r,t);const c=this.pointCoordinate(n,i),h=this.pointCoordinate(a,i),u=(e,t)=>(t.y-e.y)/(t.x-e.x);return s.y>1&&l.y>=0?s=new e.MercatorCoordinate((1-h.y)/u(h,s)+h.x,1):s.y<0&&l.y<=1&&(s=new e.MercatorCoordinate(-h.y/u(h,s)+h.x,0)),l.y>1&&s.y>=0?l=new e.MercatorCoordinate((1-c.y)/u(c,l)+c.x,1):l.y<0&&s.y<=1&&(l=new e.MercatorCoordinate(-c.y/u(c,l)+c.x,0)),(new e.LngLatBounds).extend(this.coordinateLocation(s)).extend(this.coordinateLocation(l)).extend(this.coordinateLocation(h)).extend(this.coordinateLocation(c))}_getBounds3D(){const e=this.elevation;if(!e.visibleDemTiles.length)return this._getBounds(0,0);const t=e.visibleDemTiles.reduce(((e,t)=>{if(t.dem){const i=t.dem.tree;e.min=Math.min(e.min,i.minimums[0]),e.max=Math.max(e.max,i.maximums[0]);}return e}),{min:Number.MAX_VALUE,max:0});return this._getBounds(t.min*e.exaggeration(),t.max*e.exaggeration())}getBounds(){return this._terrainEnabled()?this._getBounds3D():this._getBounds(0,0)}horizonLineFromTop(e=!0){const t=this.height/2/Math.tan(this._fov/2)/Math.tan(Math.max(this._pitch,.1))+this.centerOffset.y,i=this.height/2-t*(1-this._horizonShift);return e?Math.max(0,i):i}getMaxBounds(){return this.maxBounds}setMaxBounds(t){this.maxBounds=t,this.minLat=-e.MAX_MERCATOR_LATITUDE,this.maxLat=e.MAX_MERCATOR_LATITUDE,this.minLng=-180,this.maxLng=180,t&&(this.minLat=t.getSouth(),this.maxLat=t.getNorth(),this.minLng=t.getWest(),this.maxLng=t.getEast(),this.maxLng<this.minLng&&(this.maxLng+=360)),this.worldMinX=e.mercatorXfromLng(this.minLng)*this.tileSize,this.worldMaxX=e.mercatorXfromLng(this.maxLng)*this.tileSize,this.worldMinY=e.mercatorYfromLat(this.maxLat)*this.tileSize,this.worldMaxY=e.mercatorYfromLat(this.minLat)*this.tileSize,this._constrain();}calculatePosMatrix(e,t){return this.projection.createTileTransform(this,t).createTileMatrix(e)}calculateDistanceTileData(t){const i=t.key,o=this._distanceTileDataCache;if(o[i])return o[i];const r=t.canonical,n=1/this.height,a=this.cameraWorldSize/this.zoomScale(r.z),s=(r.x+Math.pow(2,r.z)*t.wrap)*a,l=r.y*a,c=this.point,h=this.angle,u=Math.sin(-h),_=-Math.cos(-h);return o[i]={bearing:[u,_],center:[(c.x-s)*n,(c.y-l)*n],scale:a/e.EXTENT*n},o[i]}calculateFogTileMatrix(t){const i=t.key,o=this._fogTileMatrixCache;if(o[i])return o[i];const r=this.calculatePosMatrix(t,this.cameraWorldSize);return e.multiply$1(r,this.worldToFogMatrix,r),o[i]=new Float32Array(r),o[i]}calculateProjMatrix(t,i=!1){const o=t.key,r=i?this._alignedProjMatrixCache:this._projMatrixCache;if(r[o])return r[o];const n=this.calculatePosMatrix(t,this.worldSize);return e.multiply$1(n,this.projection.isReprojectedInTileSpace?this.mercatorMatrix:i?this.alignedProjMatrix:this.projMatrix,n),r[o]=new Float32Array(n),r[o]}calculatePixelsToTileUnitsMatrix(t){const i=t.tileID.key,o=this._pixelsToTileUnitsCache;if(o[i])return o[i];const r=function(t,i){const{scale:o}=t.tileTransform,r=o*e.EXTENT/(t.tileSize*Math.pow(2,i.zoom-t.tileID.overscaledZ+t.tileID.canonical.z));return n=new Float32Array(4),l=(a=i.inverseAdjustmentMatrix)[1],c=a[2],h=a[3],_=(s=[r,r])[1],n[0]=a[0]*(u=s[0]),n[1]=l*u,n[2]=c*_,n[3]=h*_,n;var n,a,s,l,c,h,u,_;}(t,this);return o[i]=r,o[i]}customLayerMatrix(){return this.mercatorMatrix.slice()}recenterOnTerrain(){if(!this._elevation)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,o=this._computeCameraPosition(i),r=this._camera.forward(),n=e.mercatorZfromAltitude(1,this._center.lat);o[2]/=n,r[2]/=n,e.normalize(r,r);const a=t.raycast(o,r,t.exaggeration());if(a){const t=e.scaleAndAdd([],o,r,a),i=new e.MercatorCoordinate(t[0],t[1],e.mercatorZfromAltitude(t[2],e.latFromMercatorY(t[1]))),s=(i.z+e.length([i.x-o[0],i.y-o[1],i.z-o[2]*n]))*this._projectionScaler;this._cameraZoom=this._zoomFromMercatorZ(s),this._centerAltitude=i.toAltitude(),this._center=this.coordinateLocation(i),this._updateZoomFromElevation(),this._constrain(),this._calcMatrices();}}_constrainCameraAltitude(){if(!this._elevation)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,o=this._computeCameraPosition(i),r=t.getAtPointOrZero(new e.MercatorCoordinate(...o)),n=this._minimumHeightOverTerrain()*Math.cos(e.degToRad(this._maxPitch)),a=this._camera.position[2]-this.pixelsPerMeter/this.worldSize*r;if(a<n){const t=this.locationCoordinate(this._center,this._centerAltitude),i=[t.x-o[0],t.y-o[1],t.z-o[2]],r=e.length(i);i[2]-=(n-a)/this._projectionScaler;const s=e.length(i);if(0===s)return;e.scale$2(i,i,r/s*this._projectionScaler),this._camera.position=[t.x-i[0],t.y-i[1],t.z*this._projectionScaler-i[2]],this._camera.orientation=vo(i,this._camera.up()),this._updateStateFromCamera();}}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;if(this._constraining=!0,this.projection.isReprojectedInTileSpace){const t=this.center;return t.lat=e.clamp(t.lat,this.minLat,this.maxLat),!this.maxBounds&&this.renderWorldCopies||(t.lng=e.clamp(t.lng,this.minLng,this.maxLng)),this.center=t,void(this._constraining=!1)}const t=this._unmodified,{x:i,y:o}=this.point;let r=0,n=i,a=o;const s=this.width/2,l=this.height/2,c=this.worldMinY*this.scale,h=this.worldMaxY*this.scale;if(o-l<c&&(a=c+l),o+l>h&&(a=h-l),h-c<this.height&&(r=Math.max(r,this.height/(h-c)),a=(h+c)/2),this.maxBounds||!this._renderWorldCopies||!this.projection.wrap){const e=this.worldMinX*this.scale,t=this.worldMaxX*this.scale,o=this.worldSize/2-(e+t)/2;n=(i+o+this.worldSize)%this.worldSize-o,n-s<e&&(n=e+s),n+s>t&&(n=t-s),t-e<this.width&&(r=Math.max(r,this.width/(t-e)),n=(t+e)/2);}n===i&&a===o||(this.center=this.unproject(new e.pointGeometry(n,a))),r&&(this.zoom+=this.scaleZoom(r)),this._constrainCameraAltitude(),this._unmodified=t,this._constraining=!1;}_minZoomForBounds(){let e=Math.max(0,this.scaleZoom(this.height/(this.worldMaxY-this.worldMinY)));return this.maxBounds&&(e=Math.max(e,this.scaleZoom(this.width/(this.worldMaxX-this.worldMinX)))),e}_maxCameraBoundsDistance(){return this._mercatorZfromZoom(this._minZoomForBounds())}_calcMatrices(){if(!this.height)return;const t=this._fov/2,i=this.centerOffset,o=this.pixelsPerMeter;this._projectionScaler=o/(e.mercatorZfromAltitude(1,this.center.lat)*this.worldSize),this.cameraToCenterDistance=.5/Math.tan(t)*this.height*this._projectionScaler,this._updateCameraState(),this._farZ=this.projection.farthestPixelDistance(this),this._nearZ=this.height/50;const n=this._camera.getWorldToCamera(this.worldSize,\"meters\"===this.projection.zAxisUnit?o:1),a=this._camera.getCameraToClipPerspective(this._fov,this.width/this.height,this._nearZ,this._farZ);a[8]=2*-i.x/this.width,a[9]=2*i.y/this.height;let s=e.mul([],a,n);if(this.projection.isReprojectedInTileSpace){const t=this.locationCoordinate(this.center),i=e.identity([]);e.translate(i,i,[t.x*this.worldSize,t.y*this.worldSize,0]),e.multiply$1(i,i,bo(this)),e.translate(i,i,[-t.x*this.worldSize,-t.y*this.worldSize,0]),e.multiply$1(s,s,i),this.inverseAdjustmentMatrix=function(e){const t=bo(e,!0);return r([],[t[0],t[1],t[4],t[5]])}(this);}else this.inverseAdjustmentMatrix=[1,0,0,1];this.mercatorMatrix=e.scale([],s,[this.worldSize,this.worldSize,this.worldSize/o,1]),this.projMatrix=s,this.invProjMatrix=e.invert(new Float64Array(16),this.projMatrix);const l=new Float32Array(16);e.identity(l),e.scale(l,l,[1,-1,1]),e.rotateX(l,l,this._pitch),e.rotateZ(l,l,this.angle);const c=e.perspective(new Float32Array(16),this._fov,this.width/this.height,this._nearZ,this._farZ),h=(Math.PI/2-this._pitch)*(this.height/this._fov)*this._horizonShift;c[8]=2*-i.x/this.width,c[9]=2*(i.y+h)/this.height,this.skyboxMatrix=e.multiply$1(l,c,l);const u=this.point,_=u.x,d=u.y,p=this.width%2/2,m=this.height%2/2,f=Math.cos(this.angle),g=Math.sin(this.angle),v=_-Math.round(_)+f*p+g*m,x=d-Math.round(d)+f*m+g*p,y=new Float64Array(s);if(e.translate(y,y,[v>.5?v-1:v,x>.5?x-1:x,0]),this.alignedProjMatrix=y,s=e.create(),e.scale(s,s,[this.width/2,-this.height/2,1]),e.translate(s,s,[1,-1,0]),this.labelPlaneMatrix=s,s=e.create(),e.scale(s,s,[1,-1,1]),e.translate(s,s,[-1,-1,0]),e.scale(s,s,[2/this.width,2/this.height,1]),this.glCoordMatrix=s,this.pixelMatrix=e.multiply$1(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),this._calcFogMatrices(),this._distanceTileDataCache={},s=e.invert(new Float64Array(16),this.pixelMatrix),!s)throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=s,this._projMatrixCache={},this._alignedProjMatrixCache={},this._pixelsToTileUnitsCache={};}_calcFogMatrices(){this._fogTileMatrixCache={};const t=this.cameraWorldSize,i=this.cameraPixelsPerMeter,o=this._camera.position,r=1/this.height,n=[t,t,i];e.scale$2(n,n,r),e.scale$2(o,o,-1),e.multiply$2(o,o,n);const a=e.create();e.translate(a,a,o),e.scale(a,a,n),this.mercatorFogMatrix=a,this.worldToFogMatrix=this._camera.getWorldToCameraPosition(t,i,r);}_computeCameraPosition(e){const t=(e=e||this.pixelsPerMeter)/this.pixelsPerMeter,i=this._camera.forward(),o=this.point,r=this._mercatorZfromZoom(this._cameraZoom?this._cameraZoom:this._zoom)*t-e/this.worldSize*this._centerAltitude;return [o.x/this.worldSize-i[0]*r,o.y/this.worldSize-i[1]*r,e/this.worldSize*this._centerAltitude-i[2]*r]}_updateCameraState(){this.height&&(this._camera.setPitchBearing(this._pitch,this.angle),this._camera.position=this._computeCameraPosition());}_translateCameraConstrained(t){const i=this._maxCameraBoundsDistance()*Math.cos(this._pitch),o=t[2];let r=1;o>0&&(r=Math.min((i-this._camera.position[2])/o,1)),this._camera.position=e.scaleAndAdd([],this._camera.position,t,r),this._updateStateFromCamera();}_updateStateFromCamera(){const t=this._camera.position,i=this._camera.forward(),{pitch:o,bearing:r}=this._camera.getPitchBearing(),n=e.mercatorZfromAltitude(this._centerAltitude,this.center.lat)*this._projectionScaler,a=this._mercatorZfromZoom(this._maxZoom)*Math.cos(e.degToRad(this._maxPitch)),s=Math.max((t[2]-n)/Math.cos(o),a),l=this._zoomFromMercatorZ(s);e.scaleAndAdd(t,t,i,s),this._pitch=e.clamp(o,e.degToRad(this.minPitch),e.degToRad(this.maxPitch)),this.angle=e.wrap(r,-Math.PI,Math.PI),this._setZoom(e.clamp(l,this._minZoom,this._maxZoom)),this._terrainEnabled()&&this._updateCameraOnTerrain(),this._center=this.coordinateLocation(new e.MercatorCoordinate(t[0],t[1],t[2])),this._unmodified=!1,this._constrain(),this._calcMatrices();}_worldSizeFromZoom(e){return Math.pow(2,e)*this.tileSize}_mercatorZfromZoom(e){return this.cameraToCenterDistance/this._worldSizeFromZoom(e)}_minimumHeightOverTerrain(){const e=Math.min((null!=this._cameraZoom?this._cameraZoom:this._zoom)+2,this._maxZoom);return this._mercatorZfromZoom(e)}_zoomFromMercatorZ(e){return this.scaleZoom(this.cameraToCenterDistance/(e*this.tileSize))}_terrainEnabled(){return !(!this._elevation||!this.projection.supportsTerrain&&(e.warnOnce(\"Terrain is not yet supported with alternate projections. Use mercator to enable terrain.\"),1))}anyCornerOffEdge(t,i){const o=Math.min(t.x,i.x),r=Math.max(t.x,i.x),n=Math.min(t.y,i.y),a=Math.max(t.y,i.y);if(n<this.horizonLineFromTop(!1))return !0;if(\"mercator\"!==this.projection.name)return !1;const s=[new e.pointGeometry(o,n),new e.pointGeometry(r,a),new e.pointGeometry(o,a),new e.pointGeometry(r,n)],l=this.renderWorldCopies?-3:0,c=this.renderWorldCopies?4:1;for(const e of s){const t=this.pointRayIntersection(e);if(t.t<0)return !0;const i=this.rayIntersectionCoordinate(t);if(i.x<l||i.y<0||i.x>c||i.y>1)return !0}return !1}isHorizonVisible(){return this.pitch+e.radToDeg(this.fovAboveCenter)>88||this.anyCornerOffEdge(new e.pointGeometry(0,0),new e.pointGeometry(this.width,this.height))}zoomDeltaToMovement(t,i){const o=e.length(e.sub([],this._camera.position,t)),r=this._zoomFromMercatorZ(o)+i;return o-this._mercatorZfromZoom(r)}getCameraPoint(){const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new e.pointGeometry(0,t))}}function Io(e,t){let i=!1,o=null;const r=()=>{o=null,i&&(e(),o=setTimeout(r,t),i=!1);};return ()=>(i=!0,o||r(),o)}class zo{constructor(t){this._hashName=t&&encodeURIComponent(t),e.bindAll([\"_getCurrentHash\",\"_onHashChange\",\"_updateHash\"],this),this._updateHash=Io(this._updateHashUnthrottled.bind(this),300);}addTo(t){return this._map=t,e.window.addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this}remove(){return e.window.removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(t){const i=this._map.getCenter(),o=Math.round(100*this._map.getZoom())/100,r=Math.ceil((o*Math.LN2+Math.log(512/360/.5))/Math.LN10),n=Math.pow(10,r),a=Math.round(i.lng*n)/n,s=Math.round(i.lat*n)/n,l=this._map.getBearing(),c=this._map.getPitch();let h=\"\";if(h+=t?`/${a}/${s}/${o}`:`${o}/${s}/${a}`,(l||c)&&(h+=\"/\"+Math.round(10*l)/10),c&&(h+=`/${Math.round(c)}`),this._hashName){const t=this._hashName;let i=!1;const o=e.window.location.hash.slice(1).split(\"&\").map((e=>{const o=e.split(\"=\")[0];return o===t?(i=!0,`${o}=${h}`):e})).filter((e=>e));return i||o.push(`${t}=${h}`),`#${o.join(\"&\")}`}return `#${h}`}_getCurrentHash(){const t=e.window.location.hash.replace(\"#\",\"\");if(this._hashName){let e;return t.split(\"&\").map((e=>e.split(\"=\"))).forEach((t=>{t[0]===this._hashName&&(e=t);})),(e&&e[1]||\"\").split(\"/\")}return t.split(\"/\")}_onHashChange(){const e=this._getCurrentHash();if(e.length>=3&&!e.some((e=>isNaN(e)))){const t=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(e[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:t,pitch:+(e[4]||0)}),!0}return !1}_updateHashUnthrottled(){const t=e.window.location.href.replace(/(#.+)?$/,this.getHashString());e.window.history.replaceState(e.window.history.state,null,t);}}const Do={linearity:.3,easing:e.bezier(0,0,.3,1)},Po=e.extend({deceleration:2500,maxSpeed:1400},Do),Ao=e.extend({deceleration:20,maxSpeed:1400},Do),Lo=e.extend({deceleration:1e3,maxSpeed:360},Do),Ro=e.extend({deceleration:1e3,maxSpeed:90},Do);class ko{constructor(e){this._map=e,this.clear();}clear(){this._inertiaBuffer=[];}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:e.exported.now(),settings:t});}_drainInertiaBuffer(){const t=this._inertiaBuffer,i=e.exported.now();for(;t.length>0&&i-t[0].time>160;)t.shift();}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new e.pointGeometry(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,r={};if(i.pan.mag()){const n=Bo(i.pan.mag(),o,e.extend({},Po,t||{}));r.offset=i.pan.mult(n.amount/i.pan.mag()),r.center=this._map.transform.center,Oo(r,n);}if(i.zoom){const e=Bo(i.zoom,o,Ao);r.zoom=this._map.transform.zoom+e.amount,Oo(r,e);}if(i.bearing){const t=Bo(i.bearing,o,Lo);r.bearing=this._map.transform.bearing+e.clamp(t.amount,-179,179),Oo(r,t);}if(i.pitch){const e=Bo(i.pitch,o,Ro);r.pitch=this._map.transform.pitch+e.amount,Oo(r,e);}if(r.zoom||r.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;r.around=e?this._map.unproject(e):this._map.getCenter();}return this.clear(),e.extend(r,{noMoveStart:!0})}}function Oo(e,t){(!e.duration||e.duration<t.duration)&&(e.duration=t.duration,e.easing=t.easing);}function Bo(t,i,o){const{maxSpeed:r,linearity:n,deceleration:a}=o,s=e.clamp(t*n/(i/1e3),-r,r),l=Math.abs(s)/(a*n);return {easing:o.easing,duration:1e3*l,amount:s*(l/2)}}class Fo extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,o,r={}){const n=a.mousePos(i.getCanvasContainer(),o),s=i.unproject(n);super(t,e.extend({point:n,lngLat:s,originalEvent:o},r)),this._defaultPrevented=!1,this.target=i;}}class Uo extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,o){const r=\"touchend\"===t?o.changedTouches:o.touches,n=a.touchPos(i.getCanvasContainer(),r),s=n.map((e=>i.unproject(e))),l=n.reduce(((e,t,i,o)=>e.add(t.div(o.length))),new e.pointGeometry(0,0));super(t,{points:n,point:l,lngLats:s,lngLat:i.unproject(l),originalEvent:o}),this._defaultPrevented=!1;}}class No extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1;}}class Go{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance;}reset(){delete this._mousedownPos;}wheel(e){return this._firePreventable(new No(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new Fo(e.type,this._map,e))}mouseup(e){this._map.fire(new Fo(e.type,this._map,e));}preclick(t){const i=e.extend({},t);i.type=\"preclick\",this._map.fire(new Fo(i.type,this._map,i));}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||(this.preclick(e),this._map.fire(new Fo(e.type,this._map,e)));}dblclick(e){return this._firePreventable(new Fo(e.type,this._map,e))}mouseover(e){this._map.fire(new Fo(e.type,this._map,e));}mouseout(e){this._map.fire(new Fo(e.type,this._map,e));}touchstart(e){return this._firePreventable(new Uo(e.type,this._map,e))}touchmove(e){this._map.fire(new Uo(e.type,this._map,e));}touchend(e){this._map.fire(new Uo(e.type,this._map,e));}touchcancel(e){this._map.fire(new Uo(e.type,this._map,e));}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class jo{constructor(e){this._map=e;}reset(){this._delayContextMenu=!1,delete this._contextMenuEvent;}mousemove(e){this._map.fire(new Fo(e.type,this._map,e));}mousedown(){this._delayContextMenu=!0;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Fo(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._map.fire(new Fo(e.type,this._map,e)),this._map.listens(\"contextmenu\")&&e.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class Zo{constructor(e,t){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(a.disableDrag(),this._startPos=this._lastPos=t,this._active=!0);}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)<this._clickTolerance)return;const o=this._startPos;this._lastPos=i,this._box||(this._box=a.create(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",e));const r=Math.min(o.x,i.x),n=Math.max(o.x,i.x),s=Math.min(o.y,i.y),l=Math.max(o.y,i.y);this._map._requestDomTask((()=>{this._box&&(this._box.style.transform=`translate(${r}px,${s}px)`,this._box.style.width=n-r+\"px\",this._box.style.height=l-s+\"px\");}));}mouseupWindow(t,i){if(!this._active)return;if(0!==t.button)return;const o=this._startPos,r=i;if(this.reset(),a.suppressClick(),o.x!==r.x||o.y!==r.y)return this._map.fire(new e.Event(\"boxzoomend\",{originalEvent:t})),{cameraAnimation:e=>e.fitScreenCoordinates(o,r,this._map.getBearing(),{linear:!1})};this._fireEvent(\"boxzoomcancel\",t);}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent(\"boxzoomcancel\",e));}blur(){this.reset();}reset(){this._active=!1,this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(this._box.remove(),this._box=null),a.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(t,i){return this._map.fire(new e.Event(t,{originalEvent:i}))}}function Vo(e,t){const i={};for(let o=0;o<e.length;o++)i[e[o].identifier]=t[o];return i}class Wo{constructor(e){this.reset(),this.numTouches=e.numTouches;}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1;}touchstart(t,i,o){(this.centroid||o.length>this.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=t.timeStamp),o.length===this.numTouches&&(this.centroid=function(t){const i=new e.pointGeometry(0,0);for(const e of t)i._add(e);return i.div(t.length)}(i),this.touches=Vo(o,i)));}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const o=Vo(i,t);for(const e in this.touches){const t=this.touches[e],i=o[e];(!i||i.dist(t)>30)&&(this.aborted=!0);}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class qo{constructor(e){this.singleTap=new Wo(e),this.numTaps=e.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(e,t,i){this.singleTap.touchstart(e,t,i);}touchmove(e,t,i){this.singleTap.touchmove(e,t,i);}touchend(e,t,i){const o=this.singleTap.touchend(e,t,i);if(o){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(o)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}}}class Xo{constructor(){this._zoomIn=new qo({numTouches:1,numTaps:2}),this._zoomOut=new qo({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i);}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i);}touchend(e,t,i){const o=this._zoomIn.touchend(e,t,i),r=this._zoomOut.touchend(e,t,i);return o?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()+1,around:t.unproject(o)},{originalEvent:e})}):r?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()-1,around:t.unproject(r)},{originalEvent:e})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}const $o={0:1,2:2};class Ho{constructor(e){this.reset(),this._clickTolerance=e.clickTolerance||1;}blur(){this.reset();}reset(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton;}_correctButton(e,t){return !1}_move(e,t){return {}}mousedown(e,t){if(this._lastPoint)return;const i=a.mouseButton(e);this._correctButton(e,i)&&(this._lastPoint=t,this._eventButton=i);}mousemoveWindow(e,t){const i=this._lastPoint;if(i)if(e.preventDefault(),function(e,t){const i=$o[t];return void 0===e.buttons||(e.buttons&i)!==i}(e,this._eventButton))this.reset();else if(this._moved||!(t.dist(i)<this._clickTolerance))return this._moved=!0,this._lastPoint=t,this._move(i,t)}mouseupWindow(e){this._lastPoint&&a.mouseButton(e)===this._eventButton&&(this._moved&&a.suppressClick(),this.reset());}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Ko extends Ho{mousedown(e,t){super.mousedown(e,t),this._lastPoint&&(this._active=!0);}_correctButton(e,t){return 0===t&&!e.ctrlKey}_move(e,t){return {around:t,panDelta:t.sub(e)}}}class Yo extends Ho{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=.8*(t.x-e.x);if(i)return this._active=!0,{bearingDelta:i}}contextmenu(e){e.preventDefault();}}class Jo extends Ho{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=-.5*(t.y-e.y);if(i)return this._active=!0,{pitchDelta:i}}contextmenu(e){e.preventDefault();}}class Qo{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._minTouches=1,this._clickTolerance=i.clickTolerance||1,this.reset(),e.bindAll([\"_addTouchPanBlocker\",\"_showTouchPanBlockerAlert\"],this);}reset(){this._active=!1,this._touches={},this._sum=new e.pointGeometry(0,0);}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active&&!(i.length<this._minTouches)){if(this._map._cooperativeGestures&&!this._map.isMoving()){if(1===i.length)return void this._showTouchPanBlockerAlert();\"hidden\"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"hidden\",clearTimeout(this._alertTimer));}return e.preventDefault(),this._calculateTransform(e,t,i)}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&i.length<this._minTouches&&this.reset();}touchcancel(){this.reset();}_calculateTransform(t,i,o){o.length>0&&(this._active=!0);const r=Vo(o,i),n=new e.pointGeometry(0,0),a=new e.pointGeometry(0,0);let s=0;for(const e in r){const t=r[e],i=this._touches[e];i&&(n._add(t),a._add(t.sub(i)),s++,r[e]=t);}if(this._touches=r,s<this._minTouches||!a.mag())return;const l=a.div(s);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:n.div(s),panDelta:l}}enable(){this._enabled=!0,this._map._cooperativeGestures&&(this._addTouchPanBlocker(),this._el.classList.add(\"mapboxgl-touch-pan-blocker-override\",\"mapboxgl-scrollable-page\"));}disable(){this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove(),this._el.classList.remove(\"mapboxgl-touch-pan-blocker-override\",\"mapboxgl-scrollable-page\")),this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}_addTouchPanBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=a.create(\"div\",\"mapboxgl-touch-pan-blocker\",this._map._container),this._alertContainer.textContent=this._map._getUIString(\"TouchPanBlocker.Message\"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`);}_showTouchPanBlockerAlert(){\"hidden\"===this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"visible\"),this._alertContainer.classList.add(\"mapboxgl-touch-pan-blocker-show\"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove(\"mapboxgl-touch-pan-blocker-show\");}),500);}}class er{constructor(){this.reset();}reset(){this._active=!1,delete this._firstTwoTouches;}_start(e){}_move(e,t,i){return {}}touchstart(e,t,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([t[0],t[1]]));}touchmove(e,t,i){if(!this._firstTwoTouches)return;e.preventDefault();const[o,r]=this._firstTwoTouches,n=tr(i,t,o),a=tr(i,t,r);if(!n||!a)return;const s=this._aroundCenter?null:n.add(a).div(2);return this._move([n,a],s,e)}touchend(e,t,i){if(!this._firstTwoTouches)return;const[o,r]=this._firstTwoTouches,n=tr(i,t,o),s=tr(i,t,r);n&&s||(this._active&&a.suppressClick(),this.reset());}touchcancel(){this.reset();}enable(e){this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}function tr(e,t,i){for(let o=0;o<e.length;o++)if(e[o].identifier===i)return t[o]}function ir(e,t){return Math.log(e/t)/Math.LN2}class or extends er{reset(){super.reset(),delete this._distance,delete this._startDistance;}_start(e){this._startDistance=this._distance=e[0].dist(e[1]);}_move(e,t){const i=this._distance;if(this._distance=e[0].dist(e[1]),this._active||!(Math.abs(ir(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:ir(this._distance,i),pinchAround:t}}}function rr(e,t){return 180*e.angleWith(t)/Math.PI}class nr extends er{reset(){super.reset(),delete this._minDiameter,delete this._startVector,delete this._vector;}_start(e){this._startVector=this._vector=e[0].sub(e[1]),this._minDiameter=e[0].dist(e[1]);}_move(e,t){const i=this._vector;if(this._vector=e[0].sub(e[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:rr(this._vector,i),pinchAround:t}}_isBelowThreshold(e){this._minDiameter=Math.min(this._minDiameter,e.mag());const t=25/(Math.PI*this._minDiameter)*360,i=rr(e,this._startVector);return Math.abs(i)<t}}function ar(e){return Math.abs(e.y)>Math.abs(e.x)}class sr extends er{constructor(e){super(),this._map=e;}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}_start(e){this._lastPoints=e,ar(e[0].sub(e[1]))&&(this._valid=!1);}_move(e,t,i){const o=e[0].sub(this._lastPoints[0]),r=e[1].sub(this._lastPoints[1]);if(!(this._map._cooperativeGestures&&i.touches.length<3)&&(this._valid=this.gestureBeginsVertically(o,r,i.timeStamp),this._valid))return this._lastPoints=e,this._active=!0,{pitchDelta:(o.y+r.y)/2*-.5}}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const o=e.mag()>=2,r=t.mag()>=2;if(!o&&!r)return;if(!o||!r)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const n=e.y>0==t.y>0;return ar(e)&&ar(t)&&n}}const lr={panStep:100,bearingStep:15,pitchStep:10};class cr{constructor(){const e=lr;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1;}blur(){this.reset();}reset(){this._active=!1;}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,o=0,r=0,n=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?o=1:(e.preventDefault(),n=-1);break;case 40:e.shiftKey?o=-1:(e.preventDefault(),n=1);break;default:return}return this._rotationDisabled&&(i=0,o=0),{cameraAnimation:a=>{const s=a.getZoom();a.easeTo({duration:300,easeId:\"keyboardHandler\",easing:hr,zoom:t?Math.round(s)+t*(e.shiftKey?2:1):s,bearing:a.getBearing()+i*this._bearingStep,pitch:a.getPitch()+o*this._pitchStep,offset:[-r*this._panStep,-n*this._panStep],center:a.getCenter()},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function hr(e){return e*(2-e)}const ur=4.000244140625;class _r{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._handler=i,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,e.bindAll([\"_onTimeout\",\"_addScrollZoomBlocker\",\"_showBlockerAlert\",\"_isFullscreen\"],this);}setZoomRate(e){this._defaultZoomRate=e;}setWheelZoomRate(e){this._wheelZoomRate=e;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around,this._map._cooperativeGestures&&this._addScrollZoomBlocker());}disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove()));}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!(t.ctrlKey||t.metaKey||this.isZooming()||this._isFullscreen()))return void this._showBlockerAlert();\"hidden\"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"hidden\",clearTimeout(this._alertTimer));}let i=t.deltaMode===e.window.WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const o=e.exported.now(),r=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%ur==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":r>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(r*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),t.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=t,this._delta-=i,this._active||this._start(t)),t.preventDefault();}_onTimeout(e){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(e);}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const t=a.mousePos(this._el,e);this._aroundPoint=this._aroundCenter?this._map.transform.centerPoint:t,this._aroundCoord=this._map.transform.pointCoordinate3D(this._aroundPoint),this._targetZoom=void 0,this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const t=this._map.transform,i=()=>t._terrainEnabled()&&this._aroundCoord?t.computeZoomRelativeTo(this._aroundCoord):t.zoom;if(0!==this._delta){const e=\"wheel\"===this._type&&Math.abs(this._delta)>ur?this._wheelZoomRate:this._defaultZoomRate;let o=2/(1+Math.exp(-Math.abs(this._delta*e)));this._delta<0&&0!==o&&(o=1/o);const r=i(),n=Math.pow(2,r),a=\"number\"==typeof this._targetZoom?t.zoomScale(this._targetZoom):n;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(a*o))),\"wheel\"===this._type&&(this._startZoom=i(),this._easing=this._smoothOutEasing(200)),this._delta=0;}const o=\"number\"==typeof this._targetZoom?this._targetZoom:i(),r=this._startZoom,n=this._easing;let a,s=!1;if(\"wheel\"===this._type&&r&&n){const t=Math.min((e.exported.now()-this._lastWheelEventTime)/200,1),i=n(t);a=e.number(r,o,i),t<1?this._frameId||(this._frameId=!0):s=!0;}else a=o,s=!0;return this._active=!0,s&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!s,zoomDelta:a-i(),around:this._aroundPoint,aroundCoord:this._aroundCoord,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let i=e.ease;if(this._prevEase){const t=this._prevEase,o=(e.exported.now()-t.start)/t.duration,r=t.easing(o+.01)-t.easing(o),n=.27/Math.sqrt(r*r+1e-4)*.01,a=Math.sqrt(.0729-n*n);i=e.bezier(n,a,.25,1);}return this._prevEase={start:e.exported.now(),duration:t,easing:i},i}blur(){this.reset();}reset(){this._active=!1;}_addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=a.create(\"div\",\"mapboxgl-scroll-zoom-blocker\",this._map._container),this._alertContainer.textContent=/(Mac|iPad)/i.test(e.window.navigator.userAgent)?this._map._getUIString(\"ScrollZoomBlocker.CmdMessage\"):this._map._getUIString(\"ScrollZoomBlocker.CtrlMessage\"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`);}_isFullscreen(){return !!e.window.document.fullscreenElement||!!e.window.document.webkitFullscreenElement}_showBlockerAlert(){\"hidden\"===this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"visible\"),this._alertContainer.classList.add(\"mapboxgl-scroll-zoom-blocker-show\"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove(\"mapboxgl-scroll-zoom-blocker-show\");}),200);}}class dr{constructor(e,t){this._clickZoom=e,this._tapZoom=t;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class pr{constructor(){this.reset();}reset(){this._active=!1;}blur(){this.reset();}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:i.getZoom()+(e.shiftKey?-1:1),around:i.unproject(t)},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class mr{constructor(){this._tap=new qo({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset();}touchstart(e,t,i){this._swipePoint||(this._tapTime&&e.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?i.length>0&&(this._swipePoint=t[0],this._swipeTouch=i[0].identifier):this._tap.touchstart(e,t,i));}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const o=t[0],r=o.y-this._swipePoint.y;return this._swipePoint=o,e.preventDefault(),this._active=!0,{zoomDelta:r/128}}}else this._tap.touchmove(e,t,i);}touchend(e,t,i){this._tapTime?this._swipePoint&&0===i.length&&this.reset():this._tap.touchend(e,t,i)&&(this._tapTime=e.timeStamp);}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class fr{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i;}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class gr{constructor(e,t,i){this._pitchWithRotate=e.pitchWithRotate,this._mouseRotate=t,this._mousePitch=i;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class vr{constructor(e,t,i,o){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}const xr=e=>e.zoom||e.drag||e.pitch||e.rotate;class yr extends e.Event{}class br{constructor(){this.constants=[1,1,.01],this.radius=0;}setup(t,i){const o=e.sub([],i,t);this.radius=e.length(o[2]<0?e.div([],o,this.constants):[o[0],o[1],0]);}projectRay(t){e.div(t,t,this.constants),e.normalize(t,t),e.mul$1(t,t,this.constants);const i=e.scale$2([],t,this.radius);if(i[2]>0){const t=e.scale$2([],[0,0,1],e.dot(i,[0,0,1])),o=e.scale$2([],e.normalize([],[i[0],i[1],0]),this.radius),r=e.add([],i,e.scale$2([],e.sub([],e.add([],o,t),i),2));i[0]=r[0],i[1]=r[1];}return i}}function wr(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta}class Tr{constructor(t,i){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ko(t),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._trackingEllipsoid=new br,this._dragOrigin=null,this._eventsInProgress={},this._addDefaultHandlers(i),e.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);const o=this._el;this._listeners=[[o,\"touchstart\",{passive:!0}],[o,\"touchmove\",{passive:!1}],[o,\"touchend\",void 0],[o,\"touchcancel\",void 0],[o,\"mousedown\",void 0],[o,\"mousemove\",void 0],[o,\"mouseup\",void 0],[e.window.document,\"mousemove\",{capture:!0}],[e.window.document,\"mouseup\",void 0],[o,\"mouseover\",void 0],[o,\"mouseout\",void 0],[o,\"dblclick\",void 0],[o,\"click\",void 0],[o,\"keydown\",{capture:!1}],[o,\"keyup\",void 0],[o,\"wheel\",{passive:!1}],[o,\"contextmenu\",void 0],[e.window,\"blur\",void 0]];for(const[t,i,o]of this._listeners)t.addEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,o);}destroy(){for(const[t,i,o]of this._listeners)t.removeEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,o);}_addDefaultHandlers(e){const t=this._map,i=t.getCanvasContainer();this._add(\"mapEvent\",new Go(t,e));const o=t.boxZoom=new Zo(t,e);this._add(\"boxZoom\",o);const r=new Xo,n=new pr;t.doubleClickZoom=new dr(n,r),this._add(\"tapZoom\",r),this._add(\"clickZoom\",n);const a=new mr;this._add(\"tapDragZoom\",a);const s=t.touchPitch=new sr(t);this._add(\"touchPitch\",s);const l=new Yo(e),c=new Jo(e);t.dragRotate=new gr(e,l,c),this._add(\"mouseRotate\",l,[\"mousePitch\"]),this._add(\"mousePitch\",c,[\"mouseRotate\"]);const h=new Ko(e),u=new Qo(t,e);t.dragPan=new fr(i,h,u),this._add(\"mousePan\",h),this._add(\"touchPan\",u,[\"touchZoom\",\"touchRotate\"]);const _=new nr,d=new or;t.touchZoomRotate=new vr(i,d,_,a),this._add(\"touchRotate\",_,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",d,[\"touchPan\",\"touchRotate\"]),this._add(\"blockableMapEvent\",new jo(t));const p=t.scrollZoom=new _r(t,this);this._add(\"scrollZoom\",p,[\"mousePan\"]);const m=t.keyboard=new cr;this._add(\"keyboard\",m);for(const i of [\"boxZoom\",\"doubleClickZoom\",\"tapDragZoom\",\"touchPitch\",\"dragRotate\",\"dragPan\",\"touchZoomRotate\",\"scrollZoom\",\"keyboard\"])e.interactive&&e[i]&&t[i].enable(e[i]);}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t;}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[];}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean(xr(this._eventsInProgress))||this.isZooming()}_blockedByActive(e,t,i){for(const o in e)if(o!==i&&(!t||t.indexOf(o)<0))return !0;return !1}handleWindowEvent(e){this.handleEvent(e,`${e.type}Window`);}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}handleEvent(e,t){this._updatingCamera=!0;const i=\"renderFrame\"===e.type,o=i?void 0:e,r={needsRenderFrame:!1},n={},s={},l=e.touches?this._getMapTouches(e.touches):void 0,c=l?a.touchPos(this._el,l):i?void 0:a.mousePos(this._el,e);for(const{handlerName:i,handler:a,allowed:h}of this._handlers){if(!a.isEnabled())continue;let u;this._blockedByActive(s,h,i)?a.reset():a[t||e.type]&&(u=a[t||e.type](e,c,l),this.mergeHandlerResult(r,n,u,i,o),u&&u.needsRenderFrame&&this._triggerRenderFrame()),(u||a.isActive())&&(s[i]=a);}const h={};for(const e in this._previousActiveHandlers)s[e]||(h[e]=o);this._previousActiveHandlers=s,(Object.keys(h).length||wr(r))&&(this._changes.push([r,n,h]),this._triggerRenderFrame()),(Object.keys(s).length||wr(r))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:u}=r;u&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],u(this._map));}mergeHandlerResult(t,i,o,r,n){if(!o)return;e.extend(t,o);const a={handlerName:r,originalEvent:o.originalEvent||n};void 0!==o.zoomDelta&&(i.zoom=a),void 0!==o.panDelta&&(i.drag=a),void 0!==o.pitchDelta&&(i.pitch=a),void 0!==o.bearingDelta&&(i.rotate=a);}_applyChanges(){const t={},i={},o={};for(const[r,n,a]of this._changes)r.panDelta&&(t.panDelta=(t.panDelta||new e.pointGeometry(0,0))._add(r.panDelta)),r.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+r.zoomDelta),r.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+r.bearingDelta),r.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+r.pitchDelta),void 0!==r.around&&(t.around=r.around),void 0!==r.aroundCoord&&(t.aroundCoord=r.aroundCoord),void 0!==r.pinchAround&&(t.pinchAround=r.pinchAround),r.noInertia&&(t.noInertia=r.noInertia),e.extend(i,n),e.extend(o,a);this._updateMapTransform(t,i,o),this._changes=[];}_updateMapTransform(t,i,o){const r=this._map,n=r.transform,a=e=>[e.x,e.y,e.z];if((e=>{const t=this._eventsInProgress.drag;return t&&!this._handlersById[t.handlerName].isActive()})()&&!wr(t)){const e=n.zoom;n.cameraElevationReference=\"sea\",n.recenterOnTerrain(),n.cameraElevationReference=\"ground\",e!==n.zoom&&this._map._update(!0);}if(!wr(t))return this._fireEvents(i,o,!0);let{panDelta:s,zoomDelta:l,bearingDelta:c,pitchDelta:h,around:u,aroundCoord:_,pinchAround:d}=t;void 0!==d&&(u=d),(e=>i.drag&&!this._eventsInProgress.drag)()&&u&&(this._dragOrigin=a(n.pointCoordinate3D(u)),this._trackingEllipsoid.setup(n._camera.position,this._dragOrigin)),n.cameraElevationReference=\"sea\",r._stop(!0),u=u||r.transform.centerPoint,c&&(n.bearing+=c),h&&(n.pitch+=h),n._updateCameraState();const p=[0,0,0];if(s){const e=n.pointCoordinate(u),t=n.pointCoordinate(u.sub(s));e&&t&&(p[0]=t.x-e.x,p[1]=t.y-e.y);}const m=n.zoom,f=[0,0,0];if(l){const t=a(_||n.pointCoordinate3D(u)),i={dir:e.normalize([],e.sub([],t,n._camera.position))};if(i.dir[2]<0){const o=n.zoomDeltaToMovement(t,l);e.scale$2(f,i.dir,o);}}const g=e.add(p,p,f);n._translateCameraConstrained(g),l&&Math.abs(n.zoom-m)>1e-4&&n.recenterOnTerrain(),n.cameraElevationReference=\"ground\",this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(i,o,!0);}_fireEvents(t,i,o){const r=xr(this._eventsInProgress),n=xr(t),a={};for(const e in t){const{originalEvent:i}=t[e];this._eventsInProgress[e]||(a[`${e}start`]=i),this._eventsInProgress[e]=t[e];}!r&&n&&this._fireEvent(\"movestart\",n.originalEvent);for(const e in a)this._fireEvent(e,a[e]);n&&this._fireEvent(\"move\",n.originalEvent);for(const e in t){const{originalEvent:i}=t[e];this._fireEvent(e,i);}const s={};let l;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:o}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],l=i[t]||o,s[`${e}end`]=l);}for(const e in s)this._fireEvent(e,s[e]);const c=xr(this._eventsInProgress);if(o&&(r||n)&&!c){this._updatingCamera=!0;const t=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap<e&&e<this._bearingSnap;t?(i(t.bearing||this._map.getBearing())&&(t.bearing=0),this._map.easeTo(t,{originalEvent:l})):(this._map.fire(new e.Event(\"moveend\",{originalEvent:l})),i(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1;}}_fireEvent(t,i){this._map.fire(new e.Event(t,i?{originalEvent:i}:{}));}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((e=>{delete this._frameId,this.handleEvent(new yr(\"renderFrame\",{timeStamp:e})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}const Er=\"map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.\";class Cr extends e.Evented{constructor(t,i){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=i.bearingSnap,e.bindAll([\"_renderFrameCallback\"],this);}getCenter(){return new e.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}panBy(t,i,o){return t=e.pointGeometry.convert(t).mult(-1),this.panTo(this.transform.center,e.extend({offset:t},i),o)}panTo(t,i,o){return this.easeTo(e.extend({center:t},i),o)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(t,i,o){return this.easeTo(e.extend({zoom:t},i),o)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(t,i,o){return this.easeTo(e.extend({bearing:t},i),o)}resetNorth(t,i){return this.rotateTo(0,e.extend({duration:1e3},t),i),this}resetNorthPitch(t,i){return this.easeTo(e.extend({bearing:0,pitch:0,duration:1e3},t),i),this}snapToNorth(e,t){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(e,t):this}getPitch(){return this.transform.pitch}setPitch(e,t){return this.jumpTo({pitch:e},t),this}cameraForBounds(t,i){t=e.LngLatBounds.convert(t);const o=i&&i.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),o,i)}_extendCameraOptions(t){const i={top:0,bottom:0,right:0,left:0};if(\"number\"==typeof(t=e.extend({padding:i,offset:[0,0],maxZoom:this.transform.maxZoom},t)).padding){const e=t.padding;t.padding={top:e,bottom:e,right:e,left:e};}return t.padding=e.extend(i,t.padding),t}_cameraForBoxAndBearing(t,i,o,r){const n=this._extendCameraOptions(r),a=this.transform,s=a.padding,l=a.project(e.LngLat.convert(t)),c=a.project(e.LngLat.convert(i)),h=l.rotate(-e.degToRad(o)),u=c.rotate(-e.degToRad(o)),_=new e.pointGeometry(Math.max(h.x,u.x),Math.max(h.y,u.y)),d=new e.pointGeometry(Math.min(h.x,u.x),Math.min(h.y,u.y)),p=_.sub(d),m=(a.width-(s.left+s.right+n.padding.left+n.padding.right))/p.x,f=(a.height-(s.top+s.bottom+n.padding.top+n.padding.bottom))/p.y;if(f<0||m<0)return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");const g=Math.min(a.scaleZoom(a.scale*Math.min(m,f)),n.maxZoom),v=\"number\"==typeof n.offset.x?new e.pointGeometry(n.offset.x,n.offset.y):e.pointGeometry.convert(n.offset),x=new e.pointGeometry((n.padding.left-n.padding.right)/2,(n.padding.top-n.padding.bottom)/2).rotate(o*Math.PI/180),y=v.add(x).mult(a.scale/a.zoomScale(g));return {center:a.unproject(l.add(c).div(2).sub(y)),zoom:g,bearing:o}}_cameraForBox(t,i,o,r,n){const a=this._extendCameraOptions(n);o=o||0,r=r||0,t=e.LngLat.convert(t),i=e.LngLat.convert(i);const s=this.transform.clone();s.padding=a.padding;const l=this.getFreeCameraOptions(),c=new e.LngLat(.5*(t.lng+i.lng),.5*(t.lat+i.lat)),h=.5*(o+r);if(s._camera.position[2]<e.mercatorZfromAltitude(h,c.lat))return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");l.lookAtPoint(c),s.setFreeCameraOptions(l);const u=e.MercatorCoordinate.fromLngLat(t),_=e.MercatorCoordinate.fromLngLat(i),d=s.pointRayIntersection(s.centerPoint,h),p=[(m=s.rayIntersectionCoordinate(d)).x,m.y,m.z];var m;const f=s.screenPointToMercatorRay(s.centerPoint),g=\"globe\"!==s.projection.name;let v,x=0;do{const t=Math.floor(s.zoom),i=1<<t,n=Math.min(i*u.x,i*_.x),a=Math.min(i*u.y,i*_.y),l=Math.max(i*u.x,i*_.x),c=Math.max(i*u.y,i*_.y),h=new e.Aabb([n,a,o],[l,c,r]),d=e.Frustum.fromInvProjectionMatrix(s.invProjMatrix,s.worldSize,t,g);if(2!==h.intersects(d)){v&&(s._camera.position=e.scaleAndAdd([],s._camera.position,f.dir,-v),s._updateStateFromCamera());break}const m=e.sub([],s._camera.position,p);v=.5*e.length(m),s._camera.position=e.scaleAndAdd([],s._camera.position,f.dir,v);try{s._updateStateFromCamera();}catch(t){return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\")}}while(++x<10);return {center:s.center,zoom:s.zoom,bearing:s.bearing,pitch:s.pitch}}fitBounds(e,t,i){return this._fitInternal(this.cameraForBounds(e,t),t,i)}_raycastElevationBox(t,i){const o=this.transform.elevation;if(!o)return;const r=new e.pointGeometry(t.x,i.y),n=new e.pointGeometry(i.x,t.y),a=o.pointCoordinate(t);if(!a)return;const s=o.pointCoordinate(i);if(!s)return;const l=o.pointCoordinate(r);if(!l)return;const c=o.pointCoordinate(n);if(!c)return;const h=new e.MercatorCoordinate(a[0],a[1]).toLngLat(),u=new e.MercatorCoordinate(s[0],s[1]).toLngLat(),_=new e.MercatorCoordinate(l[0],l[1]).toLngLat(),d=new e.MercatorCoordinate(c[0],c[1]).toLngLat(),p=Math.min(h.lng,Math.min(u.lng,Math.min(_.lng,d.lng))),m=Math.min(h.lat,Math.min(u.lat,Math.min(_.lat,d.lat))),f=Math.max(h.lng,Math.max(u.lng,Math.max(_.lng,d.lng))),g=Math.max(h.lat,Math.max(u.lat,Math.max(_.lat,d.lat))),v=Math.min(a[3],Math.min(s[3],Math.min(l[3],c[3]))),x=Math.max(a[3],Math.max(s[3],Math.max(l[3],c[3])));return {minLngLat:new e.LngLat(p,m),maxLngLat:new e.LngLat(f,g),minAltitude:v,maxAltitude:x}}fitScreenCoordinates(t,i,o,r,n){let a,s,l,c;const h=e.pointGeometry.convert(t),u=e.pointGeometry.convert(i),_=this._raycastElevationBox(h,u);if(_)a=_.minLngLat,s=_.maxLngLat,l=_.minAltitude,c=_.maxAltitude;else {if(this.transform.anyCornerOffEdge(h,u))return this;a=this.transform.pointLocation(h),s=this.transform.pointLocation(u);}return this._fitInternal(0===this.transform.pitch?this._cameraForBoxAndBearing(this.transform.pointLocation(e.pointGeometry.convert(t)),this.transform.pointLocation(e.pointGeometry.convert(i)),o,r):this._cameraForBox(a,s,l,c,r),r,n)}_fitInternal(t,i,o){return t?(delete(i=e.extend(t,i)).padding,i.linear?this.easeTo(i,o):this.flyTo(i,o)):this}jumpTo(t,i){this.stop();const o=t.preloadOnly?this.transform.clone():this.transform;let r=!1,n=!1,a=!1;return \"zoom\"in t&&o.zoom!==+t.zoom&&(r=!0,o.zoom=+t.zoom),void 0!==t.center&&(o.center=e.LngLat.convert(t.center)),\"bearing\"in t&&o.bearing!==+t.bearing&&(n=!0,o.bearing=+t.bearing),\"pitch\"in t&&o.pitch!==+t.pitch&&(a=!0,o.pitch=+t.pitch),null==t.padding||o.isPaddingEqual(t.padding)||(o.padding=t.padding),t.preloadOnly?(this._preloadTiles(o),this):(this.fire(new e.Event(\"movestart\",i)).fire(new e.Event(\"move\",i)),r&&this.fire(new e.Event(\"zoomstart\",i)).fire(new e.Event(\"zoom\",i)).fire(new e.Event(\"zoomend\",i)),n&&this.fire(new e.Event(\"rotatestart\",i)).fire(new e.Event(\"rotate\",i)).fire(new e.Event(\"rotateend\",i)),a&&this.fire(new e.Event(\"pitchstart\",i)).fire(new e.Event(\"pitch\",i)).fire(new e.Event(\"pitchend\",i)),this.fire(new e.Event(\"moveend\",i)))}getFreeCameraOptions(){return this.transform.projection.supportsFreeCamera||e.warnOnce(Er),this.transform.getFreeCameraOptions()}setFreeCameraOptions(t,i){const o=this.transform;if(!o.projection.supportsFreeCamera)return void e.warnOnce(Er);this.stop();const r=o.zoom,n=o.pitch,a=o.bearing;o.setFreeCameraOptions(t);const s=r!==o.zoom,l=n!==o.pitch,c=a!==o.bearing;return this.fire(new e.Event(\"movestart\",i)).fire(new e.Event(\"move\",i)),s&&this.fire(new e.Event(\"zoomstart\",i)).fire(new e.Event(\"zoom\",i)).fire(new e.Event(\"zoomend\",i)),c&&this.fire(new e.Event(\"rotatestart\",i)).fire(new e.Event(\"rotate\",i)).fire(new e.Event(\"rotateend\",i)),l&&this.fire(new e.Event(\"pitchstart\",i)).fire(new e.Event(\"pitch\",i)).fire(new e.Event(\"pitchend\",i)),this.fire(new e.Event(\"moveend\",i)),this}easeTo(t,i){this._stop(!1,t.easeId),(!1===(t=e.extend({offset:[0,0],duration:500,easing:e.ease},t)).animate||!t.essential&&e.exported.prefersReducedMotion)&&(t.duration=0);const o=this.transform,r=this.getZoom(),n=this.getBearing(),a=this.getPitch(),s=this.getPadding(),l=\"zoom\"in t?+t.zoom:r,c=\"bearing\"in t?this._normalizeBearing(t.bearing,n):n,h=\"pitch\"in t?+t.pitch:a,u=\"padding\"in t?t.padding:o.padding,_=e.pointGeometry.convert(t.offset);let d=o.centerPoint.add(_);const p=\"globe\"===o.projection.name?o.pointCoordinate(d).toLngLat():o.pointLocation(d),m=e.LngLat.convert(t.center||p);this._normalizeCenter(m);const f=o.project(p),g=o.project(m).sub(f),v=o.zoomScale(l-r);let x,y;t.around&&(x=e.LngLat.convert(t.around),y=o.locationPoint(x));const b=this._zooming||l!==r,w=this._rotating||n!==c,T=this._pitching||h!==a,E=!o.isPaddingEqual(u),C=o=>p=>{if(b&&(o.zoom=e.number(r,l,p)),w&&(o.bearing=e.number(n,c,p)),T&&(o.pitch=e.number(a,h,p)),E&&(o.interpolatePadding(s,u,p),d=o.centerPoint.add(_)),x)o.setLocationAtPoint(x,y);else {const e=o.zoomScale(o.zoom-r),t=l>r?Math.min(2,v):Math.max(.5,v),i=Math.pow(t,1-p),n=o.unproject(f.add(g.mult(p*i)).mult(e));o.setLocationAtPoint(o.renderWorldCopies?n.wrap():n,d);}return t.preloadOnly||this._fireMoveEvents(i),o};if(t.preloadOnly){const e=this._emulate(C,t.duration,o);return this._preloadTiles(e),this}const M={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=b,this._rotating=w,this._pitching=T,this._padding=E,this._easeId=t.easeId,this._prepareEase(i,t.noMoveStart,M),this._ease(C(o),(e=>{o.recenterOnTerrain(),this._afterEase(i,e);}),t),this}_prepareEase(t,i,o={}){this._moving=!0,this.transform.cameraElevationReference=\"sea\",i||o.moving||this.fire(new e.Event(\"movestart\",t)),this._zooming&&!o.zooming&&this.fire(new e.Event(\"zoomstart\",t)),this._rotating&&!o.rotating&&this.fire(new e.Event(\"rotatestart\",t)),this._pitching&&!o.pitching&&this.fire(new e.Event(\"pitchstart\",t));}_fireMoveEvents(t){this.fire(new e.Event(\"move\",t)),this._zooming&&this.fire(new e.Event(\"zoom\",t)),this._rotating&&this.fire(new e.Event(\"rotate\",t)),this._pitching&&this.fire(new e.Event(\"pitch\",t));}_afterEase(t,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId,this.transform.cameraElevationReference=\"ground\";const o=this._zooming,r=this._rotating,n=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,o&&this.fire(new e.Event(\"zoomend\",t)),r&&this.fire(new e.Event(\"rotateend\",t)),n&&this.fire(new e.Event(\"pitchend\",t)),this.fire(new e.Event(\"moveend\",t));}flyTo(t,i){if(!t.essential&&e.exported.prefersReducedMotion){const o=e.pick(t,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(o,i)}this.stop(),t=e.extend({offset:[0,0],speed:1.2,curve:1.42,easing:e.ease},t);const o=this.transform,r=this.getZoom(),n=this.getBearing(),a=this.getPitch(),s=this.getPadding(),l=\"zoom\"in t?e.clamp(+t.zoom,o.minZoom,o.maxZoom):r,c=\"bearing\"in t?this._normalizeBearing(t.bearing,n):n,h=\"pitch\"in t?+t.pitch:a,u=\"padding\"in t?t.padding:o.padding,_=o.zoomScale(l-r),d=e.pointGeometry.convert(t.offset);let p=o.centerPoint.add(d);const m=o.pointLocation(p),f=e.LngLat.convert(t.center||m);this._normalizeCenter(f);const g=o.project(m),v=o.project(f).sub(g);let x=t.curve;const y=Math.max(o.width,o.height),b=y/_,w=v.mag();if(\"minZoom\"in t){const i=e.clamp(Math.min(t.minZoom,r,l),o.minZoom,o.maxZoom),n=y/o.zoomScale(i-r);x=Math.sqrt(n/w*2);}const T=x*x;function E(e){const t=(b*b-y*y+(e?-1:1)*T*T*w*w)/(2*(e?b:y)*T*w);return Math.log(Math.sqrt(t*t+1)-t)}function C(e){return (Math.exp(e)-Math.exp(-e))/2}function M(e){return (Math.exp(e)+Math.exp(-e))/2}const S=E(0);let I=function(e){return M(S)/M(S+x*e)},z=function(e){return y*((M(S)*(C(t=S+x*e)/M(t))-C(S))/T)/w;var t;},D=(E(1)-S)/x;if(Math.abs(w)<1e-6||!isFinite(D)){if(Math.abs(y-b)<1e-6)return this.easeTo(t,i);const e=b<y?-1:1;D=Math.abs(Math.log(b/y))/x,z=function(){return 0},I=function(t){return Math.exp(e*x*t)};}t.duration=\"duration\"in t?+t.duration:1e3*D/(\"screenSpeed\"in t?+t.screenSpeed/x:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0);const P=n!==c,A=h!==a,L=!o.isPaddingEqual(u),R=o=>_=>{const m=_*D,x=1/I(m);o.zoom=1===_?l:r+o.scaleZoom(x),P&&(o.bearing=e.number(n,c,_)),A&&(o.pitch=e.number(a,h,_)),L&&(o.interpolatePadding(s,u,_),p=o.centerPoint.add(d));const y=1===_?f:o.unproject(g.add(v.mult(z(m))).mult(x));return o.setLocationAtPoint(o.renderWorldCopies?y.wrap():y,p),o._updateCenterElevation(),t.preloadOnly||this._fireMoveEvents(i),o};if(t.preloadOnly){const e=this._emulate(R,t.duration,o);return this._preloadTiles(e),this}return this._zooming=!0,this._rotating=P,this._pitching=A,this._padding=L,this._prepareEase(i,!1),this._ease(R(o),(()=>this._afterEase(i)),t),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(e,t){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const e=this._onEaseEnd;delete this._onEaseEnd,e.call(this,t);}if(!e){const e=this.handlers;e&&e.stop(!1);}return this}_ease(t,i,o){!1===o.animate||0===o.duration?(t(1),i()):(this._easeStart=e.exported.now(),this._easeOptions=o,this._onEaseFrame=t,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_renderFrameCallback(){const t=Math.min((e.exported.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();}_normalizeBearing(t,i){t=e.wrap(t,-180,180);const o=Math.abs(t-i);return Math.abs(t-360-i)<o&&(t-=360),Math.abs(t+360-i)<o&&(t+=360),t}_normalizeCenter(e){const t=this.transform;if(!t.renderWorldCopies||t.maxBounds)return;const i=e.lng-t.center.lng;e.lng+=i>180?-360:i<-180?360:0;}_emulate(e,t,i){const o=Math.ceil(15*t/1e3),r=[],n=e(i.clone());for(let e=0;e<=o;e++){const t=n(e/o);r.push(t.clone());}return r}}class Mr{constructor(t={}){this.options=t,e.bindAll([\"_toggleAttribution\",\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this);}getDefaultPosition(){return \"bottom-right\"}onAdd(e){const t=this.options&&this.options.compact;return this._map=e,this._container=a.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._compactButton=a.create(\"button\",\"mapboxgl-ctrl-attrib-button\",this._container),a.create(\"span\",\"mapboxgl-ctrl-icon\",this._compactButton).setAttribute(\"aria-hidden\",!0),this._compactButton.type=\"button\",this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=a.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),this._innerContainer.setAttribute(\"role\",\"list\"),t&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===t&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container}onRemove(){this._container.remove(),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0;}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.setAttribute(\"aria-label\",i),e.removeAttribute(\"title\"),e.firstElementChild&&e.firstElementChild.setAttribute(\"title\",i);}_toggleAttribution(){this._container.classList.contains(\"mapboxgl-compact-show\")?(this._container.classList.remove(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-expanded\",\"false\")):(this._container.classList.add(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-expanded\",\"true\"));}_updateEditLink(){let t=this._editLink;t||(t=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));const i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||e.config.ACCESS_TOKEN}];if(t){const o=i.reduce(((e,t,o)=>(t.value&&(e+=`${t.key}=${t.value}${o<i.length-1?\"&\":\"\"}`),e)),\"?\");t.href=`${e.config.FEEDBACK_URL}/${o}${this._map._hash?this._map._hash.getHashString(!0):\"\"}`,t.rel=\"noopener nofollow\",this._setElementTitle(t,\"MapFeedback\");}}_updateData(e){!e||\"metadata\"!==e.sourceDataType&&\"visibility\"!==e.sourceDataType&&\"style\"!==e.dataType||(this._updateAttributions(),this._updateEditLink());}_updateAttributions(){if(!this._map.style)return;let e=[];if(this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}const t=this._map.style._sourceCaches;for(const i in t){const o=t[i];if(o.used){const t=o.getSource();t.attribution&&e.indexOf(t.attribution)<0&&e.push(t.attribution);}}e.sort(((e,t)=>e.length-t.length)),e=e.filter(((t,i)=>{for(let o=i+1;o<e.length;o++)if(e[o].indexOf(t)>=0)return !1;return !0})),this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=[...this.options.customAttribution,...e]:e.unshift(this.options.customAttribution));const i=e.join(\" | \");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=i,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null);}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\",\"mapboxgl-compact-show\");}}class Sr{constructor(){e.bindAll([\"_updateLogo\"],this),e.bindAll([\"_updateCompact\"],this);}onAdd(e){this._map=e,this._container=a.create(\"div\",\"mapboxgl-ctrl\");const t=a.create(\"a\",\"mapboxgl-ctrl-logo\");return t.target=\"_blank\",t.rel=\"noopener nofollow\",t.href=\"https://www.mapbox.com/\",t.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),t.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(t),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact);}getDefaultPosition(){return \"bottom-left\"}_updateLogo(e){e&&\"metadata\"!==e.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\");}_logoRequired(){if(!this._map.style)return !0;const e=this._map.style._sourceCaches;if(0===Object.entries(e).length)return !0;for(const t in e){const i=e[t].getSource();if(i.hasOwnProperty(\"mapbox_logo\")&&!i.mapbox_logo)return !1}return !0}_updateCompact(){const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<250?t.classList.add(\"mapboxgl-compact\"):t.classList.remove(\"mapboxgl-compact\");}}}class Ir{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}function zr(t,i,o){if(t=new e.LngLat(t.lng,t.lat),i){const r=new e.LngLat(t.lng-360,t.lat),n=new e.LngLat(t.lng+360,t.lat),a=360*Math.ceil(Math.abs(t.lng-o.center.lng)/360),s=o.locationPoint(t).distSqr(i),l=i.x<0||i.y<0||i.x>o.width||i.y>o.height;o.locationPoint(r).distSqr(i)<s&&(l||Math.abs(r.lng-o.center.lng)<a)?t=r:o.locationPoint(n).distSqr(i)<s&&(l||Math.abs(n.lng-o.center.lng)<a)&&(t=n);}for(;Math.abs(t.lng-o.center.lng)>180;){const e=o.locationPoint(t);if(e.x>=0&&e.y>=0&&e.x<=o.width&&e.y<=o.height)break;t.lng>o.center.lng?t.lng-=360:t.lng+=360;}return t}const Dr={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};class Pr extends e.Evented{constructor(t,i){if(super(),(t instanceof e.window.HTMLElement||i)&&(t=e.extend({element:t},i)),e.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\",\"_onKeyPress\",\"_clearFadeTimer\"],this),this._anchor=t&&t.anchor||\"center\",this._color=t&&t.color||\"#3FB1CE\",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||\"auto\",this._pitchAlignment=t&&t.pitchAlignment&&\"auto\"!==t.pitchAlignment?t.pitchAlignment:this._rotationAlignment,this._updateMoving=()=>this._update(!0),t&&t.element)this._element=t.element,this._offset=e.pointGeometry.convert(t&&t.offset||[0,0]);else {this._defaultMarker=!0,this._element=a.create(\"div\");const i=41,o=27,r=a.createSVG(\"svg\",{display:\"block\",height:i*this._scale+\"px\",width:o*this._scale+\"px\",viewBox:`0 0 ${o} ${i}`},this._element),n=a.createSVG(\"radialGradient\",{id:\"shadowGradient\"},a.createSVG(\"defs\",{},r));a.createSVG(\"stop\",{offset:\"10%\",\"stop-opacity\":.4},n),a.createSVG(\"stop\",{offset:\"100%\",\"stop-opacity\":.05},n),a.createSVG(\"ellipse\",{cx:13.5,cy:34.8,rx:10.5,ry:5.25,fill:\"url(#shadowGradient)\"},r),a.createSVG(\"path\",{fill:this._color,d:\"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z\"},r),a.createSVG(\"path\",{opacity:.25,d:\"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z\"},r),a.createSVG(\"circle\",{fill:\"white\",cx:13.5,cy:13.5,r:5.5},r),this._offset=e.pointGeometry.convert(t&&t.offset||[0,-14]);}this._element.hasAttribute(\"aria-label\")||this._element.setAttribute(\"aria-label\",\"Map marker\"),this._element.classList.add(\"mapboxgl-marker\"),this._element.addEventListener(\"dragstart\",(e=>{e.preventDefault();})),this._element.addEventListener(\"mousedown\",(e=>{e.preventDefault();}));const o=this._element.classList;for(const e in Dr)o.remove(`mapboxgl-marker-anchor-${e}`);o.add(`mapboxgl-marker-anchor-${this._anchor}`),this._popup=null;}addTo(e){return e===this._map||(this.remove(),this._map=e,e.getCanvasContainer().appendChild(this._element),e.on(\"move\",this._updateMoving),e.on(\"moveend\",this._update),e.on(\"remove\",this._clearFadeTimer),e._addMarker(this),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick)),this}remove(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._updateMoving),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),this._map.off(\"remove\",this._clearFadeTimer),this._map._removeMarker(this),delete this._map),this._clearFadeTimer(),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(!0),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeAttribute(\"role\"),this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),e){if(!(\"offset\"in e.options)){const t=38.1,i=13.5,o=Math.sqrt(Math.pow(i,2)/2);e.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-t],\"bottom-left\":[o,-1*(t-i+o)],\"bottom-right\":[-o,-1*(t-i+o)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset;}this._popup=e,this._lngLat&&this._popup.setLngLat(this._lngLat),this._element.setAttribute(\"role\",\"button\"),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress),this._element.setAttribute(\"aria-expanded\",\"false\");}return this}_onKeyPress(e){const t=e.code,i=e.charCode||e.keyCode;\"Space\"!==t&&\"Enter\"!==t&&32!==i&&13!==i||this.togglePopup();}_onMapClick(e){const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup();}getPopup(){return this._popup}togglePopup(){const e=this._popup;return e?(e.isOpen()?(e.remove(),this._element.setAttribute(\"aria-expanded\",\"false\")):(e.addTo(this._map),this._element.setAttribute(\"aria-expanded\",\"true\")),this):this}_evaluateOpacity(){const e=this._pos?this._pos.sub(this._transformedOffset()):null;if(!this._withinScreenBounds(e))return void this._clearFadeTimer();const t=this._map.unproject(e);let i=!1;if(this._map.transform._terrainEnabled()&&this._map.getTerrain()){const e=this._map.getFreeCameraOptions();if(e.position){const o=e.position.toLngLat();i=o.distanceTo(t)<.9*o.distanceTo(this._lngLat);}}const o=(1-this._map._queryFogOpacity(t))*(i?.2:1);this._element.style.opacity=`${o}`,this._popup&&this._popup._setOpacity(`${o}`),this._fadeTimer=null;}_clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this._fadeTimer=null);}_withinScreenBounds(e){const t=this._map.transform;return !!e&&e.x>=0&&e.x<t.width&&e.y>=0&&e.y<t.height}_updateDOM(){const t=this._pos||new e.pointGeometry(0,0),i=this._calculatePitch(),o=this._calculateRotation();this._element.style.transform=`${Dr[this._anchor]} translate(${t.x}px, ${t.y}px) rotateX(${i}deg) rotateZ(${o}deg)`;}_calculatePitch(){return \"viewport\"===this._pitchAlignment||\"auto\"===this._pitchAlignment?0:\"map\"===this._pitchAlignment?this._map.getPitch():0}_calculateRotation(){return \"viewport\"===this._rotationAlignment||\"auto\"===this._rotationAlignment?this._rotation:\"map\"===this._rotationAlignment?this._rotation-this._map.getBearing():0}_update(t){e.window.cancelAnimationFrame(this._updateFrameId),this._map&&(this._map.transform.renderWorldCopies&&(this._lngLat=zr(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._transformedOffset()),!0===t?this._updateFrameId=e.window.requestAnimationFrame((()=>{this._element&&this._pos&&this._anchor&&(this._pos=this._pos.round(),this._updateDOM());})):this._pos=this._pos.round(),this._map._requestDomTask((()=>{this._map&&(this._element&&this._pos&&this._anchor&&this._updateDOM(),!this._map.getTerrain()&&!this._map.getFog()||this._fadeTimer||(this._fadeTimer=setTimeout(this._evaluateOpacity.bind(this),60)));})));}_transformedOffset(){if(!this._defaultMarker)return this._offset;const e=this._map.transform,t=this._offset.mult(this._scale);return \"map\"===this._rotationAlignment&&t._rotate(e.angle),\"map\"===this._pitchAlignment&&(t.y*=Math.cos(e._pitch)),t}getOffset(){return this._offset}setOffset(t){return this._offset=e.pointGeometry.convert(t),this._update(),this}_onMove(t){if(!this._isDragging){const e=this._clickTolerance||this._map._clickTolerance;this._isDragging=t.point.dist(this._pointerdownPos)>=e;}this._isDragging&&(this._pos=t.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new e.Event(\"dragstart\"))),this.fire(new e.Event(\"drag\")));}_onUp(){this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),\"active\"===this._state&&this.fire(new e.Event(\"dragend\")),this._state=\"inactive\";}_addDragHandler(e){this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos).add(this._transformedOffset()),this._pointerdownPos=e.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp));}setDraggable(e){return this._draggable=!!e,this._map&&(e?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&\"auto\"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}class Ar{constructor(e){this.jumpTo(e);}getValue(t){if(t<=this._startTime)return this._start;if(t>=this._endTime)return this._end;const i=e.easeCubicInOut((t-this._startTime)/(this._endTime-this._startTime));return this._start*(1-i)+this._end*i}isEasing(e){return e>=this._startTime&&e<=this._endTime}jumpTo(e){this._startTime=-1/0,this._endTime=-1/0,this._start=e,this._end=e;}easeTo(e,t,i){this._start=this.getValue(t),this._end=e,this._startTime=t,this._endTime=t+i;}}const Lr={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\",\"ScrollZoomBlocker.CtrlMessage\":\"Use ctrl + scroll to zoom the map\",\"ScrollZoomBlocker.CmdMessage\":\"Use ⌘ + scroll to zoom the map\",\"TouchPanBlocker.Message\":\"Use two fingers to move the map\"},{HTMLImageElement:Rr,HTMLElement:kr,ImageBitmap:Or}=e.window,Br={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:85,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,optimizeForTerrain:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,localIdeographFontFamily:\"sans-serif\",localFontFamily:null,transformRequest:null,accessToken:null,fadeDuration:300,crossSourceCollisions:!0};function Fr(e){e.parentNode&&e.parentNode.removeChild(e);}const Ur={showCompass:!0,showZoom:!0,visualizePitch:!1};class Nr{constructor(t,i,o=!1){this._clickTolerance=10,this.element=i,this.mouseRotate=new Yo({clickTolerance:t.dragRotate._mouseRotate._clickTolerance}),this.map=t,o&&(this.mousePitch=new Jo({clickTolerance:t.dragRotate._mousePitch._clickTolerance})),e.bindAll([\"mousedown\",\"mousemove\",\"mouseup\",\"touchstart\",\"touchmove\",\"touchend\",\"reset\"],this),i.addEventListener(\"mousedown\",this.mousedown),i.addEventListener(\"touchstart\",this.touchstart,{passive:!1}),i.addEventListener(\"touchmove\",this.touchmove),i.addEventListener(\"touchend\",this.touchend),i.addEventListener(\"touchcancel\",this.reset);}down(e,t){this.mouseRotate.mousedown(e,t),this.mousePitch&&this.mousePitch.mousedown(e,t),a.disableDrag();}move(e,t){const i=this.map,o=this.mouseRotate.mousemoveWindow(e,t);if(o&&o.bearingDelta&&i.setBearing(i.getBearing()+o.bearingDelta),this.mousePitch){const o=this.mousePitch.mousemoveWindow(e,t);o&&o.pitchDelta&&i.setPitch(i.getPitch()+o.pitchDelta);}}off(){const e=this.element;e.removeEventListener(\"mousedown\",this.mousedown),e.removeEventListener(\"touchstart\",this.touchstart,{passive:!1}),e.removeEventListener(\"touchmove\",this.touchmove),e.removeEventListener(\"touchend\",this.touchend),e.removeEventListener(\"touchcancel\",this.reset),this.offTemp();}offTemp(){a.enableDrag(),e.window.removeEventListener(\"mousemove\",this.mousemove),e.window.removeEventListener(\"mouseup\",this.mouseup);}mousedown(t){this.down(e.extend({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),a.mousePos(this.element,t)),e.window.addEventListener(\"mousemove\",this.mousemove),e.window.addEventListener(\"mouseup\",this.mouseup);}mousemove(e){this.move(e,a.mousePos(this.element,e));}mouseup(e){this.mouseRotate.mouseupWindow(e),this.mousePitch&&this.mousePitch.mouseupWindow(e),this.offTemp();}touchstart(e){1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=a.touchPos(this.element,e.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:()=>e.preventDefault()},this._startPos));}touchmove(e){1!==e.targetTouches.length?this.reset():(this._lastPos=a.touchPos(this.element,e.targetTouches)[0],this.move({preventDefault:()=>e.preventDefault()},this._lastPos));}touchend(e){0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset();}reset(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp();}}const Gr={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0,showUserHeading:!1};let jr,Zr=0,Vr=!1;const Wr={maxWidth:100,unit:\"metric\"};function qr(e,t,i){const o=i&&i.maxWidth||100,r=e._containerHeight/2,n=e.unproject([0,r]),a=e.unproject([o,r]),s=n.distanceTo(a);if(i&&\"imperial\"===i.unit){const i=3.2808*s;i>5280?Xr(t,o,i/5280,e._getUIString(\"ScaleControl.Miles\"),e):Xr(t,o,i,e._getUIString(\"ScaleControl.Feet\"),e);}else i&&\"nautical\"===i.unit?Xr(t,o,s/1852,e._getUIString(\"ScaleControl.NauticalMiles\"),e):s>=1e3?Xr(t,o,s/1e3,e._getUIString(\"ScaleControl.Kilometers\"),e):Xr(t,o,s,e._getUIString(\"ScaleControl.Meters\"),e);}function Xr(e,t,i,o,r){const n=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i),a=n/i;r._requestDomTask((()=>{e.style.width=t*a+\"px\",e.innerHTML=`${n}&nbsp;${o}`;}));}const $r={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},Hr=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \"),Kr={version:e.version,supported:t,setRTLTextPlugin:e.setRTLTextPlugin,getRTLTextPluginStatus:e.getRTLTextPluginStatus,Map:class extends Cr{constructor(t){if(null!=(t=e.extend({},Br,t)).minZoom&&null!=t.maxZoom&&t.minZoom>t.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=t.minPitch&&null!=t.maxPitch&&t.minPitch>t.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=t.minPitch&&t.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=t.maxPitch&&t.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t.antialias&&e.isSafariWithAntialiasingBug(e.window)&&(t.antialias=!1,e.warnOnce(\"Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609\")),super(new So(t.minZoom,t.maxZoom,t.minPitch,t.maxPitch,t.renderWorldCopies),t),this._interactive=t.interactive,this._minTileCacheSize=t.minTileCacheSize,this._maxTileCacheSize=t.maxTileCacheSize,this._failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=t.preserveDrawingBuffer,this._antialias=t.antialias,this._trackResize=t.trackResize,this._bearingSnap=t.bearingSnap,this._refreshExpiredTiles=t.refreshExpiredTiles,this._fadeDuration=t.fadeDuration,this._isInitialLoad=!0,this._crossSourceCollisions=t.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=t.collectResourceTiming,this._optimizeForTerrain=t.optimizeForTerrain,this._renderTaskQueue=new Ir,this._domRenderTaskQueue=new Ir,this._controls=[],this._markers=[],this._mapId=e.uniqueId(),this._locale=e.extend({},Lr,t.locale),this._clickTolerance=t.clickTolerance,this._cooperativeGestures=t.cooperativeGestures,this._containerWidth=0,this._containerHeight=0,this._averageElevationLastSampledAt=-1/0,this._averageElevation=new Ar(0),this._requestManager=new e.RequestManager(t.transformRequest,t.accessToken,t.testMode),this._silenceAuthErrors=!!t.testMode,\"string\"==typeof t.container){if(this._container=e.window.document.getElementById(t.container),!this._container)throw new Error(`Container '${t.container}' not found.`)}else {if(!(t.container instanceof kr))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=t.container;}if(this._container.childNodes.length>0&&e.warnOnce(\"The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead.\"),t.maxBounds&&this.setMaxBounds(t.maxBounds),e.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_onMapScroll\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(()=>this._update(!1))),this.on(\"moveend\",(()=>this._update(!1))),this.on(\"zoom\",(()=>this._update(!0))),void 0!==e.window&&(e.window.addEventListener(\"online\",this._onWindowOnline,!1),e.window.addEventListener(\"resize\",this._onWindowResize,!1),e.window.addEventListener(\"orientationchange\",this._onWindowResize,!1),e.window.addEventListener(\"webkitfullscreenchange\",this._onWindowResize,!1)),this.handlers=new Tr(this,t),this._localFontFamily=t.localFontFamily,this._localIdeographFontFamily=t.localIdeographFontFamily,t.style&&this.setStyle(t.style,{localFontFamily:this._localFontFamily,localIdeographFontFamily:this._localIdeographFontFamily}),t.projection&&this.setProjection(t.projection),this._hash=t.hash&&new zo(\"string\"==typeof t.hash&&t.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:t.center,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch}),t.bounds&&(this.resize(),this.fitBounds(t.bounds,e.extend({},t.fitBoundsOptions,{duration:0})))),this.resize(),t.attributionControl&&this.addControl(new Mr({customAttribution:t.customAttribution})),this._logoControl=new Sr,this.addControl(this._logoControl,t.logoPosition),this.on(\"style.load\",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet);})),this.on(\"data\",(t=>{this._update(\"style\"===t.dataType),this.fire(new e.Event(`${t.dataType}data`,t));})),this.on(\"dataloading\",(t=>{this.fire(new e.Event(`${t.dataType}dataloading`,t));}));}_getMapId(){return this._mapId}addControl(t,i){if(void 0===i&&(i=t.getDefaultPosition?t.getDefaultPosition():\"top-right\"),!t||!t.onAdd)return this.fire(new e.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));const o=t.onAdd(this);this._controls.push(t);const r=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this}removeControl(t){if(!t||!t.onRemove)return this.fire(new e.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));const i=this._controls.indexOf(t);return i>-1&&this._controls.splice(i,1),t.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}resize(t){if(this._updateContainerDimensions(),this._containerWidth===this.transform.width&&this._containerHeight===this.transform.height)return this;this._resizeCanvas(this._containerWidth,this._containerHeight),this.transform.resize(this._containerWidth,this._containerHeight),this.painter.resize(Math.ceil(this._containerWidth),Math.ceil(this._containerHeight));const i=!this._moving;return i&&this.fire(new e.Event(\"movestart\",t)).fire(new e.Event(\"move\",t)),this.fire(new e.Event(\"resize\",t)),i&&this.fire(new e.Event(\"moveend\",t)),this}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()||null}setMaxBounds(t){return this.transform.setMaxBounds(e.LngLatBounds.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t?this.setZoom(t):this.fire(new e.Event(\"zoomstart\")).fire(new e.Event(\"zoom\")).fire(new e.Event(\"zoomend\")),this;throw new Error(\"minZoom must be between -2 and the current maxZoom, inclusive\")}getMinZoom(){return this.transform.minZoom}setMaxZoom(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t?this.setZoom(t):this.fire(new e.Event(\"zoomstart\")).fire(new e.Event(\"zoom\")).fire(new e.Event(\"zoomend\")),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t?this.setPitch(t):this.fire(new e.Event(\"pitchstart\")).fire(new e.Event(\"pitch\")).fire(new e.Event(\"pitchend\")),this;throw new Error(\"minPitch must be between 0 and the current maxPitch, inclusive\")}getMinPitch(){return this.transform.minPitch}setMaxPitch(t){if((t=null==t?85:t)>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t?this.setPitch(t):this.fire(new e.Event(\"pitchstart\")).fire(new e.Event(\"pitch\")).fire(new e.Event(\"pitchend\")),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.renderWorldCopies=e,this._update()}getProjection(){return this.transform.getProjection()}setProjection(e){return this._lazyInitEmptyStyle(),\"string\"==typeof e&&(e={name:e}),this._runtimeProjection=e,this.style.updateProjection(),this._transitionFromGlobe=!1,this}project(t){return this.transform.locationPoint3D(e.LngLat.convert(t))}unproject(t){return this.transform.pointLocation3D(e.pointGeometry.convert(t))}isMoving(){return this._moving||this.handlers&&this.handlers.isMoving()}isZooming(){return this._zooming||this.handlers&&this.handlers.isZooming()}isRotating(){return this._rotating||this.handlers&&this.handlers.isRotating()}_createDelegatedListener(e,t,i){if(\"mouseenter\"===e||\"mouseover\"===e){let o=!1;const r=r=>{const n=t.filter((e=>this.getLayer(e))),a=n.length?this.queryRenderedFeatures(r.point,{layers:n}):[];a.length?o||(o=!0,i.call(this,new Fo(e,this,r.originalEvent,{features:a}))):o=!1;},n=()=>{o=!1;};return {layers:new Set(t),listener:i,delegates:{mousemove:r,mouseout:n}}}if(\"mouseleave\"===e||\"mouseout\"===e){let o=!1;const r=r=>{const n=t.filter((e=>this.getLayer(e)));(n.length?this.queryRenderedFeatures(r.point,{layers:n}):[]).length?o=!0:o&&(o=!1,i.call(this,new Fo(e,this,r.originalEvent)));},n=t=>{o&&(o=!1,i.call(this,new Fo(e,this,t.originalEvent)));};return {layers:new Set(t),listener:i,delegates:{mousemove:r,mouseout:n}}}{const o=e=>{const o=t.filter((e=>this.getLayer(e))),r=o.length?this.queryRenderedFeatures(e.point,{layers:o}):[];r.length&&(e.features=r,i.call(this,e),delete e.features);};return {layers:new Set(t),listener:i,delegates:{[e]:o}}}}on(e,t,i){if(void 0===i)return super.on(e,t);Array.isArray(t)||(t=[t]);const o=this._createDelegatedListener(e,t,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(o);for(const e in o.delegates)this.on(e,o.delegates[e]);return this}once(e,t,i){if(void 0===i)return super.once(e,t);Array.isArray(t)||(t=[t]);const o=this._createDelegatedListener(e,t,i);for(const e in o.delegates)this.once(e,o.delegates[e]);return this}off(e,t,i){if(void 0===i)return super.off(e,t);t=new Set(Array.isArray(t)?t:[t]);const o=(e,t)=>{if(e.size!==t.size)return !1;for(const i of e)if(!t.has(i))return !1;return !0},r=this._delegatedListeners?this._delegatedListeners[e]:void 0;return r&&(e=>{for(let r=0;r<e.length;r++){const n=e[r];if(n.listener===i&&o(n.layers,t)){for(const e in n.delegates)this.off(e,n.delegates[e]);return e.splice(r,1),this}}})(r),this}queryRenderedFeatures(t,i){return this.style?(void 0!==i||void 0===t||t instanceof e.pointGeometry||Array.isArray(t)||(i=t,t=void 0),this.style.queryRenderedFeatures(t=t||[[0,0],[this.transform.width,this.transform.height]],i=i||{},this.transform)):[]}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}queryTerrainElevation(t,i){const o=this.transform.elevation;return o?(i=e.extend({},{exaggerated:!0},i),o.getAtPoint(e.MercatorCoordinate.fromLngLat(t),null,i.exaggerated)):null}setStyle(t,i){return !1!==(i=e.extend({},{localIdeographFontFamily:this._localIdeographFontFamily,localFontFamily:this._localFontFamily},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&i.localFontFamily===this._localFontFamily&&this.style&&t?(this._diffStyle(t,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._localFontFamily=i.localFontFamily,this._updateStyle(t,i))}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){return this.style&&(this.style.setEventedParent(null),this.style._remove(),delete this.style),e&&(this.style=new Nt(this,t||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof e?this.style.loadURL(e):this.style.loadJSON(e)),this._updateTerrain(),this}_lazyInitEmptyStyle(){this.style||(this.style=new Nt(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(t,i){if(\"string\"==typeof t){const o=this._requestManager.normalizeStyleURL(t),r=this._requestManager.transformRequest(o,e.ResourceType.Style);e.getJSON(r,((t,o)=>{t?this.fire(new e.ErrorEvent(t)):o&&this._updateDiff(o,i);}));}else \"object\"==typeof t&&this._updateDiff(t,i);}_updateDiff(t,i){try{this.style.setState(t)&&this._update(!0);}catch(o){e.warnOnce(`Unable to perform style diff: ${o.message||o.error||o}.  Rebuilding the style from scratch.`),this._updateStyle(t,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():e.warnOnce(\"There is no style added to the map.\")}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(t){const i=this.style&&this.style._getSourceCaches(t);if(0!==i.length)return i.every((e=>e.loaded()));this.fire(new e.ErrorEvent(new Error(`There is no source with ID '${t}'`)));}areTilesLoaded(){const e=this.style&&this.style._sourceCaches;for(const t in e){const i=e[t]._tiles;for(const e in i){const t=i[e];if(\"loaded\"!==t.state&&\"errored\"!==t.state)return !1}}return !0}addSourceType(e,t,i){return this._lazyInitEmptyStyle(),this.style.addSourceType(e,t,i)}removeSource(e){return this.style.removeSource(e),this._updateTerrain(),this._update(!0)}getSource(e){return this.style.getSource(e)}addImage(t,i,{pixelRatio:o=1,sdf:r=!1,stretchX:n,stretchY:a,content:s}={}){if(this._lazyInitEmptyStyle(),i instanceof Rr||Or&&i instanceof Or){const{width:l,height:c,data:h}=e.exported.getImageData(i);this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},h),pixelRatio:o,stretchX:n,stretchY:a,content:s,sdf:r,version:0});}else {if(void 0===i.width||void 0===i.height)return this.fire(new e.ErrorEvent(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));{const{width:l,height:c,data:h}=i,u=i;this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},new Uint8Array(h)),pixelRatio:o,stretchX:n,stretchY:a,content:s,sdf:r,version:0,userImage:u}),u.onAdd&&u.onAdd(this,t);}}}updateImage(t,i){const o=this.style.getImage(t);if(!o)return this.fire(new e.ErrorEvent(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));const r=i instanceof Rr||Or&&i instanceof Or?e.exported.getImageData(i):i,{width:n,height:a,data:s}=r;return void 0===n||void 0===a?this.fire(new e.ErrorEvent(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\"))):n!==o.data.width||a!==o.data.height?this.fire(new e.ErrorEvent(new Error(\"The width and height of the updated image must be that same as the previous version of the image\"))):(o.data.replace(s,!(i instanceof Rr||Or&&i instanceof Or)),void this.style.updateImage(t,o))}hasImage(t){return t?!!this.style.getImage(t):(this.fire(new e.ErrorEvent(new Error(\"Missing required image id\"))),!1)}removeImage(e){this.style.removeImage(e);}loadImage(t,i){e.getImage(this._requestManager.transformRequest(t,e.ResourceType.Image),((t,o)=>{i(t,o instanceof Rr?e.exported.getImageData(o):o);}));}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,o={}){return this.style.setPaintProperty(e,t,i,o),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,o={}){return this.style.setLayoutProperty(e,t,i,o),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setTerrain(e){return this._lazyInitEmptyStyle(),!e&&this.transform.projection.requiresDraping?this.style.setTerrainForDraping():this.style.setTerrain(e),this._averageElevationLastSampledAt=-1/0,this._update(!0)}_updateProjection(){\"globe\"===this.transform.projection.name&&this.transform.zoom>=e.GLOBE_ZOOM_THRESHOLD_MAX&&!this._transitionFromGlobe&&(this.setProjection({name:\"mercator\"}),this._transitionFromGlobe=!0);}getTerrain(){return this.style?this.style.getTerrain():null}setFog(e){return this._lazyInitEmptyStyle(),this.style.setFog(e),this._update(!0)}getFog(){return this.style?this.style.getFog():null}_queryFogOpacity(t){return this.style&&this.style.fog?this.style.fog.getOpacityAtLatLng(e.LngLat.convert(t),this.transform):0}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}_updateContainerDimensions(){if(!this._container)return;const t=this._container.getBoundingClientRect().width||400,i=this._container.getBoundingClientRect().height||300;let o,r=this._container;for(;r&&!o;){const t=e.window.getComputedStyle(r).transform;t&&\"none\"!==t&&(o=t.match(/matrix.*\\((.+)\\)/)[1].split(\", \")),r=r.parentElement;}o?(this._containerWidth=o[0]&&\"0\"!==o[0]?Math.abs(t/o[0]):t,this._containerHeight=o[3]&&\"0\"!==o[3]?Math.abs(i/o[3]):i):(this._containerWidth=t,this._containerHeight=i);}_detectMissingCSS(){\"rgb(250, 128, 114)\"!==e.window.getComputedStyle(this._missingCSSCanary).getPropertyValue(\"background-color\")&&e.warnOnce(\"This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.\");}_setupContainer(){const e=this._container;e.classList.add(\"mapboxgl-map\"),(this._missingCSSCanary=a.create(\"div\",\"mapboxgl-canary\",e)).style.visibility=\"hidden\",this._detectMissingCSS();const t=this._canvasContainer=a.create(\"div\",\"mapboxgl-canvas-container\",e);this._interactive&&t.classList.add(\"mapboxgl-interactive\"),this._canvas=a.create(\"canvas\",\"mapboxgl-canvas\",t),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\"),this._updateContainerDimensions(),this._resizeCanvas(this._containerWidth,this._containerHeight);const i=this._controlContainer=a.create(\"div\",\"mapboxgl-control-container\",e),o=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((e=>{o[e]=a.create(\"div\",`mapboxgl-ctrl-${e}`,i);})),this._container.addEventListener(\"scroll\",this._onMapScroll,!1);}_resizeCanvas(t,i){const o=e.exported.devicePixelRatio||1;this._canvas.width=o*Math.ceil(t),this._canvas.height=o*Math.ceil(i),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${i}px`;}_addMarker(e){this._markers.push(e);}_removeMarker(e){const t=this._markers.indexOf(e);-1!==t&&this._markers.splice(t,1);}_setupPainter(){const i=e.extend({},t.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),o=this._canvas.getContext(\"webgl\",i)||this._canvas.getContext(\"experimental-webgl\",i);o?(e.storeAuthState(o,!0),this.painter=new _o(o,this.transform),this.on(\"data\",(e=>{\"source\"===e.dataType&&this.painter.setTileLoadedFlag(!0);})),e.exported$1.testSupport(o)):this.fire(new e.ErrorEvent(new Error(\"Failed to initialize WebGL\")));}_contextLost(t){t.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new e.Event(\"webglcontextlost\",{originalEvent:t}));}_contextRestored(t){this._setupPainter(),this.resize(),this._update(),this.fire(new e.Event(\"webglcontextrestored\",{originalEvent:t}));}_onMapScroll(e){if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e);}_requestDomTask(e){!this.loaded()||this.loaded()&&!this.isMoving()?e():this._domRenderTaskQueue.add(e);}_render(t){let i;const o=this.painter.context.extTimerQuery,r=e.exported.now();this.listens(\"gpu-timing-frame\")&&(i=o.createQueryEXT(),o.beginQueryEXT(o.TIME_ELAPSED_EXT,i));let n=this._updateAverageElevation(r);if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(t),this._domRenderTaskQueue.run(t),this._removed)return;this._updateProjection();let a=!1;const s=this._isInitialLoad?0:this._fadeDuration;if(this.style&&this._styleDirty){this._styleDirty=!1;const t=this.transform.zoom,i=this.transform.pitch,o=e.exported.now();this.style.zoomHistory.update(t,o);const r=new e.EvaluationParameters(t,{now:o,fadeDuration:s,pitch:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),n=r.crossFadingFactor();1===n&&n===this._crossFadingFactor||(a=!0,this._crossFadingFactor=n),this.style.update(r);}if(this.style&&this.style.fog&&this.style.fog.hasTransition()&&(this.style._markersNeedUpdate=!0,this._sourcesDirty=!0),this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.painter._updateFog(this.style),this._updateTerrain(),this.style._updateSources(this.transform),this._forceMarkerUpdate()),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,s,this._crossSourceCollisions),this.style&&this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showTerrainWireframe:this.showTerrainWireframe,showOverdrawInspector:this._showOverdrawInspector,showQueryGeometry:!!this._showQueryGeometry,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:s,isInitialLoad:this._isInitialLoad,showPadding:this.showPadding,gpuTiming:!!this.listens(\"gpu-timing-layer\"),speedIndexTiming:this.speedIndexTiming}),this.fire(new e.Event(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new e.Event(\"load\"))),this.style&&(this.style.hasTransitions()||a)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens(\"gpu-timing-frame\")){const t=e.exported.now()-r;o.endQueryEXT(o.TIME_ELAPSED_EXT,i),setTimeout((()=>{const r=o.getQueryObjectEXT(i,o.QUERY_RESULT_EXT)/1e6;o.deleteQueryEXT(i),this.fire(new e.Event(\"gpu-timing-frame\",{cpuTime:t,gpuTime:r}));}),50);}if(this.listens(\"gpu-timing-layer\")){const t=this.painter.collectGpuTimers();setTimeout((()=>{const i=this.painter.queryGpuTimers(t);this.fire(new e.Event(\"gpu-timing-layer\",{layerTimes:i}));}),50);}const l=this._sourcesDirty||this._styleDirty||this._placementDirty||n;if(l||this._repaint)this.triggerRepaint();else {const t=!this.isMoving()&&this.loaded();if(t&&(n=this._updateAverageElevation(r,!0)),n)this.triggerRepaint();else if(this._triggerFrame(!1),t&&(this.fire(new e.Event(\"idle\")),this._isInitialLoad=!1,this.speedIndexTiming)){const t=this._calculateSpeedIndex();this.fire(new e.Event(\"speedindexcompleted\",{speedIndex:t})),this.speedIndexTiming=!1;}}return !this._loaded||this._fullyLoaded||l||(this._fullyLoaded=!0,this._authenticate()),this}_forceMarkerUpdate(){for(const e of this._markers)e._update();}_updateAverageElevation(e,t=!1){const i=e=>(this.transform.averageElevation=e,this._update(!1),!0);if(!this.painter.averageElevationNeedsEasing())return 0!==this.transform.averageElevation&&i(0);if((t||e-this._averageElevationLastSampledAt>500)&&!this._averageElevation.isEasing(e)){const t=this.transform.averageElevation;let o=this.transform.sampleAverageElevation();isNaN(o)?o=0:this._averageElevationLastSampledAt=e;const r=Math.abs(t-o);if(r>1){if(this._isInitialLoad)return this._averageElevation.jumpTo(o),i(o);this._averageElevation.easeTo(o,e,300);}else if(r>1e-4)return this._averageElevation.jumpTo(o),i(o)}return !!this._averageElevation.isEasing(e)&&i(this._averageElevation.getValue(e))}_authenticate(){e.getMapSessionAPI(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(t=>{if(t&&(t.message===e.AUTH_ERR_MSG||401===t.status)){const t=this.painter.context.gl;e.storeAuthState(t,!1),this._logoControl instanceof Sr&&this._logoControl._updateLogo(),t&&t.clear(t.DEPTH_BUFFER_BIT|t.COLOR_BUFFER_BIT|t.STENCIL_BUFFER_BIT),this._silenceAuthErrors||this.fire(new e.ErrorEvent(new Error(\"A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/\")));}})),e.postMapLoadEvent(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(()=>{}));}_updateTerrain(){this.painter.updateTerrain(this.style,this.isMoving()||this.isRotating()||this.isZooming());}_calculateSpeedIndex(){const e=this.painter.canvasCopy(),t=this.painter.getCanvasCopiesAndTimestamps();t.timeStamps.push(performance.now());const i=this.painter.context.gl,o=i.createFramebuffer();function r(e){i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e,0);const t=new Uint8Array(i.drawingBufferWidth*i.drawingBufferHeight*4);return i.readPixels(0,0,i.drawingBufferWidth,i.drawingBufferHeight,i.RGBA,i.UNSIGNED_BYTE,t),t}return i.bindFramebuffer(i.FRAMEBUFFER,o),this._canvasPixelComparison(r(e),t.canvasCopies.map(r),t.timeStamps)}_canvasPixelComparison(e,t,i){let o=i[1]-i[0];const r=e.length/4;for(let n=0;n<t.length;n++){const a=t[n];let s=0;for(let t=0;t<a.length;t+=4)a[t]===e[t]&&a[t+1]===e[t+1]&&a[t+2]===e[t+2]&&a[t+3]===e[t+3]&&(s+=1);o+=(i[n+2]-i[n+1])*(1-s/r);}return o}remove(){this._hash&&this._hash.remove();for(const e of this._controls)e.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this._domRenderTaskQueue.clear(),this.style&&this.style.destroy(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),void 0!==e.window&&(e.window.removeEventListener(\"resize\",this._onWindowResize,!1),e.window.removeEventListener(\"orientationchange\",this._onWindowResize,!1),e.window.removeEventListener(\"webkitfullscreenchange\",this._onWindowResize,!1),e.window.removeEventListener(\"online\",this._onWindowOnline,!1));const t=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");t&&t.loseContext(),Fr(this._canvasContainer),Fr(this._controlContainer),Fr(this._missingCSSCanary),this._container.classList.remove(\"mapboxgl-map\"),e.removeAuthState(this.painter.context.gl),this._removed=!0,this.fire(new e.Event(\"remove\"));}triggerRepaint(){this._triggerFrame(!0);}_triggerFrame(t){this._renderNextFrame=this._renderNextFrame||t,this.style&&!this._frame&&(this._frame=e.exported.frame((e=>{const t=!!this._renderNextFrame;this._frame=null,this._renderNextFrame=null,t&&this._render(e);})));}_preloadTiles(t){const i=this.style&&Object.values(this.style._sourceCaches)||[];return e.asyncAll(i,((e,i)=>e._preloadTiles(t,i)),(()=>{this.triggerRepaint();})),this}_onWindowOnline(){this._update();}_onWindowResize(e){this._trackResize&&this.resize({originalEvent:e})._update();}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update());}get showTerrainWireframe(){return !!this._showTerrainWireframe}set showTerrainWireframe(e){this._showTerrainWireframe!==e&&(this._showTerrainWireframe=e,this._update());}get speedIndexTiming(){return !!this._speedIndexTiming}set speedIndexTiming(e){this._speedIndexTiming!==e&&(this._speedIndexTiming=e,this._update());}get showPadding(){return !!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update());}get repaint(){return !!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(e){this._vertices=e,this._update();}_setCacheLimits(t,i){e.setCacheLimits(t,i);}get version(){return e.version}},NavigationControl:class{constructor(t){this.options=e.extend({},Ur,t),this._container=a.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this.options.showZoom&&(e.bindAll([\"_setButtonTitle\",\"_updateZoomButtons\"],this),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-zoom-in\",(e=>this._map.zoomIn({},{originalEvent:e}))),a.create(\"span\",\"mapboxgl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",!0),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-zoom-out\",(e=>this._map.zoomOut({},{originalEvent:e}))),a.create(\"span\",\"mapboxgl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",!0)),this.options.showCompass&&(e.bindAll([\"_rotateCompassArrow\"],this),this._compass=this._createButton(\"mapboxgl-ctrl-compass\",(e=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:e}):this._map.resetNorth({},{originalEvent:e});})),this._compassIcon=a.create(\"span\",\"mapboxgl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",!0));}_updateZoomButtons(){const e=this._map.getZoom(),t=e===this._map.getMaxZoom(),i=e===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute(\"aria-disabled\",t.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",i.toString());}_rotateCompassArrow(){const e=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._map._requestDomTask((()=>{this._compassIcon&&(this._compassIcon.style.transform=e);}));}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Nr(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){this._container.remove(),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(e,t){const i=a.create(\"button\",e,this._container);return i.type=\"button\",i.addEventListener(\"click\",t),i}_setButtonTitle(e,t){const i=this._map._getUIString(`NavigationControl.${t}`);e.setAttribute(\"aria-label\",i),e.firstElementChild&&e.firstElementChild.setAttribute(\"title\",i);}},GeolocateControl:class extends e.Evented{constructor(t){super(),this.options=e.extend({},Gr,t),e.bindAll([\"_onSuccess\",\"_onError\",\"_onZoom\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\",\"_updateMarkerRotation\"],this),this._onDeviceOrientationListener=this._onDeviceOrientation.bind(this),this._updateMarkerRotationThrottled=Io(this._updateMarkerRotation,20);}onAdd(t){var i;return this._map=t,this._container=a.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),i=this._setupUI,void 0!==jr?i(jr):void 0!==e.window.navigator.permissions?e.window.navigator.permissions.query({name:\"geolocation\"}).then((e=>{jr=\"denied\"!==e.state,i(jr);})):(jr=!!e.window.navigator.geolocation,i(jr)),this._container}onRemove(){void 0!==this._geolocationWatchID&&(e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off(\"zoom\",this._onZoom),this._map=void 0,Zr=0,Vr=!1;}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return t&&(i.longitude<t.getWest()||i.longitude>t.getEast()||i.latitude<t.getSouth()||i.latitude>t.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");}}_onSuccess(t){if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new e.Event(\"outofmaxbounds\",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new e.Event(\"geolocate\",t)),this._finish();}}_updateCamera(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude),o=t.coords.accuracy,r=this._map.getBearing(),n=e.extend({bearing:r},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(o),n,{geolocateSource:!0});}_updateMarker(t){if(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();}_updateCircleRadius(){const e=this._map._containerHeight/2,t=this._map.unproject([0,e]),i=this._map.unproject([100,e]),o=t.distanceTo(i)/100,r=Math.ceil(2*this._accuracy/o);this._circleElement.style.width=`${r}px`,this._circleElement.style.height=`${r}px`;}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}_updateMarkerRotation(){this._userLocationDotMarker&&\"number\"==typeof this._heading?(this._userLocationDotMarker.setRotation(this._heading),this._dotElement.classList.add(\"mapboxgl-user-location-show-heading\")):(this._dotElement.classList.remove(\"mapboxgl-user-location-show-heading\"),this._userLocationDotMarker.setRotation(0));}_onError(t){if(this._map){if(this.options.trackUserLocation)if(1===t.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;const e=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.setAttribute(\"aria-label\",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",e),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===t.code&&Vr)return;this._setErrorState();}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new e.Event(\"error\",t)),this._finish();}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;}_setupUI(t){if(this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this._geolocateButton=a.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),a.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===t){e.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");const t=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.setAttribute(\"aria-label\",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",t);}else {const e=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.setAttribute(\"aria-label\",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",e);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=a.create(\"div\",\"mapboxgl-user-location\"),this._dotElement.appendChild(a.create(\"div\",\"mapboxgl-user-location-dot\")),this._dotElement.appendChild(a.create(\"div\",\"mapboxgl-user-location-heading\")),this._userLocationDotMarker=new Pr({element:this._dotElement,rotationAlignment:\"map\",pitchAlignment:\"map\"}),this._circleElement=a.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Pr({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(t=>{t.geolocateSource||\"ACTIVE_LOCK\"!==this._watchState||t.originalEvent&&\"resize\"===t.originalEvent.type||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this.fire(new e.Event(\"trackuserlocationend\")));}));}_onDeviceOrientation(e){this._userLocationDotMarker&&(e.webkitCompassHeading?this._heading=e.webkitCompassHeading:!0===e.absolute&&(this._heading=-1*e.alpha),this._updateMarkerRotationThrottled());}trigger(){if(!this._setup)return e.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new e.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Zr--,Vr=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new e.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new e.Event(\"trackuserlocationstart\"));}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\");}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),Zr++,Zr>1?(t={maximumAge:6e5,timeout:0},Vr=!0):(t=this.options.positionOptions,Vr=!1),this._geolocationWatchID=e.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t),this.options.showUserHeading&&this._addDeviceOrientationListener();}}else e.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_addDeviceOrientationListener(){const t=()=>{e.window.addEventListener(\"ondeviceorientationabsolute\"in e.window?\"deviceorientationabsolute\":\"deviceorientation\",this._onDeviceOrientationListener);};void 0!==e.window.DeviceMotionEvent&&\"function\"==typeof e.window.DeviceMotionEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((e=>{\"granted\"===e&&t();})).catch(console.error):t();}_clearWatch(){e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),e.window.removeEventListener(\"deviceorientation\",this._onDeviceOrientationListener),e.window.removeEventListener(\"deviceorientationabsolute\",this._onDeviceOrientationListener),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);}},AttributionControl:Mr,ScaleControl:class{constructor(t){this.options=e.extend({},Wr,t),e.bindAll([\"_onMove\",\"setUnit\"],this);}getDefaultPosition(){return \"bottom-left\"}_onMove(){qr(this._map,this._container,this.options);}onAdd(e){return this._map=e,this._container=a.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",e.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){this._container.remove(),this._map.off(\"move\",this._onMove),this._map=void 0;}setUnit(e){this.options.unit=e,qr(this._map,this._container,this.options);}},FullscreenControl:class{constructor(t){this._fullscreen=!1,t&&t.container&&(t.container instanceof e.window.HTMLElement?this._container=t.container:e.warnOnce(\"Full screen control 'container' must be a DOM element.\")),e.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in e.window.document?this._fullscreenchange=\"fullscreenchange\":\"onwebkitfullscreenchange\"in e.window.document&&(this._fullscreenchange=\"webkitfullscreenchange\");}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=a.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",e.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,e.window.document.removeEventListener(this._fullscreenchange,this._changeIcon);}_checkFullscreenSupport(){return !(!e.window.document.fullscreenEnabled&&!e.window.document.webkitFullscreenEnabled)}_setupUI(){const t=this._fullscreenButton=a.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);a.create(\"span\",\"mapboxgl-ctrl-icon\",t).setAttribute(\"aria-hidden\",!0),t.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),e.window.document.addEventListener(this._fullscreenchange,this._changeIcon);}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",e),this._fullscreenButton.firstElementChild&&this._fullscreenButton.firstElementChild.setAttribute(\"title\",e);}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_changeIcon(){(e.window.document.fullscreenElement||e.window.document.webkitFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle());}_onClickFullscreen(){this._isFullscreen()?e.window.document.exitFullscreen?e.window.document.exitFullscreen():e.window.document.webkitCancelFullScreen&&e.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();}},Popup:class extends e.Evented{constructor(t){super(),this.options=e.extend(Object.create($r),t),e.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this),this._classList=new Set(t&&t.className?t.className.trim().split(/\\s+/):[]);}addTo(t){return this._map&&this.remove(),this._map=t,this.options.closeOnClick&&this._map.on(\"preclick\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new e.Event(\"open\")),this}isOpen(){return !!this._map}remove(){return this._content&&this._content.remove(),this._container&&(this._container.remove(),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new e.Event(\"close\")),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.LngLat.convert(t),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this}getElement(){return this._container}setText(t){return this.setDOMContent(e.window.document.createTextNode(t))}setHTML(t){const i=e.window.document.createDocumentFragment(),o=e.window.document.createElement(\"body\");let r;for(o.innerHTML=t;r=o.firstChild,r;)i.appendChild(r);return this.setDOMContent(i)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=a.create(\"div\",\"mapboxgl-popup-content\",this._container);return this._content.appendChild(e),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(e){return this._classList.add(e),this._container&&this._updateClassList(),this}removeClassName(e){return this._classList.delete(e),this._container&&this._updateClassList(),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){let t;return this._classList.delete(e)?t=!1:(this._classList.add(e),t=!0),this._container&&this._updateClassList(),t}_createCloseButton(){this.options.closeButton&&(this._closeButton=a.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.setAttribute(\"aria-hidden\",\"true\"),this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClose));}_onMouseUp(e){this._update(e.point);}_onMouseMove(e){this._update(e.point);}_onDrag(e){this._update(e.point);}_getAnchor(e){if(this.options.anchor)return this.options.anchor;const t=this._pos,i=this._container.offsetWidth,o=this._container.offsetHeight;let r;return r=t.y+e.bottom.y<o?[\"top\"]:t.y>this._map.transform.height-o?[\"bottom\"]:[],t.x<i/2?r.push(\"left\"):t.x>this._map.transform.width-i/2&&r.push(\"right\"),0===r.length?\"bottom\":r.join(\"-\")}_updateClassList(){const e=[...this._classList];e.push(\"mapboxgl-popup\"),this._anchor&&e.push(`mapboxgl-popup-anchor-${this._anchor}`),this._trackPointer&&e.push(\"mapboxgl-popup-track-pointer\"),this._container.className=e.join(\" \");}_update(t){if(this._map&&(this._lngLat||this._trackPointer)&&this._content){if(this._container||(this._container=a.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=a.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content)),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=zr(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||t){const i=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat),o=function(t){if(t||(t=new e.pointGeometry(0,0)),\"number\"==typeof t){const i=Math.round(Math.sqrt(.5*Math.pow(t,2)));return {center:new e.pointGeometry(0,0),top:new e.pointGeometry(0,t),\"top-left\":new e.pointGeometry(i,i),\"top-right\":new e.pointGeometry(-i,i),bottom:new e.pointGeometry(0,-t),\"bottom-left\":new e.pointGeometry(i,-i),\"bottom-right\":new e.pointGeometry(-i,-i),left:new e.pointGeometry(t,0),right:new e.pointGeometry(-t,0)}}if(t instanceof e.pointGeometry||Array.isArray(t)){const i=e.pointGeometry.convert(t);return {center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return {center:e.pointGeometry.convert(t.center||[0,0]),top:e.pointGeometry.convert(t.top||[0,0]),\"top-left\":e.pointGeometry.convert(t[\"top-left\"]||[0,0]),\"top-right\":e.pointGeometry.convert(t[\"top-right\"]||[0,0]),bottom:e.pointGeometry.convert(t.bottom||[0,0]),\"bottom-left\":e.pointGeometry.convert(t[\"bottom-left\"]||[0,0]),\"bottom-right\":e.pointGeometry.convert(t[\"bottom-right\"]||[0,0]),left:e.pointGeometry.convert(t.left||[0,0]),right:e.pointGeometry.convert(t.right||[0,0])}}(this.options.offset),r=this._anchor=this._getAnchor(o),n=i.add(o[r]).round();this._map._requestDomTask((()=>{this._container&&r&&(this._container.style.transform=`${Dr[r]} translate(${n.x}px,${n.y}px)`);}));}this._updateClassList();}}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(Hr);e&&e.focus();}_onClose(){this.remove();}_setOpacity(e){this._content&&(this._content.style.opacity=e),this._tip&&(this._tip.style.opacity=e);}},Marker:Pr,Style:Nt,LngLat:e.LngLat,LngLatBounds:e.LngLatBounds,Point:e.pointGeometry,MercatorCoordinate:e.MercatorCoordinate,FreeCameraOptions:xo,Evented:e.Evented,config:e.config,prewarm:function(){Ae().acquire(ze);},clearPrewarmedResources:function(){const e=Pe;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(ze),Pe=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"));},get accessToken(){return e.config.ACCESS_TOKEN},set accessToken(t){e.config.ACCESS_TOKEN=t;},get baseApiUrl(){return e.config.API_URL},set baseApiUrl(t){e.config.API_URL=t;},get workerCount(){return De.workerCount},set workerCount(e){De.workerCount=e;},get maxParallelImageRequests(){return e.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(t){e.config.MAX_PARALLEL_IMAGE_REQUESTS=t;},clearStorage(t){e.clearTileCache(t);},workerUrl:\"\",workerClass:null,setNow:e.exported.setNow,restoreNow:e.exported.restoreNow};return Kr}));\n\n//\n\nvar mapboxgl$1 = mapboxgl;\n\nreturn mapboxgl$1;\n\n})));\n//# sourceMappingURL=mapbox-gl.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"BackSide\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.BackSide, [\"Bone\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Bone, [\"Box2\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Box2, [\"Box3\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Box3, [\"BufferAttribute\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.BufferAttribute, [\"BufferGeometry\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.BufferGeometry, [\"Camera\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Camera, [\"Clock\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Clock, [\"Color\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Color, [\"CubicInterpolant\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.CubicInterpolant, [\"DataTexture\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.DataTexture, [\"DoubleSide\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.DoubleSide, [\"Euler\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Euler, [\"EventDispatcher\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.EventDispatcher, [\"Float32BufferAttribute\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Float32BufferAttribute, [\"FloatType\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.FloatType, [\"FrontSide\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.FrontSide, [\"Group\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Group, [\"HalfFloatType\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.HalfFloatType, [\"Int32BufferAttribute\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Int32BufferAttribute, [\"LOD\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.LOD, [\"Line3\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Line3, [\"LineBasicMaterial\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.LineBasicMaterial, [\"LineSegments\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.LineSegments, [\"LinearEncoding\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.LinearEncoding, [\"LinearFilter\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.LinearFilter, [\"LinearInterpolant\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.LinearInterpolant, [\"LuminanceFormat\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.LuminanceFormat, [\"MathUtils\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.MathUtils, [\"Matrix4\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Matrix4, [\"Mesh\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Mesh, [\"MeshStandardMaterial\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.MeshStandardMaterial, [\"NoToneMapping\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.NoToneMapping, [\"Object3D\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Object3D, [\"PerspectiveCamera\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.PerspectiveCamera, [\"Plane\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Plane, [\"PlaneGeometry\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.PlaneGeometry, [\"Points\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Points, [\"PointsMaterial\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.PointsMaterial, [\"Quaternion\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Quaternion, [\"RGBAFormat\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.RGBAFormat, [\"Ray\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Ray, [\"Raycaster\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Raycaster, [\"Scene\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Scene, [\"SkinnedMesh\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.SkinnedMesh, [\"Sphere\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Sphere, [\"Triangle\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Triangle, [\"UniformsUtils\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.UniformsUtils, [\"Vector2\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Vector2, [\"Vector3\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Vector3, [\"Vector4\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.Vector4, [\"WebGLRenderTarget\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.WebGLRenderTarget, [\"WebGLRenderer\"]: () => __WEBPACK_EXTERNAL_MODULE_three__.WebGLRenderer });","import {\n  WebGLRenderer,\n  WebGLRenderTarget,\n  LinearEncoding,\n  NoToneMapping\n} from \"three\";\nconst CONTEXT_OPTIONS = {};\nvar WebGLContext = /* @__PURE__ */ ((WebGLContext2) => {\n  WebGLContext2[\"WEBGL\"] = \"webgl\";\n  WebGLContext2[\"WEBGL2\"] = \"webgl2\";\n  WebGLContext2[\"EXPERIMENTAL_WEBGL\"] = \"experimental-webgl\";\n  WebGLContext2[\"EXPERIMENTAL_WEBGL2\"] = \"experimental-webgl2\";\n  return WebGLContext2;\n})(WebGLContext || {});\nlet nextRendererId = 0;\nconst _RenderersController = class {\n  constructor() {\n    this._printDebug = false;\n    this._require_webgl2 = false;\n  }\n  setPrintDebug(state = true) {\n    this._printDebug = state;\n  }\n  printDebug() {\n    return this._printDebug;\n  }\n  printDebugMessage(message) {\n    if (!this._printDebug) {\n      return;\n    }\n    console.warn(\"[Poly debug]\", message);\n  }\n  setRequireWebGL2() {\n    if (!this._require_webgl2) {\n      this._require_webgl2 = true;\n    }\n  }\n  webGL2Available() {\n    if (this._webgl2_available === void 0) {\n      this._webgl2_available = this._setWebGL2Available();\n    }\n    return this._webgl2_available;\n  }\n  _setWebGL2Available() {\n    const canvas = document.createElement(\"canvas\");\n    return (window.WebGL2RenderingContext && canvas.getContext(\"webgl2\" /* WEBGL2 */)) != null;\n  }\n  createWebGLRenderer(params) {\n    const renderer = new WebGLRenderer(params);\n    this.assignIdToRenderer(renderer);\n    this.printDebugMessage([`create renderer:`, params]);\n    return renderer;\n  }\n  assignIdToRenderer(renderer) {\n    if (renderer._polygonId != null) {\n      return;\n    }\n    const nextId = nextRendererId += 1;\n    renderer._polygonId = nextId;\n  }\n  rendererId(renderer) {\n    const id = renderer._polygonId;\n    if (id == null) {\n      console.error(\"renderer has no _polygonId\");\n      return;\n    }\n    return id;\n  }\n  getRenderingContext(canvas) {\n    let gl = null;\n    gl = this._getRenderingContextWebgl(canvas, true);\n    if (!gl) {\n      console.warn(\"failed to create webgl2 context\");\n    }\n    if (!gl) {\n      gl = this._getRenderingContextWebgl(canvas, false);\n    }\n    if (gl.contextId == null) {\n      gl.contextId = _RenderersController._nextGlContextId++;\n    }\n    return gl;\n  }\n  _getRenderingContextWebgl(canvas, webgl2) {\n    let context_name;\n    if (this.webGL2Available()) {\n      context_name = \"webgl2\" /* WEBGL2 */;\n    } else {\n      context_name = webgl2 ? \"webgl2\" /* WEBGL2 */ : \"webgl\" /* WEBGL */;\n    }\n    let gl = canvas.getContext(context_name, CONTEXT_OPTIONS);\n    if (gl) {\n      this.printDebugMessage(`create gl context: ${context_name}.`);\n    } else {\n      context_name = webgl2 ? \"experimental-webgl2\" /* EXPERIMENTAL_WEBGL2 */ : \"experimental-webgl\" /* EXPERIMENTAL_WEBGL */;\n      this.printDebugMessage(`create gl context: ${context_name}.`);\n      gl = canvas.getContext(context_name, CONTEXT_OPTIONS);\n    }\n    return gl;\n  }\n  renderTarget(width, height, parameters) {\n    if (this.webGL2Available()) {\n      const multiSampleRenderTarget = new WebGLRenderTarget(width, height, parameters);\n      multiSampleRenderTarget.samples = 2;\n      return multiSampleRenderTarget;\n    } else {\n      return new WebGLRenderTarget(width, height, parameters);\n    }\n  }\n  linearRenderer() {\n    return this._linearRenderer = this._linearRenderer || this._createLinearRenderer();\n  }\n  _createLinearRenderer() {\n    const canvas = document.createElement(\"canvas\");\n    const gl = this.getRenderingContext(canvas);\n    if (!gl) {\n      return;\n    }\n    const renderer = this.createWebGLRenderer({\n      alpha: true,\n      premultipliedAlpha: true,\n      canvas,\n      context: gl\n    });\n    renderer.outputEncoding = LinearEncoding;\n    renderer.toneMapping = NoToneMapping;\n    return renderer;\n  }\n};\nexport let RenderersController = _RenderersController;\nRenderersController._nextGlContextId = 0;\n","export class PolyLibsController {\n  constructor() {\n    this._rootPrefix = \"\";\n    this._root = \"/three/js/libs\";\n    this._KTX2Path = \"/ktx2\";\n    this._DRACOPath = \"/draco\";\n    this._DRACOGLTFPath = \"/draco/gltf\";\n    this._XATLASPath = \"/xatlas\";\n  }\n  root() {\n    if (this._root) {\n      if (this._rootPrefix.length > 0) {\n        const root = this._root.replace(/^(\\.)/, \"\");\n        return `${this._rootPrefix}${root}`;\n      } else {\n        return this._root;\n      }\n    }\n  }\n  setRoot(url) {\n    this._root = url;\n  }\n  setRootPrefix(prefix) {\n    this._rootPrefix = prefix;\n  }\n  KTX2Path() {\n    return this._KTX2Path;\n  }\n  DRACOPath() {\n    return this._DRACOPath;\n  }\n  DRACOGLTFPath() {\n    return this._DRACOGLTFPath;\n  }\n  XATLASPath() {\n    return this._XATLASPath;\n  }\n}\n","export class NodesRegister {\n  constructor(poly) {\n    this.poly = poly;\n    this._node_register = /* @__PURE__ */ new Map();\n    this._node_register_categories = /* @__PURE__ */ new Map();\n    this._node_register_options = /* @__PURE__ */ new Map();\n  }\n  static type(node) {\n    return this.filterType(node.type());\n  }\n  static filterType(nodeType) {\n    return nodeType.toLowerCase();\n  }\n  register(node, tab_menu_category, options) {\n    var _a, _b;\n    const context = node.context();\n    const nodeType = NodesRegister.type(node);\n    let printWarnings = options == null ? void 0 : options.printWarnings;\n    if (printWarnings == null) {\n      printWarnings = true;\n    }\n    let current_nodes_for_context = this._node_register.get(context);\n    if (!current_nodes_for_context) {\n      current_nodes_for_context = /* @__PURE__ */ new Map();\n      this._node_register.set(context, current_nodes_for_context);\n    }\n    const alreadyRegisteredNode = current_nodes_for_context.get(nodeType);\n    if (alreadyRegisteredNode) {\n      const isAlreadyRegisteredNodePolyNode = ((_b = (_a = this._node_register_options.get(context)) == null ? void 0 : _a.get(nodeType)) == null ? void 0 : _b.polyNode) == true;\n      const isNewNodePolyNode = (options == null ? void 0 : options.polyNode) == true;\n      if (isAlreadyRegisteredNodePolyNode && isNewNodePolyNode) {\n      } else {\n        if (printWarnings) {\n          console.warn(`node ${context}/${nodeType} already registered`);\n        }\n        return;\n      }\n    }\n    current_nodes_for_context.set(nodeType, node);\n    if (node.onRegister) {\n      node.onRegister(this.poly);\n    }\n    if (tab_menu_category) {\n      let current_categories = this._node_register_categories.get(context);\n      if (!current_categories) {\n        current_categories = /* @__PURE__ */ new Map();\n        this._node_register_categories.set(context, current_categories);\n      }\n      current_categories.set(nodeType, tab_menu_category);\n    }\n    if (options) {\n      let current_options = this._node_register_options.get(context);\n      if (!current_options) {\n        current_options = /* @__PURE__ */ new Map();\n        this._node_register_options.set(context, current_options);\n      }\n      current_options.set(nodeType, options);\n    }\n    this.poly.pluginsRegister.registerNode(node);\n  }\n  deregister(context, nodeType) {\n    var _a, _b, _c;\n    nodeType = NodesRegister.filterType(nodeType);\n    (_a = this._node_register.get(context)) == null ? void 0 : _a.delete(nodeType);\n    (_b = this._node_register_categories.get(context)) == null ? void 0 : _b.delete(nodeType);\n    (_c = this._node_register_options.get(context)) == null ? void 0 : _c.delete(nodeType);\n  }\n  isRegistered(context, nodeType) {\n    const nodes_for_context = this._node_register.get(context);\n    if (!nodes_for_context) {\n      return false;\n    }\n    nodeType = NodesRegister.filterType(nodeType);\n    return nodes_for_context.get(nodeType) != null;\n  }\n  nodeOptions(context, nodeType) {\n    var _a;\n    nodeType = NodesRegister.filterType(nodeType);\n    return (_a = this._node_register_options.get(context)) == null ? void 0 : _a.get(nodeType);\n  }\n  registeredNodesForParentNode(parentNode) {\n    var _a, _b;\n    const context = (_a = parentNode.childrenController) == null ? void 0 : _a.context;\n    if (!context) {\n      return [];\n    }\n    const map = this._node_register.get(context);\n    if (map) {\n      const nodes_for_context = [];\n      (_b = this._node_register.get(context)) == null ? void 0 : _b.forEach((node, type) => {\n        nodes_for_context.push(node);\n      });\n      return nodes_for_context.filter((node) => {\n        const nodeType = NodesRegister.type(node);\n        const options = this.nodeOptions(context, nodeType);\n        if (!options) {\n          return true;\n        } else {\n          const parentOptions = this.nodeOptions(parentNode.context(), parentNode.type());\n          if ((parentOptions == null ? void 0 : parentOptions.polyNode) == true) {\n            return true;\n          }\n          const option_only = options[\"only\"];\n          const option_except = options[\"except\"];\n          const context_and_type = `${parentNode.context()}/${parentNode.type()}`;\n          if (option_only) {\n            return option_only.includes(context_and_type);\n          }\n          if (option_except) {\n            return !option_except.includes(context_and_type);\n          }\n          return true;\n        }\n      });\n    } else {\n      return [];\n    }\n  }\n  registeredNodes(parentNode) {\n    const nodesByType = {};\n    const nodes = this.registeredNodesForParentNode(parentNode);\n    for (let node of nodes) {\n      const nodeType = NodesRegister.type(node);\n      nodesByType[nodeType] = node;\n    }\n    return nodesByType;\n  }\n  registeredCategory(context, nodeType) {\n    var _a;\n    nodeType = NodesRegister.filterType(nodeType);\n    return (_a = this._node_register_categories.get(context)) == null ? void 0 : _a.get(nodeType);\n  }\n  map() {\n    return this._node_register;\n  }\n}\nexport class OperationsRegister {\n  constructor(poly) {\n    this.poly = poly;\n    this._operation_register = /* @__PURE__ */ new Map();\n  }\n  static type(node) {\n    return this.filterType(node.type());\n  }\n  static filterType(nodeType) {\n    return nodeType.toLowerCase();\n  }\n  register(operation, options) {\n    let printWarnings = options == null ? void 0 : options.printWarnings;\n    if (printWarnings == null) {\n      printWarnings = true;\n    }\n    const context = operation.context();\n    let current_operations_for_context = this._operation_register.get(context);\n    if (!current_operations_for_context) {\n      current_operations_for_context = /* @__PURE__ */ new Map();\n      this._operation_register.set(context, current_operations_for_context);\n    }\n    const operationType = OperationsRegister.type(operation);\n    const already_registered_operation = current_operations_for_context.get(operationType);\n    if (already_registered_operation) {\n      if (printWarnings) {\n        const message = `operation ${context}/${operationType} already registered`;\n        console.warn(message);\n      }\n      return;\n    }\n    current_operations_for_context.set(operationType, operation);\n    if (operation.onRegister) {\n      operation.onRegister(this.poly);\n    }\n    this.poly.pluginsRegister.registerOperation(operation);\n  }\n  registeredOperationsForContextAndParentType(context, parentNodeType) {\n    var _a;\n    const map = this._operation_register.get(context);\n    if (map) {\n      const nodes_for_context = [];\n      (_a = this._operation_register.get(context)) == null ? void 0 : _a.forEach((operation, type) => {\n        nodes_for_context.push(operation);\n      });\n      return nodes_for_context;\n    } else {\n      return [];\n    }\n  }\n  registeredOperation(context, operationType) {\n    const current_operations_for_context = this._operation_register.get(context);\n    if (current_operations_for_context) {\n      operationType = OperationsRegister.filterType(operationType);\n      return current_operations_for_context.get(operationType);\n    }\n  }\n}\n","import { BaseExpressionRegister } from \"./_BaseRegister\";\nexport class ExpressionRegister extends BaseExpressionRegister {\n  getMethod(name) {\n    return super.getMethod(name);\n  }\n}\n","export class BaseExpressionRegister {\n  constructor() {\n    this._methods_names = [];\n    this._methods_by_name = /* @__PURE__ */ new Map();\n  }\n  register(expression, name) {\n    this._methods_names.push(name);\n    this._methods_by_name.set(name, expression);\n  }\n  getMethod(name) {\n    return this._methods_by_name.get(name);\n  }\n  availableMethods() {\n    return this._methods_names;\n  }\n}\n","import { BaseAssemblersRegister } from \"./_BaseRegister\";\nexport class AssemblersRegister extends BaseAssemblersRegister {\n  assembler(node, name) {\n    const pair = this._controllerAssemblerByName.get(name);\n    if (pair) {\n      const controller = pair.controller;\n      const assembler = pair.assembler;\n      return new controller(node, assembler);\n    }\n    return pair;\n  }\n  unregister(name) {\n    const pair = this._controllerAssemblerByName.get(name);\n    super.unregister(name);\n    return pair;\n  }\n}\n","export var AssemblerName = /* @__PURE__ */ ((AssemblerName2) => {\n  AssemblerName2[\"GL_MESH_BASIC\"] = \"GL_MESH_BASIC\";\n  AssemblerName2[\"GL_MESH_LAMBERT\"] = \"GL_MESH_LAMBERT\";\n  AssemblerName2[\"GL_MESH_STANDARD\"] = \"GL_MESH_STANDARD\";\n  AssemblerName2[\"GL_MESH_PHONG\"] = \"GL_MESH_PHONG\";\n  AssemblerName2[\"GL_MESH_PHYSICAL\"] = \"GL_MESH_PHYSICAL\";\n  AssemblerName2[\"GL_MESH_DEPTH\"] = \"GL_MESH_DEPTH\";\n  AssemblerName2[\"GL_MESH_DISTANCE\"] = \"GL_MESH_DISTANCE\";\n  AssemblerName2[\"GL_PARTICLES\"] = \"GL_PARTICLES\";\n  AssemblerName2[\"GL_POINTS\"] = \"GL_POINTS\";\n  AssemblerName2[\"GL_LINE\"] = \"GL_LINE\";\n  AssemblerName2[\"GL_POST\"] = \"GL_POST\";\n  AssemblerName2[\"GL_RAYMARCHING\"] = \"GL_RAYMARCHING\";\n  AssemblerName2[\"GL_TEXTURE\"] = \"GL_TEXTURE\";\n  AssemblerName2[\"GL_VOLUME\"] = \"GL_VOLUME\";\n  return AssemblerName2;\n})(AssemblerName || {});\nexport class BaseAssemblersRegister {\n  constructor() {\n    this._controllerAssemblerByName = /* @__PURE__ */ new Map();\n  }\n  register(name, controller, assembler) {\n    this._controllerAssemblerByName.set(name, {\n      controller,\n      assembler\n    });\n  }\n  unregister(name) {\n    this._controllerAssemblerByName.delete(name);\n  }\n  traverse(callback) {\n    this._controllerAssemblerByName.forEach(callback);\n  }\n}\n","export class PolyPlugin {\n  constructor(_name, _callback, _options) {\n    this._name = _name;\n    this._callback = _callback;\n    this._options = _options;\n  }\n  name() {\n    return this._name;\n  }\n  libraryName() {\n    return this._options.libraryName;\n  }\n  init(poly) {\n    this._callback(poly);\n  }\n  toJSON() {\n    return {\n      name: this._name,\n      libraryName: this._options.libraryName,\n      libraryImportPath: this._options.libraryImportPath\n    };\n  }\n}\n","import { PolyPlugin } from \"./Plugin\";\nexport class PluginsRegister {\n  constructor(poly) {\n    this.poly = poly;\n    this._pluginsByName = /* @__PURE__ */ new Map();\n    this._pluginNameByNodeContextByType = /* @__PURE__ */ new Map();\n    this._pluginNameByOperationContextByType = /* @__PURE__ */ new Map();\n  }\n  async wrapConfigurePolygonjs(callback) {\n    this._configurePolygonjsPlugin = this._configurePolygonjsPlugin || new PolyPlugin(\"configurePolygonjs\", () => {\n    }, { libraryImportPath: \"\", libraryName: \"\" });\n    this._currentPlugin = this._configurePolygonjsPlugin;\n    this._pluginsByName.set(this._currentPlugin.name(), this._currentPlugin);\n    await callback();\n    this._currentPlugin = void 0;\n  }\n  register(plugin) {\n    const previousCurrentPlugin = this._currentPlugin;\n    this._currentPlugin = plugin;\n    this._pluginsByName.set(plugin.name(), plugin);\n    plugin.init(this.poly);\n    this._currentPlugin = previousCurrentPlugin;\n  }\n  pluginByName(pluginName) {\n    return this._pluginsByName.get(pluginName);\n  }\n  registerNode(node) {\n    if (!this._currentPlugin) {\n      return;\n    }\n    const context = node.context();\n    const type = node.type();\n    let mapForContext = this._pluginNameByNodeContextByType.get(context);\n    if (!mapForContext) {\n      mapForContext = /* @__PURE__ */ new Map();\n      this._pluginNameByNodeContextByType.set(context, mapForContext);\n    }\n    mapForContext.set(type, this._currentPlugin.name());\n  }\n  registerOperation(operation) {\n    if (!this._currentPlugin) {\n      return;\n    }\n    const context = operation.context();\n    const type = operation.type();\n    let mapForContext = this._pluginNameByOperationContextByType.get(context);\n    if (!mapForContext) {\n      mapForContext = /* @__PURE__ */ new Map();\n      this._pluginNameByOperationContextByType.set(context, mapForContext);\n    }\n    mapForContext.set(type, this._currentPlugin.name());\n  }\n  toJson() {\n    const data = {\n      plugins: {},\n      nodes: {},\n      operations: {}\n    };\n    this._pluginsByName.forEach((plugin, name) => {\n      data.plugins[name] = plugin.toJSON();\n    });\n    this._pluginNameByNodeContextByType.forEach((mapForContext, context) => {\n      data.nodes[context] = {};\n      mapForContext.forEach((pluginName, type) => {\n        data.nodes[context][type] = pluginName;\n      });\n    });\n    this._pluginNameByOperationContextByType.forEach((mapForContext, context) => {\n      data.operations[context] = {};\n      mapForContext.forEach((pluginName, type) => {\n        data.operations[context][type] = pluginName;\n      });\n    });\n    return data;\n  }\n}\n","export class PolyCamerasRegister {\n  constructor(poly) {\n    this._cameraNodeTypes = [];\n    this._registeredViewerCreateCallbackByCamera = /* @__PURE__ */ new Map();\n  }\n  registerNodeType(nodeType) {\n    if (!this._cameraNodeTypes.includes(nodeType)) {\n      this._cameraNodeTypes.push(nodeType);\n    }\n  }\n  registeredNodeTypes() {\n    return this._cameraNodeTypes;\n  }\n  register(cameraClass, viewerCreateCallback) {\n    this._registeredViewerCreateCallbackByCamera.set(cameraClass, viewerCreateCallback);\n  }\n  createViewer(options) {\n    const callback = this._registeredViewerCreateCallbackByCamera.get(options.camera.constructor);\n    if (!callback) {\n      console.error(\"no createViewer callback available\");\n      console.log(\"createViewer\", options.camera, options.camera.constructor, this._registeredViewerCreateCallbackByCamera);\n      return;\n    }\n    return callback(options);\n  }\n  objectRegistered(object) {\n    const callback = this._registeredViewerCreateCallbackByCamera.get(object.constructor);\n    return callback != null;\n  }\n}\n","import { createObjectURL } from \"../../core/BlobUtils\";\nexport class BlobsController {\n  constructor(poly) {\n    this.poly = poly;\n    this._blobWrappersByUrl = /* @__PURE__ */ new Map();\n  }\n  recording() {\n    return !this.poly.playerMode();\n  }\n  blobUrl(url) {\n    var _a;\n    return (_a = this._blobWrappersByUrl.get(url)) == null ? void 0 : _a.blobUrl;\n  }\n  clear() {\n    this._blobWrappersByUrl.clear();\n  }\n  clearBlobsForNode(node) {\n    const urls = [];\n    const nodeId = node.graphNodeId();\n    this._blobWrappersByUrl.forEach((blobWrapper, url) => {\n      if (blobWrapper.referringNodeIds.has(nodeId)) {\n        urls.push(url);\n      }\n    });\n    for (let url of urls) {\n      const wrapper = this._blobWrappersByUrl.get(url);\n      if (wrapper) {\n        if (wrapper.referringNodeIds.size == 1) {\n          this._blobWrappersByUrl.delete(url);\n        } else {\n          wrapper.referringNodeIds.delete(nodeId);\n        }\n      }\n    }\n  }\n  _assignBlobToNode(url, node, blobWrapper, options = {}) {\n    if (options.multiAssetsForNode != true) {\n      this.clearBlobsForNode(node);\n    }\n    const currentBlobWrapper = this._blobWrappersByUrl.get(url);\n    if (currentBlobWrapper) {\n      currentBlobWrapper.referringNodeIds.add(node.graphNodeId());\n    } else {\n      this._blobWrappersByUrl.set(url, blobWrapper);\n    }\n  }\n  async setVirtualFile(file, uniqueId) {\n    const blob = file;\n    const blobWrapper = {\n      blob,\n      blobUrl: this._createBlobUrl(file),\n      referringNodeIds: /* @__PURE__ */ new Set()\n    };\n    this._blobWrappersByUrl.set(uniqueId, blobWrapper);\n  }\n  async fetchBlobGlobal(url) {\n    if (!this.recording()) {\n      return {};\n    }\n    try {\n      const existingBlobWrapper = this._blobWrappersByUrl.get(url);\n      if (existingBlobWrapper) {\n        return { blobWrapper: existingBlobWrapper };\n      }\n      const remapedUrl = this.poly.assetUrls.remapedUrl(url) || url;\n      const response = await fetch(remapedUrl);\n      if (response.ok) {\n        const blob = await response.blob();\n        const blobWrapper = {\n          blob,\n          blobUrl: this._createBlobUrl(blob),\n          referringNodeIds: /* @__PURE__ */ new Set()\n        };\n        this._blobWrappersByUrl.set(url, blobWrapper);\n        return {\n          blobWrapper\n        };\n      } else {\n        return { error: `failed to fetch ${remapedUrl}` };\n      }\n    } catch (err) {\n      return { error: `failed to fetch ${url}` };\n    }\n  }\n  async fetchBlobForNode(options) {\n    if (!this.recording()) {\n      return {};\n    }\n    try {\n      const nodeId = options.node.graphNodeId();\n      const existingBlobWrapper = this._blobWrappersByUrl.get(options.fullUrl);\n      if (existingBlobWrapper) {\n        existingBlobWrapper.referringNodeIds.add(nodeId);\n        return { blobWrapper: existingBlobWrapper };\n      }\n      const remapedUrl = this.poly.assetUrls.remapedUrl(options.fullUrl) || options.fullUrl;\n      const response = await fetch(remapedUrl);\n      if (response.ok) {\n        const blob = await response.blob();\n        const referringNodeIds = /* @__PURE__ */ new Set();\n        referringNodeIds.add(nodeId);\n        const blobWrapper = {\n          blob,\n          blobUrl: this._createBlobUrl(blob),\n          referringNodeIds\n        };\n        this._assignBlobToNode(options.fullUrl, options.node, blobWrapper, {\n          multiAssetsForNode: options.multiAssetsForNode\n        });\n        return {\n          blobWrapper\n        };\n      } else {\n        return { error: `failed to fetch ${options.fullUrl}` };\n      }\n    } catch (err) {\n      return { error: `failed to fetch ${options.fullUrl}` };\n    }\n  }\n  traverse(callback) {\n    const _forEachBlob = (urls2, isGlobal) => {\n      this._blobWrappersByUrl.forEach((blobWrapper, url) => {\n        const isWrapperGlobal = blobWrapper.referringNodeIds.size == 0;\n        if (isWrapperGlobal == isGlobal) {\n          urls2.push(url);\n        }\n      });\n    };\n    const urls = [];\n    _forEachBlob(urls, true);\n    _forEachBlob(urls, false);\n    urls.sort();\n    for (let url of urls) {\n      const blobWrapper = this._blobWrappersByUrl.get(url);\n      if (blobWrapper) {\n        const blobData = {\n          url,\n          blobWrapper\n        };\n        callback(blobData);\n      }\n    }\n  }\n  _createBlobUrl(blob) {\n    return createObjectURL(blob);\n  }\n  assetsManifestWithBlobsMap() {\n    const manifest = {};\n    const blobsMap = /* @__PURE__ */ new Map();\n    const blobs = [];\n    const fullUrls = [];\n    this.traverse((blobData) => {\n      blobs.push(blobData.blobWrapper.blob);\n      const fullUrl = blobData.url;\n      fullUrls.push(fullUrl);\n    });\n    for (let i = 0; i < blobs.length; i++) {\n      const paramUrl = fullUrls[i];\n      const blob = blobs[i];\n      const assetShortName = paramUrl.split(\"?\")[0];\n      const elements = paramUrl.split(\".\");\n      const ext = elements[elements.length - 1];\n      const assignedName = `${i}.${ext}`;\n      const fileNameInZip = `assets/${assignedName}`;\n      blobsMap.set(fileNameInZip, blob);\n      manifest[assetShortName] = assignedName;\n    }\n    return {\n      manifest,\n      blobsMap\n    };\n  }\n}\n","export function createObjectURL(fileOrBlob) {\n  const urlCreator = window.URL || window.webkitURL;\n  return urlCreator.createObjectURL(fileOrBlob);\n}\nexport function downloadBlob(blob, fileName) {\n  const urlCreator = window.URL || window.webkitURL;\n  const blobUrl = urlCreator.createObjectURL(blob);\n  const element = document.createElement(\"a\");\n  element.setAttribute(\"href\", blobUrl);\n  element.setAttribute(\"target\", \"_blank\");\n  element.setAttribute(\"download\", fileName);\n  element.style.display = \"none\";\n  document.body.appendChild(element);\n  element.click();\n  document.body.removeChild(element);\n}\n","export class AssetUrlsController {\n  setMap(map) {\n    this._map = map;\n  }\n  remapedUrl(url) {\n    if (!this._map) {\n      return;\n    }\n    const elements = url.split(\"?\");\n    const preQuery = elements[0];\n    const query = elements[1];\n    const remapedUrl = this._map[preQuery];\n    if (remapedUrl) {\n      if (query) {\n        return `${remapedUrl}?${query}`;\n      } else {\n        return remapedUrl;\n      }\n    }\n  }\n}\n","export class PolyPerformanceformanceController {\n  setPerformanceManager(p) {\n    this._performanceManager = p;\n  }\n  performanceManager() {\n    return this._performanceManager || window.performance;\n  }\n}\n","export class ScenesRegister {\n  constructor() {\n    this._scenes = /* @__PURE__ */ new Set();\n    this._registerTimeByScene = /* @__PURE__ */ new Map();\n  }\n  registerScene(scene) {\n    if (this._scenes.has(scene)) {\n      console.warn(\"scene was already registered\");\n      return;\n    }\n    this._scenes.add(scene);\n    this._registerTimeByScene.set(scene, performance.now());\n    this._updateCache();\n  }\n  deregisterScene(scene) {\n    this._scenes.delete(scene);\n    this._registerTimeByScene.delete(scene);\n    this._updateCache();\n  }\n  lastRegisteredScene() {\n    return this._lastRegisteredScene;\n  }\n  scenes() {\n    const scenes = [];\n    this._scenes.forEach((scene) => scenes.push(scene));\n    return scenes;\n  }\n  _updateCache() {\n    this._lastRegisteredScene = void 0;\n    this._registerTimeByScene.forEach((registerTime, scene) => {\n      if (this._lastRegisteredScene == void 0) {\n        this._lastRegisteredScene = scene;\n      } else {\n        const lastRegisterTime = this._registerTimeByScene.get(this._lastRegisteredScene);\n        if (registerTime != null && lastRegisterTime != null) {\n          if (registerTime > lastRegisterTime) {\n            this._lastRegisteredScene = scene;\n          }\n        }\n      }\n    });\n  }\n}\n","export class LogoController {\n  constructor() {\n    this._logoDisplayed = false;\n    this._redirectUrl = \"https://polygonjs.com\";\n  }\n  display(options) {\n    this._logoDisplayed = true;\n    this._datauri = options.datauri;\n    this._redirectUrl = options.redirectUrl;\n  }\n  displayed() {\n    return this._logoDisplayed;\n  }\n  datauri() {\n    return this._datauri;\n  }\n  redirectUrl() {\n    return this._redirectUrl;\n  }\n}\n","import { RenderersController } from \"./poly/RenderersController\";\nimport { PolyLibsController } from \"./poly/PolyLibsController\";\nimport {\n  NodesRegister,\n  OperationsRegister\n} from \"./poly/registers/nodes/NodesRegister\";\nimport { ExpressionRegister } from \"./poly/registers/expressions/ExpressionRegister\";\nimport { AssemblersRegister } from \"./poly/registers/assemblers/AssemblersRegistry\";\nimport { PluginsRegister } from \"./poly/registers/plugins/PluginsRegister\";\nimport { PolyCamerasRegister } from \"./poly/registers/cameras/PolyCamerasRegister\";\nimport { BlobsController } from \"./poly/BlobsController\";\nimport { AssetUrlsController } from \"./poly/AssetUrlsController\";\nimport { PolyPerformanceformanceController } from \"./poly/PerformanceController\";\nimport { ScenesRegister } from \"./poly/ScenesRegister\";\nimport { LogoController } from \"./poly/LogoController\";\nexport class PolyEngine {\n  constructor() {\n    this.renderersController = new RenderersController();\n    this.scenesRegister = new ScenesRegister();\n    this.nodesRegister = new NodesRegister(this);\n    this.operationsRegister = new OperationsRegister(this);\n    this.expressionsRegister = new ExpressionRegister();\n    this.assemblersRegister = new AssemblersRegister();\n    this.pluginsRegister = new PluginsRegister(this);\n    this.camerasRegister = new PolyCamerasRegister(this);\n    this.blobs = new BlobsController(this);\n    this.assetUrls = new AssetUrlsController();\n    this.logo = new LogoController();\n    this.performance = new PolyPerformanceformanceController();\n    this.scenesByUuid = {};\n    this._playerMode = true;\n    this._logger = null;\n  }\n  static _instance_() {\n    if (window.__POLYGONJS_POLY_INSTANCE__) {\n      return window.__POLYGONJS_POLY_INSTANCE__;\n    } else {\n      const instance = new PolyEngine();\n      window.__POLYGONJS_POLY_INSTANCE__ = instance;\n      return window.__POLYGONJS_POLY_INSTANCE__;\n    }\n  }\n  setPlayerMode(mode) {\n    this._playerMode = mode;\n  }\n  playerMode() {\n    return this._playerMode;\n  }\n  registerNode(node, tab_menu_category, options) {\n    this.nodesRegister.register(node, tab_menu_category, options);\n  }\n  registerOperation(operation, options) {\n    this.operationsRegister.register(operation, options);\n  }\n  registerCamera(cameraClass, viewerCreateCallback) {\n    this.camerasRegister.register(cameraClass, viewerCreateCallback);\n  }\n  registerCameraNodeType(nodeType) {\n    this.camerasRegister.registerNodeType(nodeType);\n  }\n  registerPlugin(plugin) {\n    this.pluginsRegister.register(plugin);\n  }\n  wrapConfigurePolygonjs(callback) {\n    this.pluginsRegister.wrapConfigurePolygonjs(callback);\n  }\n  registeredNodes(parentNode) {\n    return this.nodesRegister.registeredNodes(parentNode);\n  }\n  registeredOperation(parent_context, operation_type) {\n    return this.operationsRegister.registeredOperation(parent_context, operation_type);\n  }\n  inWorkerThread() {\n    return false;\n  }\n  get libs() {\n    return this._libs_controller = this._libs_controller || new PolyLibsController();\n  }\n  setEnv(env) {\n    this._env = env;\n  }\n  env() {\n    return this._env;\n  }\n  setLogger(logger) {\n    this._logger = logger;\n  }\n  log(message, ...optionalParams) {\n    var _a;\n    (_a = this._logger) == null ? void 0 : _a.log(...[message, ...optionalParams]);\n  }\n  warn(message, ...optionalParams) {\n    var _a;\n    (_a = this._logger) == null ? void 0 : _a.warn(...[message, ...optionalParams]);\n  }\n  error(message, ...optionalParams) {\n    var _a;\n    (_a = this._logger) == null ? void 0 : _a.error(...[message, ...optionalParams]);\n  }\n}\nexport const Poly = PolyEngine._instance_();\n","import { Poly } from \"../../engine/Poly\";\nexport class DirtyController {\n  constructor(node) {\n    this.node = node;\n    this._dirtyCount = 0;\n    this._dirty = true;\n  }\n  dispose() {\n    this._cachedSuccessors = void 0;\n    this._postDirtyHooks = void 0;\n    this._postDirtyHookNames = void 0;\n  }\n  isDirty() {\n    return this._dirty === true;\n  }\n  dirtyTimestamp() {\n    return this._dirtyTimestamp;\n  }\n  dirtyCount() {\n    return this._dirtyCount;\n  }\n  addPostDirtyHook(name, method) {\n    this._postDirtyHookNames = this._postDirtyHookNames || [];\n    this._postDirtyHooks = this._postDirtyHooks || [];\n    if (!this._postDirtyHookNames.includes(name)) {\n      this._postDirtyHookNames.push(name);\n      this._postDirtyHooks.push(method);\n    } else {\n      console.warn(`hook with name ${name} already exists`, this.node);\n    }\n  }\n  removePostDirtyHook(name) {\n    if (this._postDirtyHookNames && this._postDirtyHooks) {\n      const index = this._postDirtyHookNames.indexOf(name);\n      if (index >= 0) {\n        this._postDirtyHookNames.splice(index, 1);\n        this._postDirtyHooks.splice(index, 1);\n      }\n    }\n  }\n  hasHook(name) {\n    if (this._postDirtyHookNames) {\n      return this._postDirtyHookNames.includes(name);\n    }\n    return false;\n  }\n  removeDirtyState() {\n    this._dirty = false;\n  }\n  setForbiddenTriggerNodes(nodes) {\n    if (this._forbiddenTriggerNodeIds) {\n      this._forbiddenTriggerNodeIds.clear();\n    } else {\n      this._forbiddenTriggerNodeIds = /* @__PURE__ */ new Set();\n    }\n    for (let node of nodes) {\n      this._forbiddenTriggerNodeIds.add(node.graphNodeId());\n      node.dirtyController.clearSuccessorsCacheWithPredecessors();\n    }\n  }\n  isForbiddenTriggerNodeId(nodeId) {\n    return this._forbiddenTriggerNodeIds != null && this._forbiddenTriggerNodeIds.has(nodeId);\n  }\n  setDirty(original_trigger_graph_node, propagate) {\n    if (propagate == null) {\n      propagate = true;\n    }\n    if (original_trigger_graph_node && this.isForbiddenTriggerNodeId(original_trigger_graph_node.graphNodeId())) {\n      return;\n    }\n    if (original_trigger_graph_node == null) {\n      original_trigger_graph_node = this.node;\n    }\n    this._dirty = true;\n    this._dirtyTimestamp = Poly.performance.performanceManager().now();\n    this._dirtyCount += 1;\n    this.runPostDirtyHooks(original_trigger_graph_node);\n    if (propagate === true) {\n      this.setSuccessorsDirty(original_trigger_graph_node);\n    }\n  }\n  runPostDirtyHooks(original_trigger_graph_node) {\n    if (!this._postDirtyHooks) {\n      return;\n    }\n    const cooker = this.node.scene().cooker;\n    if (cooker.blocked()) {\n      cooker.enqueue(this.node, original_trigger_graph_node);\n    } else {\n      for (let hook of this._postDirtyHooks) {\n        hook(original_trigger_graph_node);\n      }\n    }\n  }\n  setSuccessorsDirty(original_trigger_graph_node) {\n    if (original_trigger_graph_node == null) {\n      original_trigger_graph_node = this.node;\n    }\n    const propagate = false;\n    this._cachedSuccessors = this._cachedSuccessors || this.node.graphAllSuccessors();\n    for (let successor of this._cachedSuccessors) {\n      successor.dirtyController.setDirty(original_trigger_graph_node, propagate);\n    }\n  }\n  clearSuccessorsCache() {\n    this._cachedSuccessors = void 0;\n  }\n  clearSuccessorsCacheWithPredecessors() {\n    this.clearSuccessorsCache();\n    const predecessors = this.node.graphAllPredecessors();\n    for (let predecessor of predecessors) {\n      predecessor.dirtyController.clearSuccessorsCache();\n    }\n  }\n}\n","import { DirtyController } from \"./DirtyController\";\nexport class CoreGraphNode {\n  constructor(_scene, _name) {\n    this._scene = _scene;\n    this._name = _name;\n    this._dirtyController = new DirtyController(this);\n    this.disposed = false;\n    this._graphNodeId = _scene.graph.nextId();\n    _scene.graph.addNode(this);\n    this._graph = _scene.graph;\n  }\n  dispose() {\n    this._dirtyController.dispose();\n    this.graphRemove();\n    this.disposed = true;\n  }\n  name() {\n    return this._name;\n  }\n  setName(name) {\n    this._name = name;\n  }\n  scene() {\n    return this._scene;\n  }\n  graphNodeId() {\n    return this._graphNodeId;\n  }\n  get dirtyController() {\n    return this._dirtyController;\n  }\n  setDirty(trigger) {\n    trigger = trigger || this;\n    this._dirtyController.setDirty(trigger);\n  }\n  setSuccessorsDirty(trigger) {\n    this._dirtyController.setSuccessorsDirty(trigger);\n  }\n  removeDirtyState() {\n    this._dirtyController.removeDirtyState();\n  }\n  isDirty() {\n    return this._dirtyController.isDirty();\n  }\n  addPostDirtyHook(name, callback) {\n    this._dirtyController.addPostDirtyHook(name, callback);\n  }\n  removePostDirtyHook(name) {\n    this._dirtyController.removePostDirtyHook(name);\n  }\n  graphRemove() {\n    this._graph.removeNode(this);\n  }\n  addGraphInput(src, checkCycle = true) {\n    return this._graph.connect(src, this, checkCycle);\n  }\n  removeGraphInput(src) {\n    this._graph.disconnect(src, this);\n  }\n  graphDisconnectPredecessors() {\n    this._graph.disconnectPredecessors(this);\n  }\n  graphDisconnectSuccessors() {\n    this._graph.disconnectSuccessors(this);\n  }\n  graphPredecessorIds() {\n    return this._graph.predecessorIds(this._graphNodeId) || [];\n  }\n  graphPredecessors() {\n    return this._graph.predecessors(this);\n  }\n  graphSuccessors() {\n    return this._graph.successors(this);\n  }\n  graphAllPredecessors() {\n    return this._graph.allPredecessors(this);\n  }\n  graphAllSuccessors() {\n    return this._graph.allSuccessors(this);\n  }\n}\n","export var NodeEvent = /* @__PURE__ */ ((NodeEvent2) => {\n  NodeEvent2[\"CREATED\"] = \"node_created\";\n  NodeEvent2[\"DELETED\"] = \"node_deleted\";\n  NodeEvent2[\"NAME_UPDATED\"] = \"node_name_update\";\n  NodeEvent2[\"OVERRIDE_CLONABLE_STATE_UPDATE\"] = \"node_override_clonable_state_update\";\n  NodeEvent2[\"NAMED_OUTPUTS_UPDATED\"] = \"node_named_outputs_updated\";\n  NodeEvent2[\"NAMED_INPUTS_UPDATED\"] = \"node_named_inputs_updated\";\n  NodeEvent2[\"INPUTS_UPDATED\"] = \"node_inputs_updated\";\n  NodeEvent2[\"PARAMS_UPDATED\"] = \"node_params_updated\";\n  NodeEvent2[\"UI_DATA_POSITION_UPDATED\"] = \"node_ui_data_position_updated\";\n  NodeEvent2[\"UI_DATA_COMMENT_UPDATED\"] = \"node_ui_data_comment_updated\";\n  NodeEvent2[\"ERROR_UPDATED\"] = \"node_error_updated\";\n  NodeEvent2[\"FLAG_BYPASS_UPDATED\"] = \"bypass_flag_updated\";\n  NodeEvent2[\"FLAG_DISPLAY_UPDATED\"] = \"display_flag_updated\";\n  NodeEvent2[\"FLAG_OPTIMIZE_UPDATED\"] = \"optimize_flag_updated\";\n  NodeEvent2[\"SELECTION_UPDATED\"] = \"selection_updated\";\n  NodeEvent2[\"POLY_NODE_LOCK_STATE_UPDATED\"] = \"lock_state_updated\";\n  return NodeEvent2;\n})(NodeEvent || {});\n","import { Euler, Vector2, Vector3, Vector4, Quaternion, Color } from \"three\";\nexport class CoreType {\n  static isNumber(value) {\n    return typeof value == \"number\";\n  }\n  static isVector(value) {\n    return value instanceof Vector2 || value instanceof Vector3 || value instanceof Vector4;\n  }\n  static isColor(value) {\n    return value instanceof Color;\n  }\n  static isEuler(value) {\n    return value instanceof Euler;\n  }\n  static isQuaternion(value) {\n    return value instanceof Quaternion;\n  }\n  static isString(value) {\n    return typeof value == \"string\";\n  }\n  static isBoolean(value) {\n    return value === true || value === false;\n  }\n  static isNaN(value) {\n    return isNaN(value);\n  }\n  static isArray(value) {\n    return Array.isArray(value);\n  }\n  static isObject(value) {\n    var type = typeof value;\n    return value != null && (type == \"object\" || type == \"function\");\n  }\n}\nexport function isBooleanTrue(value) {\n  return value;\n}\nexport function ensureString(value) {\n  return value;\n}\n","import { Vector2 } from \"three\";\nimport { Color } from \"three\";\nimport { NodeEvent } from \"../../poly/NodeEvent\";\nimport { CoreType } from \"../../../core/Type\";\nexport class UIData {\n  constructor(node, x = 0, y = 0) {\n    this.node = node;\n    this._position = new Vector2();\n    this._width = 50;\n    this._color = new Color(0.75, 0.75, 0.75);\n    this._layoutVertical = true;\n    this._json = {\n      x: 0,\n      y: 0\n    };\n    this._position.x = x;\n    this._position.y = y;\n  }\n  dispose() {\n    this._comment = void 0;\n  }\n  setComment(comment) {\n    this._comment = comment;\n    this.node.emit(NodeEvent.UI_DATA_COMMENT_UPDATED);\n  }\n  comment() {\n    return this._comment;\n  }\n  setColor(color) {\n    this._color = color;\n  }\n  color() {\n    return this._color;\n  }\n  setLayoutHorizontal() {\n    this._layoutVertical = false;\n  }\n  isLayoutVertical() {\n    return this._layoutVertical;\n  }\n  copy(ui_data) {\n    this._position.copy(ui_data.position());\n    this._color.copy(ui_data.color());\n  }\n  position() {\n    return this._position;\n  }\n  setPosition(newPosition, y = 0) {\n    if (CoreType.isNumber(newPosition)) {\n      const x = newPosition;\n      this._position.set(x, y);\n    } else {\n      this._position.copy(newPosition);\n    }\n    this.node.emit(NodeEvent.UI_DATA_POSITION_UPDATED);\n    return this;\n  }\n  translate(offset, snap = false) {\n    this._position.add(offset);\n    if (snap) {\n      this._position.x = Math.round(this._position.x);\n      this._position.y = Math.round(this._position.y);\n    }\n    this.node.emit(NodeEvent.UI_DATA_POSITION_UPDATED);\n    return this;\n  }\n  toJSON() {\n    this._json.x = this._position.x;\n    this._json.y = this._position.y;\n    this._json.comment = this._comment;\n    return this._json;\n  }\n}\n","export class BaseFlag {\n  constructor(node) {\n    this.node = node;\n    this._state = true;\n    this._hooks = null;\n  }\n  onUpdate(hook) {\n    this._hooks = this._hooks || [];\n    this._hooks.push(hook);\n  }\n  _onUpdate() {\n  }\n  set(newState) {\n    if (this._state != newState) {\n      if (this.node.insideALockedParent()) {\n        const lockedParent = this.node.lockedParent();\n        console.warn(`node '${this.node.path()}' cannot have its flag changed, since it is inside '${lockedParent ? lockedParent.path() : \"\"}', which is locked`);\n        return;\n      }\n      this._state = newState;\n      this._onUpdate();\n      this.runHooks();\n    }\n  }\n  active() {\n    return this._state;\n  }\n  toggle() {\n    this.set(!this._state);\n  }\n  runHooks() {\n    if (this._hooks) {\n      for (let hook of this._hooks) {\n        hook();\n      }\n    }\n  }\n}\n","import { BaseFlag } from \"./Base\";\nimport { NodeEvent } from \"../../../poly/NodeEvent\";\nexport class BypassFlag extends BaseFlag {\n  constructor() {\n    super(...arguments);\n    this._state = false;\n  }\n  _onUpdate() {\n    this.node.emit(NodeEvent.FLAG_BYPASS_UPDATED);\n    this.node.setDirty();\n  }\n}\n","import { BaseFlag } from \"./Base\";\nimport { NodeEvent } from \"../../../poly/NodeEvent\";\nexport class DisplayFlag extends BaseFlag {\n  _onUpdate() {\n    this.node.emit(NodeEvent.FLAG_DISPLAY_UPDATED);\n  }\n}\n","import { BaseFlag } from \"./Base\";\nimport { NodeEvent } from \"../../../poly/NodeEvent\";\nexport class OptimizeFlag extends BaseFlag {\n  constructor() {\n    super(...arguments);\n    this._state = false;\n  }\n  _onUpdate() {\n    this.node.emit(NodeEvent.FLAG_OPTIMIZE_UPDATED);\n  }\n}\n","import { BypassFlag } from \"./flags/Bypass\";\nimport { DisplayFlag } from \"./flags/Display\";\nimport { OptimizeFlag } from \"./flags/Optimize\";\nexport class FlagsController {\n  constructor(node) {\n    this.node = node;\n  }\n  hasDisplay() {\n    return false;\n  }\n  hasBypass() {\n    return false;\n  }\n  hasOptimize() {\n    return false;\n  }\n}\nfunction Display(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.display = new DisplayFlag(this.node);\n    }\n    hasDisplay() {\n      return true;\n    }\n  };\n}\nfunction Bypass(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.bypass = new BypassFlag(this.node);\n    }\n    hasBypass() {\n      return true;\n    }\n  };\n}\nfunction Optimize(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.optimize = new OptimizeFlag(this.node);\n    }\n    hasOptimize() {\n      return true;\n    }\n  };\n}\nexport class FlagsControllerD extends Display(FlagsController) {\n}\nexport class FlagsControllerB extends Bypass(FlagsController) {\n}\nexport class FlagsControllerDB extends Bypass(Display(FlagsController)) {\n}\nexport class FlagsControllerBO extends Optimize(Bypass(FlagsController)) {\n}\nexport class FlagsControllerDBO extends Optimize(Bypass(Display(FlagsController))) {\n}\n","export class NodeBaseState {\n  constructor(node) {\n    this.node = node;\n  }\n}\n","import { NodeBaseState } from \"./Base\";\nexport class NodeTimeDependentState extends NodeBaseState {\n  active() {\n    return this.paramsTimeDependent() || this.inputsTimeDependent();\n  }\n  paramsTimeDependent() {\n    const param_names = this.node.params.names;\n    for (let param_name of param_names) {\n      const param = this.node.params.get(param_name);\n      if (param && param.states.timeDependent.active()) {\n        return true;\n      }\n    }\n    return false;\n  }\n  inputsTimeDependent() {\n    const inputs = this.node.io.inputs.inputs();\n    for (let input of inputs) {\n      if (input && input.states.timeDependent.active()) {\n        return true;\n      }\n    }\n    return false;\n  }\n  forceTimeDependent() {\n    const predecessor_ids = this.node.graphPredecessors().map((n) => n.graphNodeId());\n    const frame_node = this.node.scene().timeController.graphNode;\n    if (!predecessor_ids.includes(frame_node.graphNodeId())) {\n      this.node.addGraphInput(frame_node, false);\n    }\n  }\n  unforceTimeDependent() {\n    const frame_node = this.node.scene().timeController.graphNode;\n    this.node.removeGraphInput(frame_node);\n  }\n}\n","import { NodeEvent } from \"../../../poly/NodeEvent\";\nimport { NodeBaseState } from \"./Base\";\nimport { Poly } from \"../../../Poly\";\nexport class NodeErrorState extends NodeBaseState {\n  set(message) {\n    if (this._message != message) {\n      if (message) {\n        Poly.error(`[${this.node.path()}] error: '${message}'`);\n      } else {\n        Poly.warn(`[${this.node.path()}] clear error`);\n      }\n      this._message = message;\n      this.onUpdate();\n    }\n  }\n  message() {\n    return this._message;\n  }\n  clear() {\n    this.set(void 0);\n  }\n  active() {\n    return this._message != null;\n  }\n  onUpdate() {\n    if (this._message != null) {\n      this.node._setContainer(null, `from error '${this._message}'`);\n    }\n    this.node.emit(NodeEvent.ERROR_UPDATED);\n  }\n}\n","import { NodeTimeDependentState } from \"./states/TimeDependent\";\nimport { NodeErrorState } from \"./states/Error\";\nexport class NodeStatesController {\n  constructor(node) {\n    this.node = node;\n    this.timeDependent = new NodeTimeDependentState(this.node);\n    this.error = new NodeErrorState(this.node);\n  }\n}\n","export const NODE_PATH_DEFAULT = {\n  NODE: {\n    EMPTY: \"\",\n    UV: \"/COP/imageUv\",\n    ENV_MAP: \"/COP/envMap\",\n    CUBE_MAP: \"/COP/cubeCamera\"\n  }\n};\nclass GraphNodePathParamValue {\n  constructor(_path = \"\") {\n    this._path = _path;\n    this._graphNode = null;\n  }\n  graphNode() {\n    return this._graphNode;\n  }\n  _setGraphNode(graphNode) {\n    this._graphNode = graphNode;\n  }\n  path() {\n    return this._path;\n  }\n  setPath(path) {\n    this._path = path;\n  }\n  clone() {\n    const cloned = new this.constructor(this._path);\n    cloned._setGraphNode(this._graphNode);\n    return cloned;\n  }\n}\nexport class TypedNodePathParamValue extends GraphNodePathParamValue {\n  setNode(node) {\n    this._graphNode = node;\n  }\n  node() {\n    return this._graphNode;\n  }\n  graphNodePath() {\n    var _a;\n    return (_a = this.node()) == null ? void 0 : _a.path();\n  }\n  resolve(nodeStart) {\n    this._graphNode = CoreWalker.findNode(nodeStart, this._path);\n  }\n  nodeWithContext(context, errorState) {\n    const foundNode = this.node();\n    if (!foundNode) {\n      errorState == null ? void 0 : errorState.set(`no node found at ${this.path()}`);\n      return;\n    }\n    const node_context = foundNode.context();\n    if (node_context == context) {\n      return foundNode;\n    } else {\n      errorState == null ? void 0 : errorState.set(`expected ${context} node, but got a ${node_context}`);\n      return;\n    }\n  }\n}\nexport class TypedParamPathParamValue extends GraphNodePathParamValue {\n  setParam(param) {\n    this._graphNode = param;\n  }\n  param() {\n    return this._graphNode;\n  }\n  graphNodePath() {\n    var _a;\n    return (_a = this.param()) == null ? void 0 : _a.path();\n  }\n  resolve(nodeStart) {\n    this._graphNode = CoreWalker.findParam(nodeStart, this._path);\n  }\n  paramWithType(paramType, error_state) {\n    const foundParam = this.param();\n    if (!foundParam) {\n      error_state == null ? void 0 : error_state.set(`no param found at ${this.path()}`);\n      return;\n    }\n    if (foundParam.type() == paramType) {\n      return foundParam;\n    } else {\n      error_state == null ? void 0 : error_state.set(`expected ${paramType} node, but got a ${foundParam.type()}`);\n      return;\n    }\n  }\n}\nconst _CoreWalker = class {\n  static splitParentChild(path) {\n    const elements = path.split(_CoreWalker.SEPARATOR).filter((e) => e.length > 0);\n    const child_path = elements.pop();\n    const parent_path = elements.join(_CoreWalker.SEPARATOR);\n    return { parent: parent_path, child: child_path };\n  }\n  static findNode(node_src, path, decomposedPath) {\n    if (!node_src) {\n      return null;\n    }\n    const elements = path.split(_CoreWalker.SEPARATOR).filter((e) => e.length > 0);\n    const first_element = elements[0];\n    let next_node = null;\n    if (path[0] === _CoreWalker.SEPARATOR) {\n      const path_from_root = path.substring(1);\n      next_node = this.findNode(node_src.root(), path_from_root, decomposedPath);\n    } else {\n      switch (first_element) {\n        case _CoreWalker.PARENT:\n          decomposedPath == null ? void 0 : decomposedPath.add_path_element(first_element);\n          next_node = node_src.parent();\n          break;\n        case _CoreWalker.CURRENT:\n          decomposedPath == null ? void 0 : decomposedPath.add_path_element(first_element);\n          next_node = node_src;\n          break;\n        default:\n          next_node = node_src.node(first_element);\n          if (next_node) {\n            decomposedPath == null ? void 0 : decomposedPath.add_node(first_element, next_node);\n          }\n      }\n      if (next_node != null && elements.length > 1) {\n        const remainder = elements.slice(1).join(_CoreWalker.SEPARATOR);\n        next_node = this.findNode(next_node, remainder, decomposedPath);\n      }\n      return next_node;\n    }\n    return next_node;\n  }\n  static findParam(node_src, path, decomposedPath) {\n    if (!node_src) {\n      return null;\n    }\n    const elements = path.split(_CoreWalker.SEPARATOR);\n    if (elements.length === 1) {\n      return node_src.params.get(elements[0]);\n    } else {\n      let node = null;\n      if (path[0] === _CoreWalker.SEPARATOR && elements.length == 2) {\n        node = node_src.root();\n      } else {\n        const node_path = elements.slice(0, +(elements.length - 2) + 1 || void 0).join(_CoreWalker.SEPARATOR);\n        node = this.findNode(node_src, node_path, decomposedPath);\n      }\n      if (node != null) {\n        const param_name = elements[elements.length - 1];\n        const param = node.params.get(param_name);\n        if (decomposedPath && param) {\n          decomposedPath.add_node(param_name, param);\n        }\n        return param;\n      } else {\n        return null;\n      }\n    }\n  }\n  static relativePath(src_graph_node, dest_graph_node) {\n    const parent = this.closestCommonParent(src_graph_node, dest_graph_node);\n    if (!parent) {\n      return dest_graph_node.path();\n    } else {\n      const distance = this.distanceToParent(src_graph_node, parent);\n      let up = \"\";\n      if (distance > 0) {\n        let i = 0;\n        const ups = [];\n        while (i++ < distance) {\n          ups.push(_CoreWalker.PARENT);\n        }\n        up = ups.join(_CoreWalker.SEPARATOR) + _CoreWalker.SEPARATOR;\n      }\n      const parent_path_elements = parent.path().split(_CoreWalker.SEPARATOR).filter((e) => e.length > 0);\n      const dest_path_elements = dest_graph_node.path().split(_CoreWalker.SEPARATOR).filter((e) => e.length > 0);\n      const remaining_elements = [];\n      let cmptr = 0;\n      for (let dest_path_element of dest_path_elements) {\n        if (!parent_path_elements[cmptr]) {\n          remaining_elements.push(dest_path_element);\n        }\n        cmptr++;\n      }\n      const down = remaining_elements.join(_CoreWalker.SEPARATOR);\n      return this.sanitizePath(`${up}${down}`);\n    }\n  }\n  static sanitizePath(path) {\n    return path.replace(/\\/\\//g, \"/\");\n  }\n  static closestCommonParent(graph_node1, graph_node2) {\n    const parents1 = this.parents(graph_node1).reverse().concat([graph_node1]);\n    const parents2 = this.parents(graph_node2).reverse().concat([graph_node2]);\n    const min_depth = Math.min(parents1.length, parents2.length);\n    let found_parent = null;\n    for (let i = 0; i < min_depth; i++) {\n      if (parents1[i].graphNodeId() == parents2[i].graphNodeId()) {\n        found_parent = parents1[i];\n      }\n    }\n    return found_parent;\n  }\n  static parents(graph_node) {\n    const parents = [];\n    let parent = graph_node.parent();\n    while (parent) {\n      parents.push(parent);\n      parent = parent.parent();\n    }\n    return parents;\n  }\n  static distanceToParent(graph_node, dest) {\n    let distance = 0;\n    let current = graph_node;\n    const dest_id = dest.graphNodeId();\n    while (current && current.graphNodeId() != dest_id) {\n      distance += 1;\n      current = current.parent();\n    }\n    if (current && current.graphNodeId() == dest_id) {\n      return distance;\n    } else {\n      return -1;\n    }\n  }\n  static makeAbsolutePath(nodeSrc, path) {\n    if (path[0] == _CoreWalker.SEPARATOR) {\n      return path;\n    }\n    const pathElements = path.split(_CoreWalker.SEPARATOR);\n    const firstElement = pathElements.shift();\n    if (firstElement) {\n      switch (firstElement) {\n        case \"..\": {\n          const parent = nodeSrc.parent();\n          if (parent) {\n            if (parent == nodeSrc.scene().root()) {\n              return _CoreWalker.SEPARATOR + pathElements.join(_CoreWalker.SEPARATOR);\n            } else {\n              return this.makeAbsolutePath(parent, pathElements.join(_CoreWalker.SEPARATOR));\n            }\n          } else {\n            return null;\n          }\n        }\n        case \".\": {\n          return this.makeAbsolutePath(nodeSrc, pathElements.join(_CoreWalker.SEPARATOR));\n        }\n        default: {\n          return [nodeSrc.path(), path].join(_CoreWalker.SEPARATOR);\n        }\n      }\n    } else {\n      return nodeSrc.path();\n    }\n  }\n};\nexport let CoreWalker = _CoreWalker;\nCoreWalker.SEPARATOR = \"/\";\nCoreWalker.DOT = \".\";\nCoreWalker.CURRENT = _CoreWalker.DOT;\nCoreWalker.PARENT = \"..\";\nCoreWalker.CURRENT_WITH_SLASH = `${_CoreWalker.CURRENT}/`;\nCoreWalker.PARENT_WITH_SLASH = `${_CoreWalker.PARENT}/`;\nCoreWalker.NON_LETTER_PREFIXES = [_CoreWalker.SEPARATOR, _CoreWalker.DOT];\n","import { CoreWalker } from \"../../../../core/Walker\";\nexport class HierarchyParentController {\n  constructor(node) {\n    this.node = node;\n    this._parent = null;\n  }\n  parent() {\n    return this._parent;\n  }\n  setParent(parent) {\n    if (parent != this.node.parentController.parent()) {\n      this._parent = parent;\n      if (this._parent) {\n        this.node.nameController.requestNameToParent(this.node.name());\n      }\n    }\n  }\n  firstAncestorWithContext(context) {\n    if (this._parent) {\n      if (this._parent.context() == context) {\n        return this._parent;\n      } else {\n        return this._parent.parentController.firstAncestorWithContext(context);\n      }\n    }\n    return null;\n  }\n  findParent(callback) {\n    if (this._parent) {\n      if (callback(this._parent) == true) {\n        return this._parent;\n      } else {\n        return this._parent.parentController.findParent(callback);\n      }\n    }\n    return null;\n  }\n  path(relativeToParent) {\n    if (this.node.disposed) {\n      console.warn(\".path() called from a disposed node, this may return an invalid path\", this.node);\n    }\n    const separator = CoreWalker.SEPARATOR;\n    if (this._parent != null) {\n      if (this._parent == relativeToParent) {\n        return this.node.name();\n      } else {\n        const parent_fullPath = this._parent.path(relativeToParent);\n        if (parent_fullPath === separator) {\n          return parent_fullPath + this.node.name();\n        } else {\n          return parent_fullPath + separator + this.node.name();\n        }\n      }\n    } else {\n      return separator;\n    }\n  }\n  onSetParent() {\n    if (this._on_set_parent_hooks) {\n      for (let hook of this._on_set_parent_hooks) {\n        hook();\n      }\n    }\n  }\n  findNode(path) {\n    if (path == null) {\n      return null;\n    }\n    if (path == CoreWalker.CURRENT || path == CoreWalker.CURRENT_WITH_SLASH) {\n      return this.node;\n    }\n    if (path == CoreWalker.PARENT || path == CoreWalker.PARENT_WITH_SLASH) {\n      return this.node.parent();\n    }\n    const separator = CoreWalker.SEPARATOR;\n    if (path === separator) {\n      return this.node.scene().root();\n    }\n    if (path[0] === separator) {\n      path = path.substring(1, path.length);\n      return this.node.scene().root().node(path);\n    }\n    if (path.split) {\n      const elements = path.split(separator);\n      if (elements.length === 1) {\n        const name = elements[0];\n        if (this.node.childrenController) {\n          return this.node.childrenController.childByName(name);\n        } else {\n          return null;\n        }\n      } else {\n        return CoreWalker.findNode(this.node, path);\n      }\n    } else {\n      console.error(\"unexpected path given:\", path);\n      return null;\n    }\n  }\n}\n","export class MapUtils {\n  static arrayFromValues(map) {\n    const array = [];\n    map.forEach((v) => {\n      array.push(v);\n    });\n    return array;\n  }\n  static pushOnArrayAtEntry(map, key, newElement) {\n    let has_entry = map.has(key);\n    if (has_entry) {\n      map.get(key).push(newElement);\n    } else {\n      map.set(key, [newElement]);\n    }\n  }\n  static addToSetAtEntry(map, key, newElement) {\n    let has_entry = map.has(key);\n    if (has_entry) {\n      map.get(key).add(newElement);\n    } else {\n      const set = /* @__PURE__ */ new Set();\n      set.add(newElement);\n      map.set(key, set);\n    }\n  }\n  static popFromArrayAtEntry(map, key, elementToRemove) {\n    let has_entry = map.has(key);\n    if (has_entry) {\n      const array = map.get(key);\n      const index = array.indexOf(elementToRemove);\n      if (index >= 0) {\n        array.splice(index, 1);\n      }\n    }\n  }\n  static removeFromSetAtEntry(map, key, elementToRemove) {\n    let has_entry = map.has(key);\n    if (has_entry) {\n      const set = map.get(key);\n      set.delete(elementToRemove);\n      if (set.size == 0) {\n        map.delete(key);\n      }\n    }\n  }\n  static unshiftOnArrayAtEntry(map, key, newElement) {\n    let has_entry = map.has(key);\n    if (has_entry) {\n      map.get(key).unshift(newElement);\n    } else {\n      map.set(key, [newElement]);\n    }\n  }\n  static concatOnArrayAtEntry(map, key, newElements) {\n    let has_entry = map.has(key);\n    if (has_entry) {\n      let array = map.get(key);\n      for (let element of newElements) {\n        array.push(element);\n      }\n    } else {\n      map.set(key, newElements);\n    }\n  }\n  static async forEachSync(map, callback) {\n    const values = [];\n    const keys = [];\n    map.forEach((value, key) => {\n      values.push(value);\n      keys.push(key);\n    });\n    for (let i = 0; i < values.length; i++) {\n      const key = keys[i];\n      const value = values[i];\n      await callback(value, key);\n    }\n  }\n  static groupBy(array, callback) {\n    const map = /* @__PURE__ */ new Map();\n    array.forEach((element) => {\n      const key = callback(element);\n      this.pushOnArrayAtEntry(map, key, element);\n    });\n    return map;\n  }\n}\n","export class SetUtils {\n  static toArray(set) {\n    const array = [];\n    set.forEach((elem) => {\n      array.push(elem);\n    });\n    return array;\n  }\n  static fromArray(array) {\n    const set = /* @__PURE__ */ new Set();\n    for (let element of array) {\n      set.add(element);\n    }\n    return set;\n  }\n  static union(set0, set1) {\n    const newSet = /* @__PURE__ */ new Set();\n    set0.forEach((val) => newSet.add(val));\n    set1.forEach((val) => newSet.add(val));\n    return newSet;\n  }\n  static intersection(set0, set1) {\n    const newSet = /* @__PURE__ */ new Set();\n    set0.forEach((val) => {\n      if (set1.has(val)) {\n        newSet.add(val);\n      }\n    });\n    set1.forEach((val) => {\n      if (set0.has(val)) {\n        newSet.add(val);\n      }\n    });\n    return newSet;\n  }\n  static difference(set0, set1) {\n    const newSet = /* @__PURE__ */ new Set();\n    set0.forEach((val) => {\n      if (!set1.has(val)) {\n        newSet.add(val);\n      }\n    });\n    set1.forEach((val) => {\n      if (!set0.has(val)) {\n        newSet.add(val);\n      }\n    });\n    return newSet;\n  }\n}\n","import { MapUtils } from \"./MapUtils\";\nimport { SetUtils } from \"./SetUtils\";\nimport { CoreType } from \"./Type\";\nexport class ArrayUtils {\n  static shallowClone(array) {\n    return [...array];\n  }\n  static min(array) {\n    let min = array[0];\n    for (let element of array) {\n      if (element < min) {\n        min = element;\n      }\n    }\n    return min;\n  }\n  static max(array) {\n    let min = array[0];\n    for (let element of array) {\n      if (element > min) {\n        min = element;\n      }\n    }\n    return min;\n  }\n  static sum(array) {\n    let sum = 0;\n    for (let element of array) {\n      sum += element;\n    }\n    return sum;\n  }\n  static compact(array) {\n    const newArray = [];\n    for (let elem of array) {\n      if (elem != null) {\n        newArray.push(elem);\n      }\n    }\n    return newArray;\n  }\n  static uniq(array) {\n    const newArray = [];\n    for (let element of array) {\n      if (!newArray.includes(element)) {\n        newArray.push(element);\n      }\n    }\n    return newArray;\n  }\n  static uniqWithoutPreservingOrder(array) {\n    return SetUtils.toArray(SetUtils.fromArray(array));\n  }\n  static chunk(array, chunkSize) {\n    const newArray = [];\n    let newSubArray = [];\n    newArray.push(newSubArray);\n    for (let i = 0; i < array.length; i++) {\n      if (newSubArray.length == chunkSize) {\n        newSubArray = [];\n        newArray.push(newSubArray);\n      }\n      newSubArray.push(array[i]);\n    }\n    return newArray;\n  }\n  static union(array0, array1) {\n    const newArray = [];\n    const unionSet = SetUtils.union(this.toSet(array0), this.toSet(array1));\n    unionSet.forEach((val) => newArray.push(val));\n    return newArray;\n  }\n  static intersection(array0, array1) {\n    const newArray = [];\n    const intersectionSet = SetUtils.intersection(this.toSet(array0), this.toSet(array1));\n    intersectionSet.forEach((val) => newArray.push(val));\n    return newArray;\n  }\n  static difference(array0, array1) {\n    const newArray = [];\n    const differenceSet = SetUtils.difference(this.toSet(array0), this.toSet(array1));\n    differenceSet.forEach((val) => newArray.push(val));\n    return newArray;\n  }\n  static toSet(array) {\n    const set = /* @__PURE__ */ new Set();\n    for (let elem of array) {\n      set.add(elem);\n    }\n    return set;\n  }\n  static isEqual(array0, array1) {\n    if (array0.length != array1.length) {\n      return false;\n    }\n    const count = array0.length;\n    for (let i = 0; i < count; i++) {\n      if (array0[i] != array1[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  static sortBy(array, callback) {\n    if (array.length == 0) {\n      return [];\n    }\n    const elementsByValue = /* @__PURE__ */ new Map();\n    const valuesSet = /* @__PURE__ */ new Set();\n    for (let elem of array) {\n      const value = callback(elem);\n      valuesSet.add(value);\n      MapUtils.pushOnArrayAtEntry(elementsByValue, value, elem);\n    }\n    const values = new Array(valuesSet.size);\n    let i = 0;\n    valuesSet.forEach((value) => {\n      values[i] = value;\n      i++;\n    });\n    if (CoreType.isString(values[0])) {\n      values.sort();\n    } else {\n      values.sort((a, b) => a - b);\n    }\n    const sorted_elements = new Array(array.length);\n    i = 0;\n    for (let value of values) {\n      const elements_for_value = elementsByValue.get(value);\n      if (elements_for_value) {\n        for (let element of elements_for_value) {\n          sorted_elements[i] = element;\n          i++;\n        }\n      }\n    }\n    return sorted_elements;\n  }\n  static range(start, end, step = 1) {\n    if (end == null) {\n      end = start;\n      start = 0;\n    }\n    const length = Math.floor((end - start) / step);\n    const array = new Array(length);\n    for (let i = 0; i < array.length; i++) {\n      array[i] = start + i * step;\n    }\n    return array;\n  }\n}\n","import { CoreType } from \"./Type\";\nimport { ArrayUtils } from \"./ArrayUtils\";\nconst ATTRIB_NAMES_SEPARATOR = /[, ]/;\nconst TAIL_DIGIT_MATCH_REGEXP = /\\d+$/;\nconst LEADING_ZEROS_MATCH_REGEXP = /^0+/;\nconst INDICES_LIST_SEPARATOR = /,| /;\nconst ZERO = \"0\";\nconst SPACE = \" \";\nconst NUM_REGEXP = /^-?\\d+\\.?\\d*$/;\nvar BooleanString = /* @__PURE__ */ ((BooleanString2) => {\n  BooleanString2[\"TRUE\"] = \"true\";\n  BooleanString2[\"FALSE\"] = \"false\";\n  return BooleanString2;\n})(BooleanString || {});\nexport class CoreString {\n  static isBoolean(word) {\n    return word == \"true\" /* TRUE */ || word == \"false\" /* FALSE */;\n  }\n  static toBoolean(word) {\n    return word == \"true\" /* TRUE */;\n  }\n  static isNumber(word) {\n    return NUM_REGEXP.test(word);\n  }\n  static tailDigits(word) {\n    const match = word.match(TAIL_DIGIT_MATCH_REGEXP);\n    if (match) {\n      return parseInt(match[0]);\n    } else {\n      return 0;\n    }\n  }\n  static increment(word) {\n    const match = word.match(TAIL_DIGIT_MATCH_REGEXP);\n    if (match) {\n      let numbers_as_str = match[0];\n      let zeros_prefix = \"\";\n      const leading_zeros_match = numbers_as_str.match(LEADING_ZEROS_MATCH_REGEXP);\n      if (leading_zeros_match) {\n        zeros_prefix = leading_zeros_match[0];\n      }\n      const digits = parseInt(numbers_as_str);\n      if (digits == 0) {\n        if (zeros_prefix.length > 0) {\n          if (zeros_prefix[zeros_prefix.length - 1] == ZERO) {\n            zeros_prefix = zeros_prefix.slice(0, -1);\n          }\n        }\n      }\n      const prefix = word.substring(0, word.length - match[0].length);\n      return `${prefix}${zeros_prefix}${digits + 1}`;\n    } else {\n      return `${word}1`;\n    }\n  }\n  static pluralize(word) {\n    const last_char = word[word.length - 1];\n    if (last_char !== \"s\") {\n      return `${word}s`;\n    } else {\n      return word;\n    }\n  }\n  static camelCase(str) {\n    const elements = str.replace(/_/g, \" \").split(\" \");\n    let newWord = \"\";\n    for (let i = 0; i < elements.length; i++) {\n      let element = elements[i].toLowerCase();\n      if (i > 0) {\n        element = this.upperFirst(element);\n      }\n      newWord += element;\n    }\n    return newWord;\n  }\n  static upperFirst(word) {\n    const newString = word[0].toUpperCase() + word.substring(1);\n    return newString;\n  }\n  static titleize(word) {\n    const elements = word.split(/\\s|_/g);\n    const newElements = elements.map((elem) => this.upperFirst(elem));\n    return newElements.join(\" \");\n  }\n  static precision(val, decimals = 2) {\n    decimals = Math.max(decimals, 0);\n    const elements = `${val}`.split(\".\");\n    if (decimals <= 0) {\n      return elements[0];\n    }\n    let frac = elements[1];\n    if (frac !== void 0) {\n      if (frac.length > decimals) {\n        frac = frac.substring(0, decimals);\n      }\n      frac = frac.padEnd(decimals, \"0\");\n      return `${elements[0]}.${frac}`;\n    } else {\n      const string_to_pad = `${val}.`;\n      const pad = string_to_pad.length + decimals;\n      return string_to_pad.padEnd(pad, \"0\");\n    }\n  }\n  static ensureFloat(num) {\n    const num_as_string = `${num}`;\n    const dot_pos = num_as_string.indexOf(\".\");\n    if (dot_pos >= 0) {\n      return num_as_string;\n    } else {\n      return `${num_as_string}.0`;\n    }\n  }\n  static ensureInteger(num) {\n    const num_as_string = `${num}`;\n    const dot_pos = num_as_string.indexOf(\".\");\n    if (dot_pos >= 0) {\n      return num_as_string.split(\".\")[0];\n    } else {\n      return num_as_string;\n    }\n  }\n  static matchMask(word, mask) {\n    if (mask === \"*\") {\n      return true;\n    }\n    if (word == mask) {\n      return true;\n    }\n    const elements = mask.split(SPACE);\n    const exclusionFilters = elements.filter((element) => element.startsWith(\"^\")).map((element) => element.substring(1));\n    for (let exclusionFilter of exclusionFilters) {\n      const match = this.matchMask(word, exclusionFilter);\n      if (match) {\n        return false;\n      }\n    }\n    if (elements.length > 1) {\n      for (let element of elements) {\n        const match = this.matchMask(word, element);\n        if (match) {\n          return true;\n        }\n      }\n      return false;\n    }\n    mask = mask.split(\"*\").join(\".*\");\n    mask = `^${mask}$`;\n    const regex = new RegExp(mask);\n    return regex.test(word);\n  }\n  static matchesOneMask(word, masks) {\n    let matches_one_mask = false;\n    for (let mask of masks) {\n      if (CoreString.matchMask(word, mask)) {\n        matches_one_mask = true;\n      }\n    }\n    return matches_one_mask;\n  }\n  static attribNames(word) {\n    return ArrayUtils.uniq(word.split(ATTRIB_NAMES_SEPARATOR).map((w) => w.trim()).filter((w) => w.length > 0));\n  }\n  static indices(indices_string) {\n    const elements = indices_string.split(INDICES_LIST_SEPARATOR);\n    if (elements.length > 1) {\n      const indices = elements.flatMap((element) => this.indices(element));\n      return ArrayUtils.uniq(indices).sort((a, b) => a - b);\n    } else {\n      const element = elements[0];\n      if (element) {\n        const range_separator = \"-\";\n        if (element.indexOf(range_separator) > 0) {\n          const range_elements = element.split(range_separator);\n          return ArrayUtils.range(parseInt(range_elements[0]), parseInt(range_elements[1]) + 1);\n        } else {\n          const parsed = parseInt(element);\n          if (CoreType.isNumber(parsed)) {\n            return [parsed];\n          } else {\n            return [];\n          }\n        }\n      } else {\n        return [];\n      }\n    }\n  }\n  static escapeLineBreaks(word) {\n    return word.replace(/(\\r\\n|\\n|\\r)/gm, \"\\\\n\");\n  }\n  static sanitizeName(name) {\n    name = name.replace(/[^A-Za-z0-9]/g, \"_\");\n    name = name.replace(/^[0-9]/, \"_\");\n    return name;\n  }\n}\n","import { NodeEvent } from \"../engine/poly/NodeEvent\";\nimport { ArrayUtils } from \"./ArrayUtils\";\nexport class CoreNodeSelection {\n  constructor(_node) {\n    this._node = _node;\n    this._nodeIds = [];\n    this._json = [];\n  }\n  node() {\n    return this._node;\n  }\n  nodeIds() {\n    return this._nodeIds;\n  }\n  nodes() {\n    return this._node.scene().graph.nodesFromIds(this._nodeIds);\n  }\n  contains(node) {\n    return this._nodeIds.includes(node.graphNodeId());\n  }\n  equals(nodes) {\n    const node_ids = nodes.map((node) => node.graphNodeId()).sort();\n    return ArrayUtils.isEqual(node_ids, this._nodeIds);\n  }\n  clear() {\n    this._nodeIds = [];\n    this._sendUpdateEvent();\n  }\n  set(nodes) {\n    this._nodeIds = [];\n    this.add(nodes);\n  }\n  add(nodesToAdd) {\n    const nodeIdsToAdd = nodesToAdd.map((node) => node.graphNodeId());\n    this._nodeIds = ArrayUtils.union(this._nodeIds, nodeIdsToAdd);\n    this._sendUpdateEvent();\n  }\n  remove(nodesToRemove) {\n    const nodeIdsToRemove = nodesToRemove.map((node) => node.graphNodeId());\n    this._nodeIds = ArrayUtils.difference(this._nodeIds, nodeIdsToRemove);\n    this._sendUpdateEvent();\n  }\n  _checkValidity() {\n    const nodes = this.nodes();\n    if (nodes.length != this._nodeIds.length) {\n      console.error(\"selection invalid: at least one node is not part of the graph\");\n      return;\n    }\n    for (let node of nodes) {\n      if (node.parent() != this._node) {\n        console.error(\"selection invalid: at least one node is not has another parent\");\n      }\n    }\n  }\n  _sendUpdateEvent() {\n    this._checkValidity();\n    this._node.emit(NodeEvent.SELECTION_UPDATED);\n  }\n  toJSON() {\n    this._json = this._json || [];\n    this._json = this._nodeIds.map((id) => id);\n    return this._json;\n  }\n}\n","export var InputCloneMode = /* @__PURE__ */ ((InputCloneMode2) => {\n  InputCloneMode2[\"ALWAYS\"] = \"always\";\n  InputCloneMode2[\"NEVER\"] = \"never\";\n  InputCloneMode2[\"FROM_NODE\"] = \"from_node\";\n  return InputCloneMode2;\n})(InputCloneMode || {});\n","export class TypeAssert {\n  static unreachable(x) {\n    throw new Error(\"Didn't expect to get here\");\n  }\n}\n","import { InputCloneMode } from \"../../../../../engine/poly/InputCloneMode\";\nimport { TypeAssert } from \"../../../../../engine/poly/Assert\";\nimport { CoreType } from \"../../../../../core/Type\";\nexport class ClonedStatesController {\n  constructor(inputs_controller) {\n    this.inputs_controller = inputs_controller;\n    this._clone_required_states = [];\n    this._overridden = false;\n  }\n  initInputsClonedState(states) {\n    if (CoreType.isArray(states)) {\n      this._cloned_states = states;\n    } else {\n      this._cloned_state = states;\n    }\n    this._update_clone_required_state();\n  }\n  override_cloned_state_allowed() {\n    if (this._cloned_states) {\n      for (let state of this._cloned_states) {\n        if (state == InputCloneMode.FROM_NODE) {\n          return true;\n        }\n      }\n    }\n    if (this._cloned_state) {\n      return this._cloned_state == InputCloneMode.FROM_NODE;\n    }\n    return false;\n  }\n  clone_required_state(index) {\n    return this._clone_required_states[index];\n  }\n  clone_required_states() {\n    return this._clone_required_states;\n  }\n  _get_clone_required_state(index) {\n    const states = this._cloned_states;\n    if (states) {\n      const state = states[index];\n      if (state != null) {\n        return this.clone_required_from_state(state);\n      }\n    }\n    if (this._cloned_state) {\n      return this.clone_required_from_state(this._cloned_state);\n    }\n    return true;\n  }\n  clone_required_from_state(state) {\n    switch (state) {\n      case InputCloneMode.ALWAYS:\n        return true;\n      case InputCloneMode.NEVER:\n        return false;\n      case InputCloneMode.FROM_NODE:\n        return !this._overridden;\n    }\n    return TypeAssert.unreachable(state);\n  }\n  override_cloned_state(state) {\n    this._overridden = state;\n    this._update_clone_required_state();\n  }\n  overriden() {\n    return this._overridden;\n  }\n  _update_clone_required_state() {\n    if (this._cloned_states) {\n      const states = [];\n      for (let i = 0; i < this._cloned_states.length; i++) {\n        states[i] = this._get_clone_required_state(i);\n      }\n      this._clone_required_states = states;\n      return;\n    }\n    if (this._cloned_state) {\n      const max_inputs = this.inputs_controller.inputsCount();\n      const states = [];\n      for (let i = 0; i < max_inputs; i++) {\n        states[i] = this._get_clone_required_state(i);\n      }\n      this._clone_required_states = states;\n      return;\n    }\n  }\n}\n","import { ClonedStatesController } from \"./inputs/ClonedStatesController\";\nexport class OperationInputsController {\n  constructor(operationContainer) {\n    this.operationContainer = operationContainer;\n  }\n  inputsCount() {\n    return this.operationContainer.inputsCount();\n  }\n  initInputsClonedState(states) {\n    if (!this._clonedStatesController) {\n      this._clonedStatesController = new ClonedStatesController(this);\n      this._clonedStatesController.initInputsClonedState(states);\n    }\n  }\n  cloneRequired(index) {\n    var _a;\n    const state = (_a = this._clonedStatesController) == null ? void 0 : _a.clone_required_state(index);\n    if (state != null) {\n      return state;\n    }\n    return true;\n  }\n  override_cloned_state(state) {\n    var _a;\n    (_a = this._clonedStatesController) == null ? void 0 : _a.override_cloned_state(state);\n  }\n}\n","import { BaseOperationContainer } from \"./_Base\";\nexport class SopOperationContainer extends BaseOperationContainer {\n  constructor(operation, name, init_params) {\n    super(operation, name, init_params);\n    this.operation = operation;\n    this.name = name;\n    this.init_params = init_params;\n    this._inputs = [];\n    this._currentInputIndex = 0;\n    this._dirty = true;\n  }\n  operationType() {\n    return this.operation.type();\n  }\n  addInput(input) {\n    super.setInput(this._currentInputIndex, input);\n    this.incrementInputIndex();\n  }\n  incrementInputIndex() {\n    this._currentInputIndex++;\n  }\n  currentInputIndex() {\n    return this._currentInputIndex;\n  }\n  setDirty() {\n    if (this._dirty) {\n      return;\n    }\n    this._computeResult = void 0;\n    for (let i = 0; i < this._inputs.length; i++) {\n      const inputOperation = this._inputs[i];\n      inputOperation.setDirty();\n    }\n  }\n  async compute(input_contents, operation_inputs_map) {\n    if (this._computeResult) {\n      return this._computeResult;\n    }\n    const operationInputContents = [];\n    const nodeInputsMap = operation_inputs_map.get(this);\n    if (nodeInputsMap) {\n      nodeInputsMap.forEach((node_input_index, operation_input_index) => {\n        operationInputContents[operation_input_index] = input_contents[node_input_index];\n      });\n    }\n    for (let i = 0; i < this._inputs.length; i++) {\n      const inputOperation = this._inputs[i];\n      let result2 = await inputOperation.compute(input_contents, operation_inputs_map);\n      if (result2) {\n        if (this.inputCloneRequired(i)) {\n          result2 = result2.clone();\n        }\n        operationInputContents[i] = result2;\n      }\n    }\n    const result = this.operation.cook(operationInputContents, this.params);\n    if (result) {\n      if (result instanceof Promise) {\n        this._computeResult = await result;\n      } else {\n        this._computeResult = result;\n      }\n    } else {\n      this._computeResult = void 0;\n    }\n    this._dirty = false;\n    return this._computeResult;\n  }\n}\n","import { Color } from \"three\";\nimport { Vector2 } from \"three\";\nimport { Vector3 } from \"three\";\nimport { Vector4 } from \"three\";\nimport { TypedNodePathParamValue } from \"../../../core/Walker\";\nimport { OperationInputsController } from \"./utils/InputsController\";\nimport { CoreType } from \"../../../core/Type\";\nexport class BaseOperationContainer {\n  constructor(operation, name, init_params) {\n    this.operation = operation;\n    this.name = name;\n    this.params = {};\n    this._applyDefaultParams();\n    this._applyInitParams(init_params);\n    this._initClonedStates();\n  }\n  pathParamResolveRequired() {\n    return this._path_params != null;\n  }\n  resolvePathParams(node_start) {\n    if (!this._path_params) {\n      return;\n    }\n    for (let path_param of this._path_params) {\n      path_param.resolve(node_start);\n    }\n  }\n  _applyDefaultParams() {\n    const default_params = this.operation.constructor.DEFAULT_PARAMS;\n    const param_names = Object.keys(default_params);\n    for (let param_name of param_names) {\n      const param_data = default_params[param_name];\n      const clone_param_data = this._convertParamData(param_name, param_data);\n      if (clone_param_data != void 0) {\n        this.params[param_name] = clone_param_data;\n      }\n    }\n  }\n  _applyInitParams(init_params) {\n    const paramNames = Object.keys(init_params);\n    for (let paramName of paramNames) {\n      const param_data = init_params[paramName];\n      if (param_data.simple_data != null) {\n        const simple_data = param_data.simple_data;\n        const clone_param_data = this.operation.convertExportParamData({\n          paramName,\n          paramData: simple_data,\n          params: this.params\n        });\n        if (clone_param_data != void 0) {\n          this.params[paramName] = clone_param_data;\n        }\n      }\n    }\n  }\n  _convertParamData(param_name, param_data) {\n    if (CoreType.isNumber(param_data) || CoreType.isBoolean(param_data) || CoreType.isString(param_data)) {\n      return param_data;\n    }\n    if (param_data instanceof TypedNodePathParamValue) {\n      const cloned = param_data.clone();\n      if (!this._path_params) {\n        this._path_params = [];\n      }\n      this._path_params.push(cloned);\n      return cloned;\n    }\n    if (param_data instanceof Color || param_data instanceof Vector2 || param_data instanceof Vector3 || param_data instanceof Vector4) {\n      return param_data.clone();\n    }\n  }\n  setInput(index, input) {\n    this._inputs = this._inputs || [];\n    this._inputs[index] = input;\n  }\n  inputsCount() {\n    if (this._inputs) {\n      return this._inputs.length;\n    } else {\n      return 0;\n    }\n  }\n  inputsController() {\n    return this._inputsController = this._inputsController || new OperationInputsController(this);\n  }\n  _initClonedStates() {\n    const default_cloned_states = this.operation.constructor.INPUT_CLONED_STATE;\n    this.inputsController().initInputsClonedState(default_cloned_states);\n  }\n  inputCloneRequired(index) {\n    if (!this._inputsController) {\n      return true;\n    }\n    return this._inputsController.cloneRequired(index);\n  }\n  overrideInputCloneState(state) {\n    this.inputsController().override_cloned_state(state);\n  }\n  cook(input_contents) {\n    return this.operation.cook(input_contents, this.params);\n  }\n}\n","import { CoreGraphNode } from \"../../../core/graph/CoreGraphNode\";\nimport { NodeEvent } from \"../../poly/NodeEvent\";\nimport { CoreType } from \"../../../core/Type\";\nexport class NameController {\n  constructor(node) {\n    this.node = node;\n    this._graphNode = new CoreGraphNode(node.scene(), \"nodeNameController\");\n  }\n  dispose() {\n    this._graphNode.dispose();\n    this._onSetNameHooks = void 0;\n    this._onSetFullPathHooks = void 0;\n  }\n  graphNode() {\n    return this._graphNode;\n  }\n  static baseName(node) {\n    let base = node.type();\n    const last_char = base[base.length - 1];\n    if (!CoreType.isNaN(parseInt(last_char))) {\n      base += \"_\";\n    }\n    return `${base}1`;\n  }\n  requestNameToParent(newName) {\n    const parent = this.node.parent();\n    if (parent && parent.childrenAllowed() && parent.childrenController) {\n      parent.childrenController.setChildName(this.node, newName);\n    } else {\n      console.warn(\"requestNameToParent failed, no parent found\");\n    }\n  }\n  setName(newName) {\n    if (newName != this.node.name()) {\n      if (this.node.insideALockedParent()) {\n        const lockedParent = this.node.lockedParent();\n        console.warn(`node '${this.node.path()}' cannot have its name changed, since it is inside '${lockedParent ? lockedParent.path() : \"\"}', which is locked`);\n        return;\n      }\n      this.requestNameToParent(newName);\n    }\n  }\n  updateNameFromParent(new_name) {\n    var _a;\n    this.node._setCoreName(new_name);\n    this._postSetName();\n    this.runPostSetFullPathHooks();\n    if (this.node.childrenAllowed()) {\n      const children = (_a = this.node.childrenController) == null ? void 0 : _a.children();\n      if (children) {\n        for (let child_node of children) {\n          child_node.nameController.runPostSetFullPathHooks();\n        }\n      }\n    }\n    if (this.node.lifecycle.creationCompleted() && this.node.scene().loadingController.loaded()) {\n      this.node.scene().missingExpressionReferencesController.checkForMissingNodeReferences(this.node);\n      this.node.scene().expressionsController.regenerateReferringExpressions(this.node);\n    }\n    this.node.scene().referencesController.notifyNameUpdated(this.node);\n    this.node.emit(NodeEvent.NAME_UPDATED);\n  }\n  add_post_set_name_hook(hook) {\n    this._onSetNameHooks = this._onSetNameHooks || [];\n    this._onSetNameHooks.push(hook);\n  }\n  add_post_set_fullPath_hook(hook) {\n    this._onSetFullPathHooks = this._onSetFullPathHooks || [];\n    this._onSetFullPathHooks.push(hook);\n  }\n  _postSetName() {\n    if (this._onSetNameHooks) {\n      for (let hook of this._onSetNameHooks) {\n        hook();\n      }\n    }\n  }\n  runPostSetFullPathHooks() {\n    if (this._onSetFullPathHooks) {\n      for (let hook of this._onSetFullPathHooks) {\n        hook();\n      }\n    }\n  }\n}\n","import { CoreString } from \"../../../../core/String\";\nimport { NodeEvent } from \"../../../poly/NodeEvent\";\nimport { CoreNodeSelection } from \"../../../../core/NodeSelection\";\nimport { Poly } from \"../../../Poly\";\nimport { SopOperationContainer } from \"../../../operations/container/sop\";\nimport { MapUtils } from \"../../../../core/MapUtils\";\nimport { NameController } from \"../NameController\";\nexport class HierarchyChildrenController {\n  constructor(node, _context) {\n    this.node = node;\n    this._context = _context;\n    this._childrenByName = /* @__PURE__ */ new Map();\n    this._childrenByType = /* @__PURE__ */ new Map();\n    this._childrenAndGrandchildrenByContext = /* @__PURE__ */ new Map();\n  }\n  get selection() {\n    return this._selection = this._selection || new CoreNodeSelection(this.node);\n  }\n  dispose() {\n    const children = this.children();\n    for (let child of children) {\n      this.node.removeNode(child);\n    }\n    this._selection = void 0;\n  }\n  get context() {\n    return this._context;\n  }\n  setOutputNodeFindMethod(method) {\n    this._output_node_find_method = method;\n  }\n  outputNode() {\n    if (this._output_node_find_method) {\n      return this._output_node_find_method();\n    }\n  }\n  setChildName(node, newName) {\n    let currentChildWithName;\n    newName = CoreString.sanitizeName(newName);\n    if ((currentChildWithName = this._childrenByName.get(newName)) != null) {\n      if (node.name() === newName && currentChildWithName.graphNodeId() === node.graphNodeId()) {\n        return;\n      }\n      newName = CoreString.increment(newName);\n      return this.setChildName(node, newName);\n    } else {\n      const currentName = node.name();\n      const currentChild = this._childrenByName.get(currentName);\n      if (currentChild) {\n        this._childrenByName.delete(currentName);\n      }\n      this._childrenByName.set(newName, node);\n      node.nameController.updateNameFromParent(newName);\n      this._addToNodesByType(node);\n      this.node.scene().nodesController.addToInstanciatedNode(node);\n    }\n  }\n  _nextAvailableChildName(nodeName) {\n    nodeName = CoreString.sanitizeName(nodeName);\n    return this._childrenByName.get(nodeName) ? this._nextAvailableChildName(CoreString.increment(nodeName)) : nodeName;\n  }\n  nodeContextSignature() {\n    return `${this.node.context()}/${this.node.type()}`;\n  }\n  availableChildrenClasses() {\n    return Poly.registeredNodes(this.node);\n  }\n  isValidChildType(node_type) {\n    const node_class = this.availableChildrenClasses()[node_type];\n    return node_class != null;\n  }\n  createNode(nodeClassOrString, options) {\n    if (typeof nodeClassOrString == \"string\") {\n      const nodeClass = this._findNodeClass(nodeClassOrString);\n      return this._createAndInitNode(nodeClass, options);\n    } else {\n      return this._createAndInitNode(nodeClassOrString, options);\n    }\n  }\n  _createAndInitNode(nodeClass, options) {\n    const requestedNodeName = (options == null ? void 0 : options.nodeName) || NameController.baseName(nodeClass);\n    const nodeName = this._nextAvailableChildName(requestedNodeName);\n    const childNode = new nodeClass(this.node.scene(), nodeName, options);\n    childNode.initializeBaseAndNode();\n    this._addNode(childNode);\n    childNode.lifecycle.setCreationCompleted();\n    return childNode;\n  }\n  _findNodeClass(node_type) {\n    const nodeClass = this.availableChildrenClasses()[node_type.toLowerCase()];\n    if (nodeClass == null) {\n      const message = `child node type '${node_type}' not found for node '${this.node.path()}'. Available types are: ${Object.keys(this.availableChildrenClasses()).join(\", \")}, ${this._context}, ${this.node.type()}`;\n      console.error(message);\n      throw message;\n    }\n    return nodeClass;\n  }\n  createOperationContainer(operation_type, operation_container_name, options) {\n    const operation_class = Poly.registeredOperation(this._context, operation_type);\n    if (operation_class == null) {\n      const message = `no operation found with context ${this._context}/${operation_type}`;\n      console.error(message);\n      throw message;\n    } else {\n      const operation = new operation_class(this.node.scene());\n      const operation_container = new SopOperationContainer(operation, operation_container_name, (options == null ? void 0 : options.paramsInitValueOverrides) || {});\n      return operation_container;\n    }\n  }\n  _addNode(child_node) {\n    child_node.setParent(this.node);\n    child_node.params.init();\n    child_node.parentController.onSetParent();\n    child_node.nameController.runPostSetFullPathHooks();\n    if (child_node.childrenAllowed() && child_node.childrenController) {\n      for (let child of child_node.childrenController.children()) {\n        child.nameController.runPostSetFullPathHooks();\n      }\n    }\n    this.node.emit(NodeEvent.CREATED, { child_node_json: child_node.toJSON() });\n    if (this.node.scene().lifecycleController.onAfterCreatedCallbackAllowed()) {\n      child_node.lifecycle.runOnAfterCreatedCallbacks();\n    }\n    child_node.lifecycle.runOnAfterAddedCallbacks();\n    this.node.lifecycle.runOnChildAddCallbacks(child_node);\n    if (child_node.require_webgl2()) {\n      this.node.scene().webgl_controller.set_require_webgl2();\n    }\n    this.node.scene().missingExpressionReferencesController.checkForMissingNodeReferences(child_node);\n    return child_node;\n  }\n  removeNode(childNode) {\n    var _a;\n    if (this.node.lockedOrInsideALockedParent()) {\n      const lockedNode = this.node.selfOrLockedParent();\n      const reason = lockedNode == this.node ? `it is locked` : `it is inside '${lockedNode ? lockedNode.path() : \"\"}', which is locked`;\n      console.warn(`node '${this.node.path()}' cannot remove nodes, since ${reason}`);\n      console.log(this.node.graphNodeId(), this.node.name());\n      return;\n    }\n    if (childNode.parent() != this.node) {\n      return console.warn(`node ${childNode.name()} not under parent ${this.node.path()}`);\n    } else {\n      (_a = childNode.polyNodeController) == null ? void 0 : _a.setLockedState(false);\n      childNode.lifecycle.runOnBeforeDeleteCallbacks();\n      if (this.selection.contains(childNode)) {\n        this.selection.remove([childNode]);\n      }\n      const first_connection = childNode.io.connections.firstInputConnection();\n      const input_connections = childNode.io.connections.inputConnections();\n      const output_connections = childNode.io.connections.outputConnections();\n      if (input_connections) {\n        for (let input_connection of input_connections) {\n          if (input_connection) {\n            input_connection.disconnect({ setInput: true });\n          }\n        }\n      }\n      if (output_connections) {\n        for (let output_connection of output_connections) {\n          if (output_connection) {\n            output_connection.disconnect({ setInput: true });\n            if (first_connection) {\n              const old_src = first_connection.node_src;\n              const old_output_index = output_connection.output_index;\n              const old_dest = output_connection.node_dest;\n              const old_input_index = output_connection.input_index;\n              old_dest.io.inputs.setInput(old_input_index, old_src, old_output_index);\n            }\n          }\n        }\n      }\n      childNode.setParent(null);\n      this._childrenByName.delete(childNode.name());\n      this._removeFromNodesByType(childNode);\n      this.node.scene().nodesController.removeFromInstanciatedNode(childNode);\n      childNode.setSuccessorsDirty(this.node);\n      childNode.graphDisconnectSuccessors();\n      this.node.lifecycle.runOnChildRemoveCallbacks(childNode);\n      childNode.lifecycle.runOnDeleteCallbacks();\n      childNode.dispose();\n      childNode.emit(NodeEvent.DELETED, { parent_id: this.node.graphNodeId() });\n    }\n  }\n  _addToNodesByType(node) {\n    const nodeId = node.graphNodeId();\n    const type = node.type();\n    MapUtils.addToSetAtEntry(this._childrenByType, type, nodeId);\n    this._addToChildrenAndGrandchildrenByContext(node);\n  }\n  _removeFromNodesByType(node) {\n    const nodeId = node.graphNodeId();\n    const type = node.type();\n    MapUtils.removeFromSetAtEntry(this._childrenByType, type, nodeId);\n    this._removeFromChildrenAndGrandchildrenByContext(node);\n  }\n  _addToChildrenAndGrandchildrenByContext(node) {\n    var _a;\n    const nodeId = node.graphNodeId();\n    const nodeContext = node.context();\n    MapUtils.addToSetAtEntry(this._childrenAndGrandchildrenByContext, nodeContext, nodeId);\n    const parent = this.node.parent();\n    if (parent && parent.childrenAllowed()) {\n      (_a = parent.childrenController) == null ? void 0 : _a._addToChildrenAndGrandchildrenByContext(node);\n    }\n  }\n  _removeFromChildrenAndGrandchildrenByContext(node) {\n    var _a;\n    const nodeId = node.graphNodeId();\n    const type = node.context();\n    MapUtils.removeFromSetAtEntry(this._childrenAndGrandchildrenByContext, type, nodeId);\n    const parent = this.node.parent();\n    if (parent && parent.childrenAllowed()) {\n      (_a = parent.childrenController) == null ? void 0 : _a._removeFromChildrenAndGrandchildrenByContext(node);\n    }\n  }\n  nodesByType(type) {\n    const nodeIds = this._childrenByType.get(type);\n    if (!nodeIds) {\n      return [];\n    }\n    const graph = this.node.scene().graph;\n    const nodes = [];\n    for (let node_id of nodeIds) {\n      const node = graph.nodeFromId(node_id);\n      if (node) {\n        nodes.push(node);\n      }\n    }\n    return nodes;\n  }\n  childByName(name) {\n    return this._childrenByName.get(name) || null;\n  }\n  hasChildrenAndGrandchildrenWithContext(context) {\n    return this._childrenAndGrandchildrenByContext.get(context) != null;\n  }\n  children() {\n    const nodes = [];\n    this._childrenByName.forEach((node) => {\n      nodes.push(node);\n    });\n    return nodes;\n  }\n  childrenNames() {\n    const names = [];\n    this._childrenByName.forEach((node, nodeName) => {\n      names.push(nodeName);\n    });\n    return names;\n  }\n  traverseChildren(callback) {\n    this._childrenByName.forEach((childNode) => {\n      var _a;\n      callback(childNode);\n      (_a = childNode.childrenController) == null ? void 0 : _a.traverseChildren(callback);\n    });\n  }\n}\n","export class NodeLifeCycleController {\n  constructor(node) {\n    this.node = node;\n    this._creationCompleted = false;\n  }\n  dispose() {\n    this._onChildAddCallbacks = void 0;\n    this._onChildRemoveCallbacks = void 0;\n    this._onAfterCreatedCallbacks = void 0;\n    this._onAfterAddedCallbacks = void 0;\n    this._onBeforeDeletedCallbacks = void 0;\n    this._onAfterDeletedCallbacks = void 0;\n  }\n  setCreationCompleted() {\n    if (!this._creationCompleted) {\n      this._creationCompleted = true;\n    }\n  }\n  creationCompleted() {\n    return this.node.scene().loadingController.loaded() && this._creationCompleted;\n  }\n  onChildAdd(callback) {\n    this._onChildAddCallbacks = this._onChildAddCallbacks || [];\n    this._onChildAddCallbacks.push(callback);\n  }\n  runOnChildAddCallbacks(node) {\n    this._runCallbacksWithChildNode(this._onChildAddCallbacks, node);\n  }\n  onChildRemove(callback) {\n    this._onChildRemoveCallbacks = this._onChildRemoveCallbacks || [];\n    this._onChildRemoveCallbacks.push(callback);\n  }\n  runOnChildRemoveCallbacks(node) {\n    this._runCallbacksWithChildNode(this._onChildRemoveCallbacks, node);\n  }\n  onAfterCreated(callback) {\n    this._onAfterCreatedCallbacks = this._onAfterCreatedCallbacks || [];\n    this._onAfterCreatedCallbacks.push(callback);\n  }\n  runOnAfterCreatedCallbacks() {\n    this._runCallbacks(this._onAfterCreatedCallbacks);\n  }\n  onAfterAdded(callback) {\n    this._onAfterAddedCallbacks = this._onAfterAddedCallbacks || [];\n    this._onAfterAddedCallbacks.push(callback);\n  }\n  runOnAfterAddedCallbacks() {\n    this._runCallbacks(this._onAfterAddedCallbacks);\n  }\n  onBeforeDeleted(callback) {\n    this._onBeforeDeletedCallbacks = this._onBeforeDeletedCallbacks || [];\n    this._onBeforeDeletedCallbacks.push(callback);\n  }\n  runOnBeforeDeleteCallbacks() {\n    this._runCallbacks(this._onBeforeDeletedCallbacks);\n  }\n  onAfterDeleted(callback) {\n    this._onAfterDeletedCallbacks = this._onAfterDeletedCallbacks || [];\n    this._onAfterDeletedCallbacks.push(callback);\n  }\n  runOnDeleteCallbacks() {\n    this._runCallbacks(this._onAfterDeletedCallbacks);\n  }\n  _runCallbacks(hooks) {\n    if (!hooks) {\n      return;\n    }\n    let hook;\n    for (hook of hooks) {\n      hook();\n    }\n  }\n  _runCallbacksWithChildNode(hooks, childNode) {\n    if (!hooks) {\n      return;\n    }\n    let hook;\n    for (hook of hooks) {\n      hook(childNode);\n    }\n  }\n}\n","export var NodeContext = /* @__PURE__ */ ((NodeContext2) => {\n  NodeContext2[\"ACTOR\"] = \"actor\";\n  NodeContext2[\"ANIM\"] = \"anim\";\n  NodeContext2[\"AUDIO\"] = \"audio\";\n  NodeContext2[\"COP\"] = \"cop\";\n  NodeContext2[\"CSG\"] = \"csg\";\n  NodeContext2[\"EVENT\"] = \"event\";\n  NodeContext2[\"GL\"] = \"gl\";\n  NodeContext2[\"JS\"] = \"js\";\n  NodeContext2[\"MANAGER\"] = \"manager\";\n  NodeContext2[\"MAT\"] = \"mat\";\n  NodeContext2[\"OBJ\"] = \"obj\";\n  NodeContext2[\"POST\"] = \"post\";\n  NodeContext2[\"ROP\"] = \"rop\";\n  NodeContext2[\"SOP\"] = \"sop\";\n  return NodeContext2;\n})(NodeContext || {});\nexport var NetworkNodeType = /* @__PURE__ */ ((NetworkNodeType2) => {\n  NetworkNodeType2[\"ACTOR\"] = \"actorsNetwork\";\n  NetworkNodeType2[\"ANIM\"] = \"animationsNetwork\";\n  NetworkNodeType2[\"AUDIO\"] = \"audioNetwork\";\n  NetworkNodeType2[\"COP\"] = \"copNetwork\";\n  NetworkNodeType2[\"CSG\"] = \"csgNetwork\";\n  NetworkNodeType2[\"EVENT\"] = \"eventsNetwork\";\n  NetworkNodeType2[\"MAT\"] = \"materialsNetwork\";\n  NetworkNodeType2[\"POST\"] = \"postProcessNetwork\";\n  NetworkNodeType2[\"ROP\"] = \"renderersNetwork\";\n  NetworkNodeType2[\"SUBNET\"] = \"subnet\";\n  return NetworkNodeType2;\n})(NetworkNodeType || {});\nexport var NetworkChildNodeType = /* @__PURE__ */ ((NetworkChildNodeType2) => {\n  NetworkChildNodeType2[\"INPUT\"] = \"subnetInput\";\n  NetworkChildNodeType2[\"OUTPUT\"] = \"subnetOutput\";\n  return NetworkChildNodeType2;\n})(NetworkChildNodeType || {});\nexport var CameraNodeType = /* @__PURE__ */ ((CameraNodeType2) => {\n  CameraNodeType2[\"PERSPECTIVE\"] = \"perspectiveCamera\";\n  CameraNodeType2[\"ORTHOGRAPHIC\"] = \"orthographicCamera\";\n  return CameraNodeType2;\n})(CameraNodeType || {});\nexport var CameraSopNodeType = /* @__PURE__ */ ((CameraSopNodeType2) => {\n  CameraSopNodeType2[\"CONTROLS\"] = \"cameraControls\";\n  CameraSopNodeType2[\"CSS_RENDERER\"] = \"cameraCSSRenderer\";\n  CameraSopNodeType2[\"FRAME_MODE\"] = \"cameraFrameMode\";\n  CameraSopNodeType2[\"POST_PROCESS\"] = \"cameraPostProcess\";\n  CameraSopNodeType2[\"RENDER_SCENE\"] = \"cameraRenderScene\";\n  CameraSopNodeType2[\"RENDERER\"] = \"cameraRenderer\";\n  return CameraSopNodeType2;\n})(CameraSopNodeType || {});\nexport const CAMERA_TYPES = [\"orthographicCamera\" /* ORTHOGRAPHIC */, \"perspectiveCamera\" /* PERSPECTIVE */];\nexport var CameraControlsNodeType = /* @__PURE__ */ ((CameraControlsNodeType2) => {\n  CameraControlsNodeType2[\"MAP\"] = \"cameraMapControls\";\n  CameraControlsNodeType2[\"ORBIT\"] = \"cameraOrbitControls\";\n  CameraControlsNodeType2[\"FIRST_PERSON\"] = \"firstPersonControls\";\n  CameraControlsNodeType2[\"PLAYER\"] = \"playerControls\";\n  CameraControlsNodeType2[\"MOBILE_JOYSTICK\"] = \"mobileJoystickControls\";\n  return CameraControlsNodeType2;\n})(CameraControlsNodeType || {});\nexport var AudioNodeAnalyserType = /* @__PURE__ */ ((AudioNodeAnalyserType2) => {\n  AudioNodeAnalyserType2[\"FFT\"] = \"FFT\";\n  AudioNodeAnalyserType2[\"METER\"] = \"meter\";\n  AudioNodeAnalyserType2[\"WAVEFORM\"] = \"waveform\";\n  return AudioNodeAnalyserType2;\n})(AudioNodeAnalyserType || {});\nexport const AUDIO_ANALYSER_NODES = [\n  \"FFT\" /* FFT */,\n  \"meter\" /* METER */,\n  \"waveform\" /* WAVEFORM */\n];\n","export class TypedContainer {\n  constructor(_node) {\n    this._node = _node;\n  }\n  set_node(node) {\n    this._node = node;\n  }\n  node() {\n    return this._node;\n  }\n  set_content(content) {\n    this._content = content;\n    this._post_set_content();\n  }\n  has_content() {\n    return this._content != null;\n  }\n  content() {\n    return this._content;\n  }\n  _post_set_content() {\n  }\n  coreContent() {\n    return this._content;\n  }\n  coreContentCloned() {\n    return this._content;\n  }\n  infos() {\n    return [];\n  }\n}\nexport class BaseContainer extends TypedContainer {\n}\n","import { TypedContainer } from \"./_Base\";\nexport class AnimationContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n  setTimelineBuilder(timeline_builder) {\n    return this.set_content(timeline_builder);\n  }\n  timelineBuilder() {\n    return this.content();\n  }\n  coreContentCloned() {\n    if (this._content) {\n      return this._content.clone();\n    }\n  }\n}\n","import { SkinnedMesh } from \"three\";\nimport { Scene } from \"three\";\nimport { Points } from \"three\";\nimport { Group } from \"three\";\nimport { FrontSide } from \"three\";\nimport { Bone } from \"three\";\nimport { PointsMaterial } from \"three\";\nimport { MeshStandardMaterial } from \"three\";\nimport { LineBasicMaterial } from \"three\";\nimport { Object3D } from \"three\";\nimport { Mesh } from \"three\";\nimport { LineSegments } from \"three\";\nimport { LOD } from \"three\";\nimport { Poly } from \"../../engine/Poly\";\nexport var ObjectType = /* @__PURE__ */ ((ObjectType2) => {\n  ObjectType2[\"OBJECT3D\"] = \"Object3D\";\n  ObjectType2[\"GROUP\"] = \"Group\";\n  ObjectType2[\"MESH\"] = \"Mesh\";\n  ObjectType2[\"POINTS\"] = \"Points\";\n  ObjectType2[\"LINE_SEGMENTS\"] = \"LineSegments\";\n  ObjectType2[\"LOD\"] = \"LOD\";\n  return ObjectType2;\n})(ObjectType || {});\nexport const OBJECT_CONSTRUCTOR_BY_OBJECT_TYPE = {\n  [\"Mesh\" /* MESH */]: Mesh,\n  [\"Group\" /* GROUP */]: Group,\n  [\"Points\" /* POINTS */]: Points,\n  [\"LineSegments\" /* LINE_SEGMENTS */]: LineSegments,\n  [\"Object3D\" /* OBJECT3D */]: Object3D,\n  [\"LOD\" /* LOD */]: LOD\n};\nexport function objectTypeFromConstructor(constructor) {\n  switch (constructor) {\n    case Object3D:\n      return \"Object3D\" /* OBJECT3D */;\n    case Group:\n      return \"Group\" /* GROUP */;\n    case Mesh:\n      return \"Mesh\" /* MESH */;\n    case Points:\n      return \"Points\" /* POINTS */;\n    case LineSegments:\n      return \"LineSegments\" /* LINE_SEGMENTS */;\n    case LOD:\n      return \"LOD\" /* LOD */;\n    default:\n      return \"Mesh\" /* MESH */;\n  }\n}\nexport function ObjectTypeByObject(object) {\n  if (object instanceof Mesh) {\n    return \"Mesh\" /* MESH */;\n  } else if (object instanceof Group) {\n    return \"Group\" /* GROUP */;\n  } else if (object instanceof LineSegments) {\n    return \"LineSegments\" /* LINE_SEGMENTS */;\n  } else if (object instanceof Points) {\n    return \"Points\" /* POINTS */;\n  } else if (object instanceof Object3D) {\n    return \"Object3D\" /* OBJECT3D */;\n  }\n  Poly.warn(\"ObjectTypeByObject received an unknown object type\", object);\n}\nexport const ObjectTypes = [\"Mesh\" /* MESH */, \"Points\" /* POINTS */, \"LineSegments\" /* LINE_SEGMENTS */];\nexport const ObjectTypeMenuEntries = [\n  { name: \"Mesh\", value: ObjectTypes.indexOf(\"Mesh\" /* MESH */) },\n  { name: \"Points\", value: ObjectTypes.indexOf(\"Points\" /* POINTS */) },\n  { name: \"LineSegments\", value: ObjectTypes.indexOf(\"LineSegments\" /* LINE_SEGMENTS */) }\n];\nconst materials = {\n  MeshStandard: new MeshStandardMaterial({\n    color: 16777215,\n    side: FrontSide,\n    metalness: 0.5,\n    roughness: 0.9\n  }),\n  [\"Mesh\" /* MESH */]: new MeshStandardMaterial({\n    color: 16777215,\n    side: FrontSide,\n    metalness: 0,\n    roughness: 0.9\n  }),\n  [\"Points\" /* POINTS */]: new PointsMaterial({\n    color: 16777215,\n    size: 0.1,\n    depthTest: true\n  }),\n  [\"LineSegments\" /* LINE_SEGMENTS */]: new LineBasicMaterial({\n    color: 16777215,\n    linewidth: 1\n  })\n};\nexport var AttribClass = /* @__PURE__ */ ((AttribClass2) => {\n  AttribClass2[\"VERTEX\"] = \"vertex\";\n  AttribClass2[\"OBJECT\"] = \"object\";\n  AttribClass2[\"CORE_GROUP\"] = \"container\";\n  return AttribClass2;\n})(AttribClass || {});\nexport const ATTRIBUTE_CLASSES = [\"vertex\" /* VERTEX */, \"object\" /* OBJECT */, \"container\" /* CORE_GROUP */];\nexport const AttribClassMenuEntries = ATTRIBUTE_CLASSES.map((name, value) => ({ name, value }));\nexport var AttribType = /* @__PURE__ */ ((AttribType2) => {\n  AttribType2[\"NUMERIC\"] = \"numeric\";\n  AttribType2[\"STRING\"] = \"string\";\n  return AttribType2;\n})(AttribType || {});\nexport const ATTRIBUTE_TYPES = [\"numeric\" /* NUMERIC */, \"string\" /* STRING */];\nexport const AttribTypeMenuEntries = ATTRIBUTE_TYPES.map((name, value) => ({ name, value }));\nexport var AttribSize = /* @__PURE__ */ ((AttribSize2) => {\n  AttribSize2[AttribSize2[\"FLOAT\"] = 1] = \"FLOAT\";\n  AttribSize2[AttribSize2[\"VECTOR2\"] = 2] = \"VECTOR2\";\n  AttribSize2[AttribSize2[\"VECTOR3\"] = 3] = \"VECTOR3\";\n  AttribSize2[AttribSize2[\"VECTOR4\"] = 4] = \"VECTOR4\";\n  return AttribSize2;\n})(AttribSize || {});\nexport const ATTRIBUTE_SIZES = [\n  1 /* FLOAT */,\n  2 /* VECTOR2 */,\n  3 /* VECTOR3 */,\n  4 /* VECTOR4 */\n];\nexport const ATTRIBUTE_SIZE_RANGE = [1 /* FLOAT */, 4 /* VECTOR4 */];\nexport const CoreConstant = {\n  ATTRIB_CLASS: {\n    VERTEX: \"vertex\" /* VERTEX */,\n    OBJECT: \"object\" /* OBJECT */\n  },\n  OBJECT_TYPES: ObjectTypes,\n  CONSTRUCTOR_NAMES_BY_CONSTRUCTOR_NAME: {\n    [Scene.name]: \"Scene\",\n    [Group.name]: \"Group\",\n    [Object3D.name]: \"Object3D\",\n    [Mesh.name]: \"Mesh\",\n    [Points.name]: \"Points\",\n    [LineSegments.name]: \"LineSegments\",\n    [Bone.name]: \"Bone\",\n    [SkinnedMesh.name]: \"SkinnedMesh\"\n  },\n  CONSTRUCTORS_BY_NAME: {\n    [\"Mesh\" /* MESH */]: Mesh,\n    [\"Points\" /* POINTS */]: Points,\n    [\"LineSegments\" /* LINE_SEGMENTS */]: LineSegments\n  },\n  MATERIALS: materials\n};\n","import { Vector2 } from \"three\";\nimport { Vector3 } from \"three\";\nimport { Vector4 } from \"three\";\nimport { ArrayUtils } from \"../ArrayUtils\";\nimport { CoreString } from \"../String\";\nimport { CoreType } from \"../Type\";\nimport { AttribSize } from \"./Constant\";\nexport var Attribute = /* @__PURE__ */ ((Attribute2) => {\n  Attribute2[\"POINT_INDEX\"] = \"ptnum\";\n  Attribute2[\"OBJECT_INDEX\"] = \"objnum\";\n  Attribute2[\"COLOR\"] = \"color\";\n  Attribute2[\"NORMAL\"] = \"normal\";\n  Attribute2[\"POSITION\"] = \"position\";\n  Attribute2[\"PSCALE\"] = \"pscale\";\n  Attribute2[\"UP\"] = \"up\";\n  Attribute2[\"UV\"] = \"uv\";\n  Attribute2[\"SCALE\"] = \"scale\";\n  Attribute2[\"TANGENT\"] = \"tangent\";\n  return Attribute2;\n})(Attribute || {});\nexport var ObjectAttribute = /* @__PURE__ */ ((ObjectAttribute2) => {\n  ObjectAttribute2[\"HOVERED\"] = \"hovered\";\n  return ObjectAttribute2;\n})(ObjectAttribute || {});\nconst ATTRIB_NAME_MAP = {\n  P: \"position\" /* POSITION */,\n  N: \"normal\" /* NORMAL */,\n  Cd: \"color\" /* COLOR */\n};\nexport class CoreAttribute {\n  static remapName(name) {\n    return ATTRIB_NAME_MAP[name] || name;\n  }\n  static arrayToIndexedArrays(array) {\n    const index_by_value = {};\n    let current_index = 0;\n    const indices = [];\n    const values = [];\n    let i = 0;\n    while (i < array.length) {\n      const value = array[i];\n      const index = index_by_value[value];\n      if (index != null) {\n        indices.push(index);\n      } else {\n        values.push(value);\n        indices.push(current_index);\n        index_by_value[value] = current_index;\n        current_index += 1;\n      }\n      i++;\n    }\n    return {\n      indices,\n      values\n    };\n  }\n  static default_value(size) {\n    switch (size) {\n      case 1:\n        return 0;\n      case 2:\n        return new Vector2(0, 0);\n      case 3:\n        return new Vector3(0, 0, 0);\n      default:\n        throw `size ${size} not yet implemented`;\n    }\n  }\n  static copy(src, dest, mark_as_needs_update = true) {\n    const src_array = src == null ? void 0 : src.array;\n    const dest_array = dest == null ? void 0 : dest.array;\n    if (src_array && dest_array) {\n      const min_length = Math.min(src_array.length, dest_array.length);\n      for (let i = 0; i < min_length; i++) {\n        dest_array[i] = src_array[i];\n      }\n      if (mark_as_needs_update) {\n        dest.needsUpdate = true;\n      }\n    }\n  }\n  static attribSizeFromValue(val) {\n    if (CoreType.isString(val) || CoreType.isNumber(val)) {\n      return AttribSize.FLOAT;\n    }\n    if (CoreType.isArray(val)) {\n      return val.length;\n    }\n    switch (val.constructor) {\n      case Vector2:\n        return AttribSize.VECTOR2;\n      case Vector3:\n        return AttribSize.VECTOR3;\n      case Vector4:\n        return AttribSize.VECTOR4;\n    }\n    return 0;\n  }\n  static attribNamesMatchingMask(masksString, existingAttribNames) {\n    const masks = CoreString.attribNames(masksString);\n    const matchingAttribNames = [];\n    for (const mask of masks) {\n      for (const attribName of existingAttribNames) {\n        if (CoreString.matchMask(attribName, mask)) {\n          matchingAttribNames.push(attribName);\n        } else {\n          const remapped = CoreAttribute.remapName(mask);\n          if (attribName == remapped) {\n            matchingAttribNames.push(attribName);\n          }\n        }\n      }\n    }\n    return ArrayUtils.uniq(matchingAttribNames);\n  }\n}\n","export class CoreEntity {\n  constructor(_index) {\n    this._index = _index;\n  }\n  index() {\n    return this._index;\n  }\n}\n","import { Vector4 } from \"three\";\nimport { Vector3 } from \"three\";\nimport { Vector2 } from \"three\";\nimport { Attribute, CoreAttribute } from \"./Attribute\";\nimport { CoreEntity } from \"./Entity\";\nimport { CoreType } from \"../Type\";\nconst ATTRIB_NAMES = {\n  POSITION: \"position\",\n  NORMAL: \"normal\"\n};\nvar ComponentName = /* @__PURE__ */ ((ComponentName2) => {\n  ComponentName2[\"x\"] = \"x\";\n  ComponentName2[\"y\"] = \"y\";\n  ComponentName2[\"z\"] = \"z\";\n  ComponentName2[\"w\"] = \"w\";\n  ComponentName2[\"r\"] = \"r\";\n  ComponentName2[\"g\"] = \"g\";\n  ComponentName2[\"b\"] = \"b\";\n  return ComponentName2;\n})(ComponentName || {});\nconst COMPONENT_INDICES = {\n  x: 0,\n  y: 1,\n  z: 2,\n  w: 3,\n  r: 0,\n  g: 1,\n  b: 2\n};\nconst DOT = \".\";\nexport class CorePoint extends CoreEntity {\n  constructor(_coreGeometry, _index) {\n    super(_index);\n    this._coreGeometry = _coreGeometry;\n    this._geometry = this._coreGeometry.geometry();\n  }\n  applyMatrix4(matrix) {\n    this.position().applyMatrix4(matrix);\n  }\n  coreGeometry() {\n    return this._coreGeometry;\n  }\n  geometry() {\n    return this._geometry = this._geometry || this._coreGeometry.geometry();\n  }\n  attribSize(name) {\n    name = CoreAttribute.remapName(name);\n    return this._geometry.getAttribute(name).itemSize;\n  }\n  hasAttrib(name) {\n    const remapped_name = CoreAttribute.remapName(name);\n    return this._coreGeometry.hasAttrib(remapped_name);\n  }\n  attribValue(name, target) {\n    if (name === Attribute.POINT_INDEX) {\n      return this.index();\n    } else {\n      let component_name = null;\n      let component_index = null;\n      if (name[name.length - 2] === DOT) {\n        component_name = name[name.length - 1];\n        component_index = COMPONENT_INDICES[component_name];\n        name = name.substring(0, name.length - 2);\n      }\n      const remaped_name = CoreAttribute.remapName(name);\n      const attrib = this._geometry.getAttribute(remaped_name);\n      if (attrib) {\n        const { array } = attrib;\n        if (this._coreGeometry.isAttribIndexed(remaped_name)) {\n          return this.indexedAttribValue(remaped_name);\n        } else {\n          const size = attrib.itemSize;\n          const start_index = this._index * size;\n          if (component_index == null) {\n            switch (size) {\n              case 1:\n                return array[start_index];\n                break;\n              case 2:\n                target = target || new Vector2();\n                target.fromArray(array, start_index);\n                return target;\n                break;\n              case 3:\n                target = target || new Vector3();\n                target.fromArray(array, start_index);\n                return target;\n                break;\n              case 4:\n                target = target || new Vector4();\n                target.fromArray(array, start_index);\n                return target;\n                break;\n              default:\n                throw `size not valid (${size})`;\n            }\n          } else {\n            switch (size) {\n              case 1:\n                return array[start_index];\n                break;\n              default:\n                return array[start_index + component_index];\n            }\n          }\n        }\n      } else {\n        const message = `attrib ${name} not found. availables are: ${Object.keys(this._geometry.attributes || {}).join(\",\")}`;\n        console.warn(message);\n        throw message;\n      }\n    }\n  }\n  attribValueNumber(name) {\n    const remapedName = CoreAttribute.remapName(name);\n    const attrib = this._geometry.getAttribute(remapedName);\n    return attrib.array[this._index];\n  }\n  attribValueVector2(name, target) {\n    const remapedName = CoreAttribute.remapName(name);\n    const attrib = this._geometry.getAttribute(remapedName);\n    target.fromArray(attrib.array, this._index * 2);\n    return target;\n  }\n  attribValueVector3(name, target) {\n    const remapedName = CoreAttribute.remapName(name);\n    const attrib = this._geometry.getAttribute(remapedName);\n    target.fromArray(attrib.array, this._index * 3);\n    return target;\n  }\n  attribValueVector4(name, target) {\n    const remapedName = CoreAttribute.remapName(name);\n    const attrib = this._geometry.getAttribute(remapedName);\n    target.fromArray(attrib.array, this._index * 4);\n    return target;\n  }\n  indexedAttribValue(name) {\n    const value_index = this.attribValueIndex(name);\n    return this._coreGeometry.userDataAttrib(name)[value_index];\n  }\n  stringAttribValue(name) {\n    return this.indexedAttribValue(name);\n  }\n  attribValueIndex(name) {\n    if (this._coreGeometry.isAttribIndexed(name)) {\n      return this._geometry.getAttribute(name).array[this._index];\n    } else {\n      return -1;\n    }\n  }\n  isAttribIndexed(name) {\n    return this._coreGeometry.isAttribIndexed(name);\n  }\n  position() {\n    return this._position || (this._position = this.getPosition(new Vector3()));\n  }\n  getPosition(target) {\n    const { array } = this._geometry.getAttribute(ATTRIB_NAMES.POSITION);\n    return target.fromArray(array, this._index * 3);\n  }\n  setPosition(new_position) {\n    this.setAttribValueFromVector3(ATTRIB_NAMES.POSITION, new_position);\n  }\n  normal() {\n    return this._normal = this._normal || this.getNormal(new Vector3());\n  }\n  getNormal(target) {\n    const { array } = this._geometry.getAttribute(ATTRIB_NAMES.NORMAL);\n    return target.fromArray(array, this._index * 3);\n  }\n  setNormal(new_normal) {\n    return this.setAttribValueFromVector3(ATTRIB_NAMES.NORMAL, new_normal);\n  }\n  setAttribValue(attribName, value) {\n    const attrib = this._geometry.getAttribute(attribName);\n    const array = attrib.array;\n    const attribSize = attrib.itemSize;\n    if (CoreType.isArray(value)) {\n      for (let i = 0; i < attribSize; i++) {\n        array[this._index * attribSize + i] = value[i];\n      }\n      return;\n    }\n    switch (attribSize) {\n      case 1:\n        array[this._index] = value;\n        break;\n      case 2:\n        const v2 = value;\n        const i2 = this._index * 2;\n        array[i2 + 0] = v2.x;\n        array[i2 + 1] = v2.y;\n        break;\n      case 3:\n        const isColor = value.r != null;\n        const i3 = this._index * 3;\n        if (isColor) {\n          const col = value;\n          array[i3 + 0] = col.r;\n          array[i3 + 1] = col.g;\n          array[i3 + 2] = col.b;\n        } else {\n          const v3 = value;\n          array[i3 + 0] = v3.x;\n          array[i3 + 1] = v3.y;\n          array[i3 + 2] = v3.z;\n        }\n        break;\n      case 4:\n        const v4 = value;\n        const i4 = this._index * 4;\n        array[i4 + 0] = v4.x;\n        array[i4 + 1] = v4.y;\n        array[i4 + 2] = v4.z;\n        array[i4 + 3] = v4.w;\n        break;\n      default:\n        console.warn(`Point.set_attrib_value does not yet allow attrib size ${attribSize}`);\n        throw `attrib size ${attribSize} not implemented`;\n    }\n  }\n  setAttribValueFromNumber(attribName, value) {\n    const attrib = this._geometry.getAttribute(attribName);\n    const array = attrib.array;\n    array[this._index] = value;\n  }\n  setAttribValueFromVector2(attribName, value) {\n    const attrib = this._geometry.getAttribute(attribName);\n    value.toArray(attrib.array, this._index * 2);\n  }\n  setAttribValueFromVector3(attribName, value) {\n    const attrib = this._geometry.getAttribute(attribName);\n    value.toArray(attrib.array, this._index * 3);\n  }\n  setAttribValueFromVector4(attribName, value) {\n    const attrib = this._geometry.getAttribute(attribName);\n    value.toArray(attrib.array, this._index * 4);\n  }\n  setAttribIndex(name, new_value_index) {\n    const array = this._geometry.getAttribute(name).array;\n    return array[this._index] = new_value_index;\n  }\n}\n","const easeI = function(power) {\n  return function(t) {\n    return Math.pow(t, power);\n  };\n};\nconst easeO = function(power) {\n  return function(t) {\n    return 1 - Math.abs(Math.pow(t - 1, power));\n  };\n};\nconst easeIO = function(power) {\n  return function(t) {\n    return t < 0.5 ? easeI(power)(t * 2) / 2 : easeO(power)(t * 2 - 1) / 2 + 0.5;\n  };\n};\nexport const EASING_NAMES = [\n  \"easeI2\",\n  \"easeO2\",\n  \"easeIO2\",\n  \"easeI3\",\n  \"easeO3\",\n  \"easeIO3\",\n  \"easeI4\",\n  \"easeO4\",\n  \"easeIO4\",\n  \"easeSinI\",\n  \"easeSinO\",\n  \"easeSinIO\",\n  \"easeElasticI\",\n  \"easeElasticO\",\n  \"easeElasticIO\"\n];\nexport const Easing = {\n  easeI2: easeI(2),\n  easeO2: easeO(2),\n  easeIO2: easeIO(2),\n  easeI3: easeI(3),\n  easeO3: easeO(3),\n  easeIO3: easeIO(3),\n  easeI4: easeI(4),\n  easeO4: easeO(4),\n  easeIO4: easeIO(4),\n  easeSinI: function(t) {\n    return 1 + Math.sin(Math.PI / 2 * t - Math.PI / 2);\n  },\n  easeSinO: function(t) {\n    return Math.sin(Math.PI / 2 * t);\n  },\n  easeSinIO: function(t) {\n    return (1 + Math.sin(Math.PI * t - Math.PI / 2)) / 2;\n  },\n  easeElasticI: function(t) {\n    return t == 0 ? 0 : (0.04 - 0.04 / t) * Math.sin(25 * t) + 1;\n  },\n  easeElasticO: function(t) {\n    return t == 1 ? 1 : 0.04 * t / --t * Math.sin(25 * t);\n  },\n  easeElasticIO: function(t) {\n    return t == 0.5 ? 0 : (t -= 0.5) < 0 ? (0.02 + 0.01 / t) * Math.sin(50 * t) : (0.02 - 0.01 / t) * Math.sin(50 * t) + 1;\n  }\n};\n","import { Vector3 } from \"three\";\nimport { Easing } from \"./Easing\";\nimport { CoreType } from \"../Type\";\nconst RAD_DEG_RATIO = Math.PI / 180;\nconst RAND_A = 12.9898;\nconst RAND_B = 78.233;\nconst RAND_C = 43758.5453;\nexport class CoreMath {\n  static clamp(val, min, max) {\n    if (val < min) {\n      return min;\n    } else if (val > max) {\n      return max;\n    } else {\n      return val;\n    }\n  }\n  static fit01(val, destMin, destMax) {\n    return this.fit(val, 0, 1, destMin, destMax);\n  }\n  static fit(val, srcMin, srcMax, destMin, destMax) {\n    const src_range = srcMax - srcMin;\n    const dest_range = destMax - destMin;\n    const r = (val - srcMin) / src_range;\n    return r * dest_range + destMin;\n  }\n  static fitClamp(val, srcMin, srcMax, destMin, destMax) {\n    const r = this.fit(val, srcMin, srcMax, destMin, destMax);\n    return this.clamp(r, destMin, destMax);\n  }\n  static blend(num0, num1, blend) {\n    return (1 - blend) * num0 + blend * num1;\n  }\n  static degrees_to_radians(degrees) {\n    return degrees * RAD_DEG_RATIO;\n  }\n  static radians_to_degrees(radians) {\n    return radians / RAD_DEG_RATIO;\n  }\n  static deg2rad(deg) {\n    return this.degrees_to_radians(deg);\n  }\n  static rad2deg(rad) {\n    return this.radians_to_degrees(rad);\n  }\n  static rand(number) {\n    if (CoreType.isNumber(number)) {\n      return this.randFloat(number);\n    } else {\n      return this.randVec2(number);\n    }\n  }\n  static round(number, step_size) {\n    const steps_count = number / step_size;\n    const rounded_steps_count = number < 0 ? Math.ceil(steps_count) : Math.floor(steps_count);\n    return rounded_steps_count * step_size;\n  }\n  static highest_even(number) {\n    return 2 * Math.ceil(number * 0.5);\n  }\n  static randFloat(x, y = 136574) {\n    this._vec.x = x;\n    this._vec.y = y;\n    return this.randVec2(this._vec);\n  }\n  static randVec2(uv) {\n    const dt = uv.x * RAND_A + uv.y * RAND_B;\n    const sn = dt % Math.PI;\n    return this.fract(Math.sin(sn) * RAND_C);\n  }\n  static geodesic_distance(lnglat1, lnglat2) {\n    var R = 6371e3;\n    var d1 = this.deg2rad(lnglat1.lat);\n    var d2 = this.deg2rad(lnglat2.lat);\n    var ad1 = this.deg2rad(lnglat2.lat - lnglat1.lat);\n    var ad2 = this.deg2rad(lnglat2.lng - lnglat1.lng);\n    var a = Math.sin(ad1 / 2) * Math.sin(ad1 / 2) + Math.cos(d1) * Math.cos(d2) * Math.sin(ad2 / 2) * Math.sin(ad2 / 2);\n    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n    var d = R * c;\n    return d;\n  }\n  static expand_triangle(triangle, margin) {\n    triangle.getMidpoint(this._triangle_mid);\n    this._triangle_mid_to_corner.copy(triangle.a).sub(this._triangle_mid);\n    this._triangle_mid_to_corner.normalize().multiplyScalar(margin);\n    triangle.a.add(this._triangle_mid_to_corner);\n    this._triangle_mid_to_corner.copy(triangle.b).sub(this._triangle_mid);\n    this._triangle_mid_to_corner.normalize().multiplyScalar(margin);\n    triangle.b.add(this._triangle_mid_to_corner);\n    this._triangle_mid_to_corner.copy(triangle.c).sub(this._triangle_mid);\n    this._triangle_mid_to_corner.normalize().multiplyScalar(margin);\n    triangle.c.add(this._triangle_mid_to_corner);\n  }\n  static nearestPower2(num) {\n    return Math.pow(2, Math.ceil(Math.log(num) / Math.log(2)));\n  }\n  static pow2Inverse(num) {\n    return Math.log(num) / Math.log(2);\n  }\n}\nCoreMath.Easing = Easing;\nCoreMath.fract = (number) => number - Math.floor(number);\nCoreMath._vec = { x: 0, y: 136574 };\nCoreMath._triangle_mid = new Vector3();\nCoreMath._triangle_mid_to_corner = new Vector3();\n","import { Vector3 } from \"three\";\nimport { Vector2 } from \"three\";\nimport { Triangle } from \"three\";\nimport { CorePoint } from \"./Point\";\nimport { CoreMath } from \"../math/_Module\";\nimport { ArrayUtils } from \"../ArrayUtils\";\nexport class CoreFace {\n  constructor(_coreGeometry, _index) {\n    this._coreGeometry = _coreGeometry;\n    this._index = _index;\n    this._geometry = this._coreGeometry.geometry();\n  }\n  index() {\n    return this._index;\n  }\n  points() {\n    return this._points = this._points || this._get_points();\n  }\n  applyMatrix4(matrix) {\n    for (let point of this.points()) {\n      point.applyMatrix4(matrix);\n    }\n  }\n  _get_points() {\n    var _a;\n    const indexArray = ((_a = this._geometry.index) == null ? void 0 : _a.array) || [];\n    const start = this._index * 3;\n    return [\n      new CorePoint(this._coreGeometry, indexArray[start + 0]),\n      new CorePoint(this._coreGeometry, indexArray[start + 1]),\n      new CorePoint(this._coreGeometry, indexArray[start + 2])\n    ];\n  }\n  positions() {\n    return this._positions = this._positions || this._getPositions();\n  }\n  _getPositions() {\n    const points = this.points();\n    return [points[0].position(), points[1].position(), points[2].position()];\n  }\n  triangle() {\n    return this._triangle = this._triangle || this._get_triangle();\n  }\n  _get_triangle() {\n    const positions = this.positions();\n    return new Triangle(positions[0], positions[1], positions[2]);\n  }\n  deltas() {\n    return this._deltas = this._deltas || this._getDeltas();\n  }\n  _getDeltas() {\n    const positions = this.positions();\n    return [positions[1].clone().sub(positions[0]), positions[2].clone().sub(positions[0])];\n  }\n  area() {\n    return this.triangle().getArea();\n  }\n  center(target) {\n    const positions = this.positions();\n    target.x = (positions[0].x + positions[1].x + positions[2].x) / 3;\n    target.y = (positions[0].y + positions[1].y + positions[2].y) / 3;\n    target.z = (positions[0].z + positions[1].z + positions[2].z) / 3;\n    return target;\n  }\n  randomPosition(seed) {\n    let weights = [CoreMath.randFloat(seed), CoreMath.randFloat(seed * 6541)];\n    if (weights[0] + weights[1] > 1) {\n      weights[0] = 1 - weights[0];\n      weights[1] = 1 - weights[1];\n    }\n    return this.positions()[0].clone().add(this.deltas()[0].clone().multiplyScalar(weights[0])).add(this.deltas()[1].clone().multiplyScalar(weights[1]));\n  }\n  attribValueAtPosition(attrib_name, position) {\n    const barycentricCoordinates = new Vector3();\n    this.triangle().getBarycoord(position, barycentricCoordinates);\n    const weights = barycentricCoordinates.toArray();\n    const attrib = this._geometry.attributes[attrib_name];\n    const attribSize = attrib.itemSize;\n    const pointValues = this.points().map((point) => point.attribValue(attrib_name));\n    let newAttribValue;\n    let sum;\n    let index = 0;\n    switch (attribSize) {\n      case 1: {\n        sum = 0;\n        for (let pointValue of pointValues) {\n          sum += pointValue * weights[index];\n          index++;\n        }\n        newAttribValue = sum;\n        break;\n      }\n      default: {\n        for (let pointValue of pointValues) {\n          const weightedValue = pointValue.multiplyScalar(weights[index]);\n          if (sum) {\n            sum.add(weightedValue);\n          } else {\n            sum = weightedValue;\n          }\n          index++;\n        }\n        newAttribValue = sum;\n      }\n    }\n    return newAttribValue;\n  }\n  static interpolatedValue(geometry, face, intersectPoint, attrib) {\n    const pointIndices = [face.a, face.b, face.c];\n    const positionAttrib = geometry.getAttribute(\"position\");\n    const positionAttribArray = positionAttrib.array;\n    const pointPositions = pointIndices.map((point_index) => new Vector3(positionAttribArray[point_index * 3 + 0], positionAttribArray[point_index * 3 + 1], positionAttribArray[point_index * 3 + 2]));\n    const attribSize = attrib.itemSize;\n    const attribArray = attrib.array;\n    let attribValues = [];\n    switch (attribSize) {\n      case 1:\n        attribValues = pointIndices.map((point_index) => attribArray[point_index]);\n        break;\n      case 2:\n        attribValues = pointIndices.map((point_index) => new Vector2(attribArray[point_index * 2 + 0], attribArray[point_index * 2 + 1]));\n        break;\n      case 3:\n        attribValues = pointIndices.map((point_index) => new Vector3(attribArray[point_index * 3 + 0], attribArray[point_index * 3 + 1], attribArray[point_index * 3 + 2]));\n        break;\n    }\n    const distToPoints = pointIndices.map((point_index, i) => intersectPoint.distanceTo(pointPositions[i]));\n    const distanceTotal = ArrayUtils.sum([\n      distToPoints[0] * distToPoints[1],\n      distToPoints[0] * distToPoints[2],\n      distToPoints[1] * distToPoints[2]\n    ]);\n    const weights = [\n      distToPoints[1] * distToPoints[2] / distanceTotal,\n      distToPoints[0] * distToPoints[2] / distanceTotal,\n      distToPoints[0] * distToPoints[1] / distanceTotal\n    ];\n    let newAttribValue;\n    switch (attribSize) {\n      case 1:\n        newAttribValue = ArrayUtils.sum(pointIndices.map((point_indx, i) => weights[i] * attribValues[i]));\n        break;\n      default:\n        var values = pointIndices.map((point_index, i) => attribValues[i].multiplyScalar(weights[i]));\n        newAttribValue = null;\n        for (let value of values) {\n          if (newAttribValue) {\n            newAttribValue.add(value);\n          } else {\n            newAttribValue = value;\n          }\n        }\n    }\n    return newAttribValue;\n  }\n}\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n","import { ArrayUtils } from \"./ArrayUtils\";\nimport { CoreType } from \"./Type\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport clone from \"lodash-es/clone\";\nexport class ObjectUtils {\n  static isEqual(object0, object1) {\n    if (CoreType.isBoolean(object0) && CoreType.isBoolean(object1)) {\n      return object0 == object1;\n    }\n    if (CoreType.isNumber(object0) && CoreType.isNumber(object1)) {\n      return object0 == object1;\n    }\n    if (CoreType.isString(object0) && CoreType.isString(object1)) {\n      return object0 == object1;\n    }\n    if (CoreType.isObject(object0) && CoreType.isObject(object1)) {\n      const keys0 = Object.keys(object0);\n      const keys1 = Object.keys(object1);\n      if (!ArrayUtils.isEqual(keys0, keys1)) {\n        return false;\n      }\n      return JSON.stringify(object0) == JSON.stringify(object1);\n    }\n    return false;\n  }\n  static merge(object0, object1) {\n    return Object.assign(object0, object1);\n  }\n  static clone(value) {\n    return clone(value);\n  }\n  static cloneDeep(value) {\n    return cloneDeep(value);\n  }\n}\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n  return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import { Vector3 } from \"three\";\nimport { Int32BufferAttribute } from \"three\";\nimport { Float32BufferAttribute } from \"three\";\nimport { CorePoint } from \"./Point\";\nimport { CoreFace } from \"./Face\";\nimport { AttribType } from \"./Constant\";\nimport { Attribute, CoreAttribute } from \"./Attribute\";\nimport { CoreType } from \"../Type\";\nimport { ArrayUtils } from \"../ArrayUtils\";\nimport { ObjectUtils } from \"../ObjectUtils\";\nconst IS_INSTANCE_KEY = \"isInstance\";\nconst INDEX_ATTRIB_VALUES = \"indexed_attrib_values\";\nexport class CoreGeometry {\n  constructor(_geometry) {\n    this._geometry = _geometry;\n  }\n  dispose() {\n  }\n  geometry() {\n    return this._geometry;\n  }\n  uuid() {\n    return this._geometry.uuid;\n  }\n  boundingBox() {\n    return this._bounding_box = this._bounding_box || this._create_bounding_box();\n  }\n  _create_bounding_box() {\n    this._geometry.computeBoundingBox();\n    if (this._geometry.boundingBox) {\n      return this._geometry.boundingBox;\n    }\n  }\n  markAsInstance() {\n    this._geometry.userData[IS_INSTANCE_KEY] = true;\n  }\n  static markedAsInstance(geometry) {\n    return geometry.userData[IS_INSTANCE_KEY] === true;\n  }\n  markedAsInstance() {\n    return CoreGeometry.markedAsInstance(this._geometry);\n  }\n  positionAttribName() {\n    let name = \"position\";\n    if (this.markedAsInstance()) {\n      name = \"instancePosition\";\n    }\n    return name;\n  }\n  computeVertexNormals() {\n    this._geometry.computeVertexNormals();\n  }\n  userDataAttribs() {\n    return this._geometry.userData[INDEX_ATTRIB_VALUES] = this._geometry.userData[INDEX_ATTRIB_VALUES] || {};\n  }\n  indexedAttributeNames() {\n    return Object.keys(this.userDataAttribs() || {});\n  }\n  userDataAttrib(name) {\n    name = CoreAttribute.remapName(name);\n    return this.userDataAttribs()[name];\n  }\n  isAttribIndexed(name) {\n    name = CoreAttribute.remapName(name);\n    return this.userDataAttrib(name) != null;\n  }\n  hasAttrib(name) {\n    if (name === Attribute.POINT_INDEX) {\n      return true;\n    }\n    name = CoreAttribute.remapName(name);\n    return this._geometry.attributes[name] != null;\n  }\n  markAttribAsNeedsUpdate(attribName) {\n    attribName = CoreAttribute.remapName(attribName);\n    const attrib = this._geometry.attributes[attribName];\n    if (attrib) {\n      attrib.needsUpdate = true;\n    }\n  }\n  attribType(name) {\n    if (this.isAttribIndexed(name)) {\n      return AttribType.STRING;\n    } else {\n      return AttribType.NUMERIC;\n    }\n  }\n  static attribNames(geometry) {\n    return Object.keys(geometry.attributes);\n  }\n  attribNames() {\n    return CoreGeometry.attribNames(this._geometry);\n  }\n  static attribNamesMatchingMask(geometry, masksString) {\n    return CoreAttribute.attribNamesMatchingMask(masksString, this.attribNames(geometry));\n  }\n  attribNamesMatchingMask(masksString) {\n    return CoreGeometry.attribNamesMatchingMask(this._geometry, masksString);\n  }\n  attribSizes() {\n    const h = {};\n    for (let attrib_name of this.attribNames()) {\n      h[attrib_name] = this._geometry.attributes[attrib_name].itemSize;\n    }\n    return h;\n  }\n  attribSize(name) {\n    let attrib;\n    name = CoreAttribute.remapName(name);\n    if ((attrib = this._geometry.attributes[name]) != null) {\n      return attrib.itemSize;\n    } else {\n      if (name === Attribute.POINT_INDEX) {\n        return 1;\n      } else {\n        return 0;\n      }\n    }\n  }\n  setIndexedAttributeValues(name, values) {\n    this.userDataAttribs()[name] = values;\n  }\n  setIndexedAttribute(name, values, indices) {\n    this.setIndexedAttributeValues(name, values);\n    this._geometry.setAttribute(name, new Int32BufferAttribute(indices, 1));\n    this._geometry.getAttribute(name).needsUpdate = true;\n  }\n  addNumericAttrib(name, size = 1, default_value = 0) {\n    const values = [];\n    let attribute_added = false;\n    if (CoreType.isNumber(default_value)) {\n      for (let i = 0; i < this.pointsCount(); i++) {\n        for (let j = 0; j < size; j++) {\n          values.push(default_value);\n        }\n      }\n      attribute_added = true;\n    } else {\n      if (size > 1) {\n        if (CoreType.isArray(default_value)) {\n          for (let i = 0; i < this.pointsCount(); i++) {\n            for (let j = 0; j < size; j++) {\n              values.push(default_value[j]);\n            }\n          }\n          attribute_added = true;\n        } else {\n          const vec2 = default_value;\n          if (size == 2 && vec2.x != null && vec2.y != null) {\n            for (let i = 0; i < this.pointsCount(); i++) {\n              values.push(vec2.x);\n              values.push(vec2.y);\n            }\n            attribute_added = true;\n          }\n          const vec3 = default_value;\n          if (size == 3 && vec3.x != null && vec3.y != null && vec3.z != null) {\n            for (let i = 0; i < this.pointsCount(); i++) {\n              values.push(vec3.x);\n              values.push(vec3.y);\n              values.push(vec3.z);\n            }\n            attribute_added = true;\n          }\n          const col = default_value;\n          if (size == 3 && col.r != null && col.g != null && col.b != null) {\n            for (let i = 0; i < this.pointsCount(); i++) {\n              values.push(col.r);\n              values.push(col.g);\n              values.push(col.b);\n            }\n            attribute_added = true;\n          }\n          const vec4 = default_value;\n          if (size == 4 && vec4.x != null && vec4.y != null && vec4.z != null && vec4.w != null) {\n            for (let i = 0; i < this.pointsCount(); i++) {\n              values.push(vec4.x);\n              values.push(vec4.y);\n              values.push(vec4.z);\n              values.push(vec4.w);\n            }\n            attribute_added = true;\n          }\n        }\n      }\n    }\n    if (attribute_added) {\n      this._geometry.setAttribute(name.trim(), new Float32BufferAttribute(values, size));\n    } else {\n      console.warn(default_value);\n      throw `CoreGeometry.add_numeric_attrib error: no other default value allowed for now in add_numeric_attrib (default given: ${default_value})`;\n    }\n  }\n  initPositionAttribute(points_count, default_value) {\n    const values = [];\n    if (default_value == null) {\n      default_value = new Vector3();\n    }\n    for (let i = 0; i < points_count; i++) {\n      values.push(default_value.x);\n      values.push(default_value.y);\n      values.push(default_value.z);\n    }\n    return this._geometry.setAttribute(\"position\", new Float32BufferAttribute(values, 3));\n  }\n  addAttribute(name, attrib_data) {\n    switch (attrib_data.type()) {\n      case AttribType.STRING:\n        return console.log(\"TODO: to implement\");\n      case AttribType.NUMERIC:\n        return this.addNumericAttrib(name, attrib_data.size());\n    }\n  }\n  renameAttrib(old_name, new_name) {\n    if (this.isAttribIndexed(old_name)) {\n      this.userDataAttribs()[new_name] = ObjectUtils.clone(this.userDataAttribs()[old_name]);\n      delete this.userDataAttribs()[old_name];\n    }\n    const old_attrib = this._geometry.getAttribute(old_name);\n    this._geometry.setAttribute(new_name.trim(), new Float32BufferAttribute(old_attrib.array, old_attrib.itemSize));\n    return this._geometry.deleteAttribute(old_name);\n  }\n  deleteAttribute(name) {\n    if (this.isAttribIndexed(name)) {\n      delete this.userDataAttribs()[name];\n    }\n    return this._geometry.deleteAttribute(name);\n  }\n  clone() {\n    return CoreGeometry.clone(this._geometry);\n  }\n  static clone(srcGeometry) {\n    const clonedGeometry = srcGeometry.clone();\n    if (srcGeometry.userData) {\n      clonedGeometry.userData = ObjectUtils.cloneDeep(srcGeometry.userData);\n    }\n    return clonedGeometry;\n  }\n  pointsCount() {\n    return CoreGeometry.pointsCount(this._geometry);\n  }\n  static pointsCount(geometry) {\n    let position;\n    let count = 0;\n    const core_geometry = new this(geometry);\n    let position_attrib_name = \"position\";\n    if (core_geometry.markedAsInstance()) {\n      position_attrib_name = \"instancePosition\";\n    }\n    if ((position = geometry.getAttribute(position_attrib_name)) != null) {\n      let array;\n      if ((array = position.array) != null) {\n        count = array.length / 3;\n      }\n    }\n    return count;\n  }\n  points() {\n    return this.pointsFromGeometry();\n  }\n  pointsFromGeometry() {\n    const points = [];\n    const positionAttrib = this._geometry.getAttribute(this.positionAttribName());\n    if (positionAttrib != null) {\n      const count = positionAttrib.array.length / 3;\n      for (let i = 0; i < count; i++) {\n        const point = new CorePoint(this, i);\n        points.push(point);\n      }\n    }\n    return points;\n  }\n  segments() {\n    var _a;\n    const index = ((_a = this.geometry().index) == null ? void 0 : _a.array) || [];\n    return ArrayUtils.chunk(index, 2);\n  }\n  faces() {\n    return this.facesFromGeometry();\n  }\n  facesFromGeometry() {\n    var _a;\n    const index_array = ((_a = this.geometry().index) == null ? void 0 : _a.array) || [];\n    const faces_count = index_array.length / 3;\n    return ArrayUtils.range(faces_count).map((i) => new CoreFace(this, i));\n  }\n}\n","export var ParamType = /* @__PURE__ */ ((ParamType2) => {\n  ParamType2[\"BOOLEAN\"] = \"boolean\";\n  ParamType2[\"BUTTON\"] = \"button\";\n  ParamType2[\"COLOR\"] = \"color\";\n  ParamType2[\"FLOAT\"] = \"float\";\n  ParamType2[\"FOLDER\"] = \"folder\";\n  ParamType2[\"INTEGER\"] = \"integer\";\n  ParamType2[\"PARAM_PATH\"] = \"param_path\";\n  ParamType2[\"NODE_PATH\"] = \"node_path\";\n  ParamType2[\"RAMP\"] = \"ramp\";\n  ParamType2[\"STRING\"] = \"string\";\n  ParamType2[\"VECTOR2\"] = \"vector2\";\n  ParamType2[\"VECTOR3\"] = \"vector3\";\n  ParamType2[\"VECTOR4\"] = \"vector4\";\n  return ParamType2;\n})(ParamType || {});\n","import { ParamType } from \"../../../../poly/ParamType\";\nimport { NodeContext } from \"../../../../poly/NodeContext\";\nexport class BaseParamConfig {\n  constructor(_type, _name, _defaultValue) {\n    this._type = _type;\n    this._name = _name;\n    this._defaultValue = _defaultValue;\n    if (_name == \"\" || _name == null) {\n      throw new Error(`name must not be an empty string`);\n    }\n  }\n  static fromParam(param) {\n    return new BaseParamConfig(param.type(), param.name(), param.defaultValue());\n  }\n  type() {\n    return this._type;\n  }\n  name() {\n    return this._name;\n  }\n  defaultValue() {\n    return this._defaultValue;\n  }\n  paramOptions() {\n    const callbackBound = this._callback.bind(this);\n    switch (this._type) {\n      case ParamType.NODE_PATH:\n        return { callback: callbackBound, nodeSelection: { context: NodeContext.COP } };\n      default:\n        return { callback: callbackBound };\n    }\n  }\n  applyToNode(node) {\n    if (!node.params.has(this._name)) {\n      return;\n    }\n    const param = node.params.get(this._name);\n    if (!param) {\n      return;\n    }\n    const additionalOptions = this.paramOptions();\n    const additionalOptionNames = Object.keys(additionalOptions);\n    for (let optionName of additionalOptionNames) {\n      param.options.setOption(optionName, additionalOptions[optionName]);\n    }\n    this.executeCallback(node, param);\n    if (param.type() == ParamType.NODE_PATH) {\n      setTimeout(async () => {\n        if (param.isDirty()) {\n          await param.compute();\n        }\n        param.options.executeCallback();\n      }, 200);\n    }\n  }\n  executeCallback(node, param) {\n    this._callback(node, param);\n  }\n  _callback(node, param) {\n  }\n}\n","import { Vector4 } from \"three\";\nimport { Vector3 } from \"three\";\nimport { Vector2 } from \"three\";\nimport { Color } from \"three\";\nimport { ParamType } from \"../../../../poly/ParamType\";\nimport { TypeAssert } from \"../../../../poly/Assert\";\nimport { BaseParamConfig } from \"../../../utils/code/configs/BaseParamConfig\";\nimport { NodeContext } from \"../../../../poly/NodeContext\";\nexport class GlParamConfig extends BaseParamConfig {\n  constructor(_type, _name, _defaultValue, _uniformName) {\n    super(_type, _name, _defaultValue);\n    this._uniformName = _uniformName;\n  }\n  toJSON() {\n    return {\n      type: this._type,\n      name: this._name,\n      defaultValue: this._defaultValue,\n      uniformName: this._uniformName\n    };\n  }\n  static fromJSON(json) {\n    return new GlParamConfig(json.type, json.name, json.defaultValue, json.uniformName);\n  }\n  uniformName() {\n    return this._uniformName;\n  }\n  uniform() {\n    return this._uniform = this._uniform || this._createUniform();\n  }\n  _createUniform() {\n    return GlParamConfig.uniformByType(this._type);\n  }\n  _callback(node, param) {\n    GlParamConfig.callback(param, this.uniform());\n  }\n  static callback(param, uniform) {\n    switch (param.type()) {\n      case ParamType.RAMP:\n        uniform.value = param.rampTexture();\n        return;\n      case ParamType.NODE_PATH:\n        GlParamConfig.set_uniform_value_from_texture_from_node_path_param(param, uniform);\n        return;\n      default:\n        uniform.value = param.value;\n    }\n  }\n  static uniformByType(type) {\n    switch (type) {\n      case ParamType.BOOLEAN:\n        return { value: 0 };\n      case ParamType.BUTTON:\n        return { value: 0 };\n      case ParamType.COLOR:\n        return { value: new Color(0, 0, 0) };\n      case ParamType.FLOAT:\n        return { value: 0 };\n      case ParamType.FOLDER:\n        return { value: 0 };\n      case ParamType.INTEGER:\n        return { value: 0 };\n      case ParamType.NODE_PATH:\n        return { value: 0 };\n      case ParamType.PARAM_PATH:\n        return { value: 0 };\n      case ParamType.RAMP:\n        return { value: null };\n      case ParamType.STRING:\n        return { value: null };\n      case ParamType.VECTOR2:\n        return { value: new Vector2(0, 0) };\n      case ParamType.VECTOR3:\n        return { value: new Vector3(0, 0, 0) };\n      case ParamType.VECTOR4:\n        return { value: new Vector4(0, 0, 0, 0) };\n    }\n    TypeAssert.unreachable(type);\n  }\n  static async set_uniform_value_from_texture_from_node_path_param(param, uniform) {\n    if (param.isDirty()) {\n      await param.compute();\n    }\n    const node = param.value.nodeWithContext(NodeContext.COP);\n    if (node) {\n      if (node.isDirty()) {\n        node.compute().then((container) => {\n          const texture = container.texture();\n          uniform.value = texture;\n        });\n      } else {\n        const container = node.containerController.container();\n        const texture = container.texture();\n        uniform.value = texture;\n      }\n    } else {\n      uniform.value = null;\n    }\n  }\n  set_uniform_value_from_ramp(param, uniform) {\n    uniform.value = param.rampTexture();\n  }\n}\n","import { GlParamConfig } from \"../../utils/GLParamConfig\";\nexport function assignUniformViaUserData(material, uniformName, newUniform) {\n  const uniforms = MaterialUserDataUniforms.getUniforms(material);\n  if (uniforms) {\n    const currentUniform = uniforms[uniformName];\n    if (currentUniform) {\n      currentUniform.value = newUniform.value;\n    } else {\n      uniforms[uniformName] = newUniform;\n    }\n  } else {\n    OnBeforeCompileDataHandler.addAdditionalTexture(material, uniformName, newUniform);\n  }\n}\nexport class MaterialUserDataUniforms {\n  static getUniforms(material) {\n    var _a;\n    return (_a = material.userData) == null ? void 0 : _a.uniforms;\n  }\n  static setUniforms(material, uniforms) {\n    material.userData.uniforms = uniforms;\n  }\n  static removeUniforms(material) {\n    const uniforms = this.getUniforms(material);\n    if (uniforms) {\n      const userData = material.userData;\n      delete userData[\"uniforms\"];\n    }\n    return uniforms;\n  }\n}\nexport function assignOnBeforeCompileDataAndFunction(scene, material, data) {\n  OnBeforeCompileDataHandler.setData(material, data);\n  material.onBeforeCompile = _createOnBeforeCompile(scene, material);\n  const key = `${material.uuid}:${performance.now()}`;\n  material.customProgramCacheKey = () => key;\n}\nexport function copyOnBeforeCompileData(scene, params) {\n  const { src, dest, shareCustomUniforms } = params;\n  const data = OnBeforeCompileDataHandler.getData(src);\n  if (data) {\n    let cloneData = function(data2) {\n      const json = OnBeforeCompileDataConverter.toJSON(data2);\n      return OnBeforeCompileDataConverter.fromJSON(json);\n    };\n    const newData = shareCustomUniforms ? data : cloneData(data);\n    assignOnBeforeCompileDataAndFunction(scene, dest, newData);\n  }\n}\nfunction _createOnBeforeCompile(scene, material) {\n  const onBeforeCompile = (shader) => {\n    const data = OnBeforeCompileDataHandler.getData(material);\n    if (!data) {\n      return;\n    }\n    const {\n      vertexShader,\n      fragmentShader,\n      paramConfigs,\n      additionalTextureUniforms,\n      timeDependent,\n      resolutionDependent\n    } = data;\n    shader.vertexShader = vertexShader;\n    shader.fragmentShader = fragmentShader;\n    scene.uniformsController.addUniforms(shader.uniforms, {\n      paramConfigs,\n      additionalTextureUniforms,\n      timeDependent,\n      resolutionDependent\n    });\n    const shaderMaterial = material;\n    shaderMaterial.vertexShader = shader.vertexShader;\n    shaderMaterial.fragmentShader = shader.fragmentShader;\n    MaterialUserDataUniforms.setUniforms(material, shader.uniforms);\n  };\n  return onBeforeCompile;\n}\nexport class OnBeforeCompileDataHandler {\n  static setData(material, data) {\n    material.userData.onBeforeCompileData = data;\n  }\n  static addAdditionalTexture(material, uniformName, newUniform) {\n    const data = this.getData(material);\n    if (data) {\n      const currentUniform = data.additionalTextureUniforms[uniformName];\n      if (currentUniform == null) {\n        data.additionalTextureUniforms[uniformName] = newUniform;\n      }\n    } else {\n      console.warn(\"no data found on material\", material);\n    }\n  }\n  static getData(material) {\n    return material.userData.onBeforeCompileData;\n  }\n  static removeData(material) {\n    const data = this.getData(material);\n    if (data) {\n      const userData = material.userData;\n      delete userData[\"onBeforeCompileData\"];\n    }\n    return data;\n  }\n}\nexport class OnBeforeCompileDataConverter {\n  static toJSON(onBeforeCompileData) {\n    const onBeforeCompileDataJSON = {\n      vertexShader: onBeforeCompileData.vertexShader,\n      fragmentShader: onBeforeCompileData.fragmentShader,\n      timeDependent: onBeforeCompileData.timeDependent,\n      resolutionDependent: onBeforeCompileData.resolutionDependent,\n      paramConfigs: onBeforeCompileData.paramConfigs.map((pc) => pc.toJSON())\n    };\n    return onBeforeCompileDataJSON;\n  }\n  static fromJSON(json) {\n    const onBeforeCompileData = {\n      ...json,\n      additionalTextureUniforms: {},\n      paramConfigs: json.paramConfigs.map((json2) => GlParamConfig.fromJSON(json2))\n    };\n    return onBeforeCompileData;\n  }\n}\n","import { UniformsUtils } from \"three\";\nexport var CustomMaterialName = /* @__PURE__ */ ((CustomMaterialName2) => {\n  CustomMaterialName2[\"customDistanceMaterial\"] = \"customDistanceMaterial\";\n  CustomMaterialName2[\"customDepthMaterial\"] = \"customDepthMaterial\";\n  CustomMaterialName2[\"customDepthDOFMaterial\"] = \"customDepthDOFMaterial\";\n  return CustomMaterialName2;\n})(CustomMaterialName || {});\nimport {\n  assignUniformViaUserData,\n  copyOnBeforeCompileData\n} from \"../../engine/nodes/gl/code/assemblers/materials/OnBeforeCompile\";\nconst RENDER_HOOK_USER_DATA_KEY = \"POLY_render_hook\";\nconst EMPTY_RENDER_HOOK = (renderer, scene, camera, geometry, material, group) => {\n};\nexport class CoreMaterial {\n  static node(scene, material) {\n    return scene.node(material.name);\n  }\n  static clone(scene, srcMaterial, options) {\n    const clonedMaterial = srcMaterial.clone();\n    const srcUniforms = srcMaterial.uniforms;\n    if (srcUniforms) {\n      clonedMaterial.uniforms = UniformsUtils.clone(srcUniforms);\n    }\n    copyOnBeforeCompileData(scene, {\n      src: srcMaterial,\n      dest: clonedMaterial,\n      shareCustomUniforms: options.shareCustomUniforms\n    });\n    return clonedMaterial;\n  }\n  static addUserDataRenderHook(material, renderHook) {\n    material.userData[RENDER_HOOK_USER_DATA_KEY] = renderHook;\n  }\n  static applyRenderHook(object, material) {\n    if (material.userData) {\n      const renderHook = material.userData[RENDER_HOOK_USER_DATA_KEY];\n      if (renderHook) {\n        object.onBeforeRender = (renderer, scene, camera, geometry, material2, group) => {\n          renderHook(renderer, scene, camera, geometry, material2, group, object);\n        };\n        return;\n      }\n    }\n    object.onBeforeRender = EMPTY_RENDER_HOOK;\n  }\n  static applyCustomMaterials(object, material) {\n    const material_with_custom = material;\n    if (material_with_custom.customMaterials) {\n      for (let name of Object.keys(material_with_custom.customMaterials)) {\n        const mat_name = name;\n        const custom_material = material_with_custom.customMaterials[mat_name];\n        if (custom_material) {\n          object[mat_name] = custom_material;\n          custom_material.needsUpdate = true;\n        }\n      }\n    }\n  }\n  static assignUniforms(mat, uniformName, uniform, assembler) {\n    assignUniformViaUserData(mat, uniformName, uniform);\n    if (assembler) {\n      this.assignUniformForOnBeforeCompile(mat, uniformName, uniform, assembler);\n    }\n  }\n  static assignUniformForOnBeforeCompile(mat, uniformName, uniform, assembler) {\n    assembler.addAdditionalTextureUniforms(uniformName, uniform);\n  }\n}\n","import { Vector3, Vector2, Triangle, DoubleSide, BackSide } from 'three';\n\n// Ripped and modified From THREE.js Mesh raycast\n// https://github.com/mrdoob/three.js/blob/0aa87c999fe61e216c1133fba7a95772b503eddf/src/objects/Mesh.js#L115\nconst vA = /* @__PURE__ */ new Vector3();\nconst vB = /* @__PURE__ */ new Vector3();\nconst vC = /* @__PURE__ */ new Vector3();\n\nconst uvA = /* @__PURE__ */ new Vector2();\nconst uvB = /* @__PURE__ */ new Vector2();\nconst uvC = /* @__PURE__ */ new Vector2();\n\nconst intersectionPoint = /* @__PURE__ */ new Vector3();\nfunction checkIntersection( ray, pA, pB, pC, point, side ) {\n\n\tlet intersect;\n\tif ( side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\tconst distance = ray.origin.distanceTo( point );\n\n\treturn {\n\n\t\tdistance: distance,\n\t\tpoint: point.clone(),\n\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( ray, position, uv, a, b, c, side ) {\n\n\tvA.fromBufferAttribute( position, a );\n\tvB.fromBufferAttribute( position, b );\n\tvC.fromBufferAttribute( position, c );\n\n\tconst intersection = checkIntersection( ray, vA, vB, vC, intersectionPoint, side );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\tuvA.fromBufferAttribute( uv, a );\n\t\t\tuvB.fromBufferAttribute( uv, b );\n\t\t\tuvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2( ) );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( vA, vB, vC, face.normal );\n\n\t\tintersection.face = face;\n\t\tintersection.faceIndex = a;\n\n\t}\n\n\treturn intersection;\n\n}\n\n// https://github.com/mrdoob/three.js/blob/0aa87c999fe61e216c1133fba7a95772b503eddf/src/objects/Mesh.js#L258\nfunction intersectTri( geo, side, ray, tri, intersections ) {\n\n\tconst triOffset = tri * 3;\n\tconst a = geo.index.getX( triOffset );\n\tconst b = geo.index.getX( triOffset + 1 );\n\tconst c = geo.index.getX( triOffset + 2 );\n\n\tconst intersection = checkBufferGeometryIntersection( ray, geo.attributes.position, geo.attributes.uv, a, b, c, side );\n\n\tif ( intersection ) {\n\n\t\tintersection.faceIndex = tri;\n\t\tif ( intersections ) intersections.push( intersection );\n\t\treturn intersection;\n\n\t}\n\n\treturn null;\n\n}\n\nexport { intersectTri };\n","import { intersectTri } from './ThreeRayIntersectUtilities.js';\n\nexport function intersectTris( geo, side, ray, offset, count, intersections ) {\n\n\tfor ( let i = offset, end = offset + count; i < end; i ++ ) {\n\n\t\tintersectTri( geo, side, ray, i, intersections );\n\n\t}\n\n}\n\nexport function intersectClosestTri( geo, side, ray, offset, count ) {\n\n\tlet dist = Infinity;\n\tlet res = null;\n\tfor ( let i = offset, end = offset + count; i < end; i ++ ) {\n\n\t\tconst intersection = intersectTri( geo, side, ray, i );\n\t\tif ( intersection && intersection.distance < dist ) {\n\n\t\t\tres = intersection;\n\t\t\tdist = intersection.distance;\n\n\t\t}\n\n\t}\n\n\treturn res;\n\n}\n\n// converts the given BVH raycast intersection to align with the three.js raycast\n// structure (include object, world space distance and point).\nexport function convertRaycastIntersect( hit, object, raycaster ) {\n\n\tif ( hit === null ) {\n\n\t\treturn null;\n\n\t}\n\n\thit.point.applyMatrix4( object.matrixWorld );\n\thit.distance = hit.point.distanceTo( raycaster.ray.origin );\n\thit.object = object;\n\n\tif ( hit.distance < raycaster.near || hit.distance > raycaster.far ) {\n\n\t\treturn null;\n\n\t} else {\n\n\t\treturn hit;\n\n\t}\n\n}\n","import { Ray, Matrix4, Mesh } from 'three';\nimport { convertRaycastIntersect } from './GeometryRayIntersectUtilities.js';\nimport { MeshBVH } from '../core/MeshBVH.js';\n\nconst ray = /* @__PURE__ */ new Ray();\nconst tmpInverseMatrix = /* @__PURE__ */ new Matrix4();\nconst origMeshRaycastFunc = Mesh.prototype.raycast;\n\nexport function acceleratedRaycast( raycaster, intersects ) {\n\n\tif ( this.geometry.boundsTree ) {\n\n\t\tif ( this.material === undefined ) return;\n\n\t\ttmpInverseMatrix.copy( this.matrixWorld ).invert();\n\t\tray.copy( raycaster.ray ).applyMatrix4( tmpInverseMatrix );\n\n\t\tconst bvh = this.geometry.boundsTree;\n\t\tif ( raycaster.firstHitOnly === true ) {\n\n\t\t\tconst hit = convertRaycastIntersect( bvh.raycastFirst( ray, this.material ), this, raycaster );\n\t\t\tif ( hit ) {\n\n\t\t\t\tintersects.push( hit );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst hits = bvh.raycast( ray, this.material );\n\t\t\tfor ( let i = 0, l = hits.length; i < l; i ++ ) {\n\n\t\t\t\tconst hit = convertRaycastIntersect( hits[ i ], this, raycaster );\n\t\t\t\tif ( hit ) {\n\n\t\t\t\t\tintersects.push( hit );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\torigMeshRaycastFunc.call( this, raycaster, intersects );\n\n\t}\n\n}\n\nexport function computeBoundsTree( options ) {\n\n\tthis.boundsTree = new MeshBVH( this, options );\n\treturn this.boundsTree;\n\n}\n\nexport function disposeBoundsTree() {\n\n\tthis.boundsTree = null;\n\n}\n","// Split strategy constants\nexport const CENTER = 0;\nexport const AVERAGE = 1;\nexport const SAH = 2;\n\n// Traversal constants\nexport const NOT_INTERSECTED = 0;\nexport const INTERSECTED = 1;\nexport const CONTAINED = 2;\n\n// SAH cost constants\n// TODO: hone these costs more. The relative difference between them should be the\n// difference in measured time to perform a triangle intersection vs traversing\n// bounds.\nexport const TRIANGLE_INTERSECT_COST = 1.25;\nexport const TRAVERSAL_COST = 1;\n\n\n// Build constants\nexport const BYTES_PER_NODE = 6 * 4 + 4 + 4;\nexport const IS_LEAFNODE_FLAG = 0xFFFF;\n\n// EPSILON for computing floating point error during build\n// https://en.wikipedia.org/wiki/Machine_epsilon#Values_for_standard_hardware_floating_point_arithmetics\nexport const FLOAT32_EPSILON = Math.pow( 2, - 24 );\n\n","export class MeshBVHNode {\n\n\tconstructor() {\n\n\t\t// internal nodes have boundingData, left, right, and splitAxis\n\t\t// leaf nodes have offset and count (referring to primitives in the mesh geometry)\n\n\t}\n\n}\n","export function arrayToBox( nodeIndex32, array, target ) {\n\n\ttarget.min.x = array[ nodeIndex32 ];\n\ttarget.min.y = array[ nodeIndex32 + 1 ];\n\ttarget.min.z = array[ nodeIndex32 + 2 ];\n\n\ttarget.max.x = array[ nodeIndex32 + 3 ];\n\ttarget.max.y = array[ nodeIndex32 + 4 ];\n\ttarget.max.z = array[ nodeIndex32 + 5 ];\n\n\treturn target;\n\n}\n\nexport function getLongestEdgeIndex( bounds ) {\n\n\tlet splitDimIdx = - 1;\n\tlet splitDist = - Infinity;\n\n\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\tconst dist = bounds[ i + 3 ] - bounds[ i ];\n\t\tif ( dist > splitDist ) {\n\n\t\t\tsplitDist = dist;\n\t\t\tsplitDimIdx = i;\n\n\t\t}\n\n\t}\n\n\treturn splitDimIdx;\n\n}\n\n// copys bounds a into bounds b\nexport function copyBounds( source, target ) {\n\n\ttarget.set( source );\n\n}\n\n// sets bounds target to the union of bounds a and b\nexport function unionBounds( a, b, target ) {\n\n\tlet aVal, bVal;\n\tfor ( let d = 0; d < 3; d ++ ) {\n\n\t\tconst d3 = d + 3;\n\n\t\t// set the minimum values\n\t\taVal = a[ d ];\n\t\tbVal = b[ d ];\n\t\ttarget[ d ] = aVal < bVal ? aVal : bVal;\n\n\t\t// set the max values\n\t\taVal = a[ d3 ];\n\t\tbVal = b[ d3 ];\n\t\ttarget[ d3 ] = aVal > bVal ? aVal : bVal;\n\n\t}\n\n}\n\n// expands the given bounds by the provided triangle bounds\nexport function expandByTriangleBounds( startIndex, triangleBounds, bounds ) {\n\n\tfor ( let d = 0; d < 3; d ++ ) {\n\n\t\tconst tCenter = triangleBounds[ startIndex + 2 * d ];\n\t\tconst tHalf = triangleBounds[ startIndex + 2 * d + 1 ];\n\n\t\tconst tMin = tCenter - tHalf;\n\t\tconst tMax = tCenter + tHalf;\n\n\t\tif ( tMin < bounds[ d ] ) {\n\n\t\t\tbounds[ d ] = tMin;\n\n\t\t}\n\n\t\tif ( tMax > bounds[ d + 3 ] ) {\n\n\t\t\tbounds[ d + 3 ] = tMax;\n\n\t\t}\n\n\t}\n\n}\n\n// compute bounds surface area\nexport function computeSurfaceArea( bounds ) {\n\n\tconst d0 = bounds[ 3 ] - bounds[ 0 ];\n\tconst d1 = bounds[ 4 ] - bounds[ 1 ];\n\tconst d2 = bounds[ 5 ] - bounds[ 2 ];\n\n\treturn 2 * ( d0 * d1 + d1 * d2 + d2 * d0 );\n\n}\n","import { BufferAttribute } from 'three';\nimport { MeshBVHNode } from './MeshBVHNode.js';\nimport { getLongestEdgeIndex, computeSurfaceArea, copyBounds, unionBounds, expandByTriangleBounds } from '../utils/ArrayBoxUtilities.js';\nimport {\n\tCENTER, AVERAGE, SAH, TRIANGLE_INTERSECT_COST, TRAVERSAL_COST,\n\tBYTES_PER_NODE, FLOAT32_EPSILON, IS_LEAFNODE_FLAG,\n} from './Constants.js';\n\nfunction ensureIndex( geo, options ) {\n\n\tif ( ! geo.index ) {\n\n\t\tconst vertexCount = geo.attributes.position.count;\n\t\tconst BufferConstructor = options.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer;\n\t\tlet index;\n\t\tif ( vertexCount > 65535 ) {\n\n\t\t\tindex = new Uint32Array( new BufferConstructor( 4 * vertexCount ) );\n\n\t\t} else {\n\n\t\t\tindex = new Uint16Array( new BufferConstructor( 2 * vertexCount ) );\n\n\t\t}\n\n\t\tgeo.setIndex( new BufferAttribute( index, 1 ) );\n\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tindex[ i ] = i;\n\n\t\t}\n\n\t}\n\n}\n\n// Computes the set of { offset, count } ranges which need independent BVH roots. Each\n// region in the geometry index that belongs to a different set of material groups requires\n// a separate BVH root, so that triangles indices belonging to one group never get swapped\n// with triangle indices belongs to another group. For example, if the groups were like this:\n//\n// [-------------------------------------------------------------]\n// |__________________|\n//   g0 = [0, 20]  |______________________||_____________________|\n//                      g1 = [16, 40]           g2 = [41, 60]\n//\n// we would need four BVH roots: [0, 15], [16, 20], [21, 40], [41, 60].\nfunction getRootIndexRanges( geo ) {\n\n\tif ( ! geo.groups || ! geo.groups.length ) {\n\n\t\treturn [ { offset: 0, count: geo.index.count / 3 } ];\n\n\t}\n\n\tconst ranges = [];\n\tconst rangeBoundaries = new Set();\n\tfor ( const group of geo.groups ) {\n\n\t\trangeBoundaries.add( group.start );\n\t\trangeBoundaries.add( group.start + group.count );\n\n\t}\n\n\t// note that if you don't pass in a comparator, it sorts them lexicographically as strings :-(\n\tconst sortedBoundaries = Array.from( rangeBoundaries.values() ).sort( ( a, b ) => a - b );\n\tfor ( let i = 0; i < sortedBoundaries.length - 1; i ++ ) {\n\n\t\tconst start = sortedBoundaries[ i ], end = sortedBoundaries[ i + 1 ];\n\t\tranges.push( { offset: ( start / 3 ), count: ( end - start ) / 3 } );\n\n\t}\n\n\treturn ranges;\n\n}\n\n// computes the union of the bounds of all of the given triangles and puts the resulting box in target. If\n// centroidTarget is provided then a bounding box is computed for the centroids of the triangles, as well.\n// These are computed together to avoid redundant accesses to bounds array.\nfunction getBounds( triangleBounds, offset, count, target, centroidTarget = null ) {\n\n\tlet minx = Infinity;\n\tlet miny = Infinity;\n\tlet minz = Infinity;\n\tlet maxx = - Infinity;\n\tlet maxy = - Infinity;\n\tlet maxz = - Infinity;\n\n\tlet cminx = Infinity;\n\tlet cminy = Infinity;\n\tlet cminz = Infinity;\n\tlet cmaxx = - Infinity;\n\tlet cmaxy = - Infinity;\n\tlet cmaxz = - Infinity;\n\n\tconst includeCentroid = centroidTarget !== null;\n\tfor ( let i = offset * 6, end = ( offset + count ) * 6; i < end; i += 6 ) {\n\n\t\tconst cx = triangleBounds[ i + 0 ];\n\t\tconst hx = triangleBounds[ i + 1 ];\n\t\tconst lx = cx - hx;\n\t\tconst rx = cx + hx;\n\t\tif ( lx < minx ) minx = lx;\n\t\tif ( rx > maxx ) maxx = rx;\n\t\tif ( includeCentroid && cx < cminx ) cminx = cx;\n\t\tif ( includeCentroid && cx > cmaxx ) cmaxx = cx;\n\n\t\tconst cy = triangleBounds[ i + 2 ];\n\t\tconst hy = triangleBounds[ i + 3 ];\n\t\tconst ly = cy - hy;\n\t\tconst ry = cy + hy;\n\t\tif ( ly < miny ) miny = ly;\n\t\tif ( ry > maxy ) maxy = ry;\n\t\tif ( includeCentroid && cy < cminy ) cminy = cy;\n\t\tif ( includeCentroid && cy > cmaxy ) cmaxy = cy;\n\n\t\tconst cz = triangleBounds[ i + 4 ];\n\t\tconst hz = triangleBounds[ i + 5 ];\n\t\tconst lz = cz - hz;\n\t\tconst rz = cz + hz;\n\t\tif ( lz < minz ) minz = lz;\n\t\tif ( rz > maxz ) maxz = rz;\n\t\tif ( includeCentroid && cz < cminz ) cminz = cz;\n\t\tif ( includeCentroid && cz > cmaxz ) cmaxz = cz;\n\n\t}\n\n\ttarget[ 0 ] = minx;\n\ttarget[ 1 ] = miny;\n\ttarget[ 2 ] = minz;\n\n\ttarget[ 3 ] = maxx;\n\ttarget[ 4 ] = maxy;\n\ttarget[ 5 ] = maxz;\n\n\tif ( includeCentroid ) {\n\n\t\tcentroidTarget[ 0 ] = cminx;\n\t\tcentroidTarget[ 1 ] = cminy;\n\t\tcentroidTarget[ 2 ] = cminz;\n\n\t\tcentroidTarget[ 3 ] = cmaxx;\n\t\tcentroidTarget[ 4 ] = cmaxy;\n\t\tcentroidTarget[ 5 ] = cmaxz;\n\n\t}\n\n}\n\n// A stand alone function for retrieving the centroid bounds.\nfunction getCentroidBounds( triangleBounds, offset, count, centroidTarget ) {\n\n\tlet cminx = Infinity;\n\tlet cminy = Infinity;\n\tlet cminz = Infinity;\n\tlet cmaxx = - Infinity;\n\tlet cmaxy = - Infinity;\n\tlet cmaxz = - Infinity;\n\n\tfor ( let i = offset * 6, end = ( offset + count ) * 6; i < end; i += 6 ) {\n\n\t\tconst cx = triangleBounds[ i + 0 ];\n\t\tif ( cx < cminx ) cminx = cx;\n\t\tif ( cx > cmaxx ) cmaxx = cx;\n\n\t\tconst cy = triangleBounds[ i + 2 ];\n\t\tif ( cy < cminy ) cminy = cy;\n\t\tif ( cy > cmaxy ) cmaxy = cy;\n\n\t\tconst cz = triangleBounds[ i + 4 ];\n\t\tif ( cz < cminz ) cminz = cz;\n\t\tif ( cz > cmaxz ) cmaxz = cz;\n\n\t}\n\n\tcentroidTarget[ 0 ] = cminx;\n\tcentroidTarget[ 1 ] = cminy;\n\tcentroidTarget[ 2 ] = cminz;\n\n\tcentroidTarget[ 3 ] = cmaxx;\n\tcentroidTarget[ 4 ] = cmaxy;\n\tcentroidTarget[ 5 ] = cmaxz;\n\n}\n\n\n// reorders `tris` such that for `count` elements after `offset`, elements on the left side of the split\n// will be on the left and elements on the right side of the split will be on the right. returns the index\n// of the first element on the right side, or offset + count if there are no elements on the right side.\nfunction partition( index, triangleBounds, offset, count, split ) {\n\n\tlet left = offset;\n\tlet right = offset + count - 1;\n\tconst pos = split.pos;\n\tconst axisOffset = split.axis * 2;\n\n\t// hoare partitioning, see e.g. https://en.wikipedia.org/wiki/Quicksort#Hoare_partition_scheme\n\twhile ( true ) {\n\n\t\twhile ( left <= right && triangleBounds[ left * 6 + axisOffset ] < pos ) {\n\n\t\t\tleft ++;\n\n\t\t}\n\n\n\t\t// if a triangle center lies on the partition plane it is considered to be on the right side\n\t\twhile ( left <= right && triangleBounds[ right * 6 + axisOffset ] >= pos ) {\n\n\t\t\tright --;\n\n\t\t}\n\n\t\tif ( left < right ) {\n\n\t\t\t// we need to swap all of the information associated with the triangles at index\n\t\t\t// left and right; that's the verts in the geometry index, the bounds,\n\t\t\t// and perhaps the SAH planes\n\n\t\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\t\tlet t0 = index[ left * 3 + i ];\n\t\t\t\tindex[ left * 3 + i ] = index[ right * 3 + i ];\n\t\t\t\tindex[ right * 3 + i ] = t0;\n\n\t\t\t\tlet t1 = triangleBounds[ left * 6 + i * 2 + 0 ];\n\t\t\t\ttriangleBounds[ left * 6 + i * 2 + 0 ] = triangleBounds[ right * 6 + i * 2 + 0 ];\n\t\t\t\ttriangleBounds[ right * 6 + i * 2 + 0 ] = t1;\n\n\t\t\t\tlet t2 = triangleBounds[ left * 6 + i * 2 + 1 ];\n\t\t\t\ttriangleBounds[ left * 6 + i * 2 + 1 ] = triangleBounds[ right * 6 + i * 2 + 1 ];\n\t\t\t\ttriangleBounds[ right * 6 + i * 2 + 1 ] = t2;\n\n\t\t\t}\n\n\t\t\tleft ++;\n\t\t\tright --;\n\n\t\t} else {\n\n\t\t\treturn left;\n\n\t\t}\n\n\t}\n\n}\n\nconst BIN_COUNT = 32;\nconst binsSort = ( a, b ) => a.candidate - b.candidate;\nconst sahBins = new Array( BIN_COUNT ).fill().map( () => {\n\n\treturn {\n\n\t\tcount: 0,\n\t\tbounds: new Float32Array( 6 ),\n\t\trightCacheBounds: new Float32Array( 6 ),\n\t\tleftCacheBounds: new Float32Array( 6 ),\n\t\tcandidate: 0,\n\n\t};\n\n} );\nconst leftBounds = new Float32Array( 6 );\n\nfunction getOptimalSplit( nodeBoundingData, centroidBoundingData, triangleBounds, offset, count, strategy ) {\n\n\tlet axis = - 1;\n\tlet pos = 0;\n\n\t// Center\n\tif ( strategy === CENTER ) {\n\n\t\taxis = getLongestEdgeIndex( centroidBoundingData );\n\t\tif ( axis !== - 1 ) {\n\n\t\t\tpos = ( centroidBoundingData[ axis ] + centroidBoundingData[ axis + 3 ] ) / 2;\n\n\t\t}\n\n\t} else if ( strategy === AVERAGE ) {\n\n\t\taxis = getLongestEdgeIndex( nodeBoundingData );\n\t\tif ( axis !== - 1 ) {\n\n\t\t\tpos = getAverage( triangleBounds, offset, count, axis );\n\n\t\t}\n\n\t} else if ( strategy === SAH ) {\n\n\t\tconst rootSurfaceArea = computeSurfaceArea( nodeBoundingData );\n\t\tlet bestCost = TRIANGLE_INTERSECT_COST * count;\n\n\t\t// iterate over all axes\n\t\tconst cStart = offset * 6;\n\t\tconst cEnd = ( offset + count ) * 6;\n\t\tfor ( let a = 0; a < 3; a ++ ) {\n\n\t\t\tconst axisLeft = centroidBoundingData[ a ];\n\t\t\tconst axisRight = centroidBoundingData[ a + 3 ];\n\t\t\tconst axisLength = axisRight - axisLeft;\n\t\t\tconst binWidth = axisLength / BIN_COUNT;\n\n\t\t\t// If we have fewer triangles than we're planning to split then just check all\n\t\t\t// the triangle positions because it will be faster.\n\t\t\tif ( count < BIN_COUNT / 4 ) {\n\n\t\t\t\t// initialize the bin candidates\n\t\t\t\tconst truncatedBins = [ ...sahBins ];\n\t\t\t\ttruncatedBins.length = count;\n\n\t\t\t\t// set the candidates\n\t\t\t\tlet b = 0;\n\t\t\t\tfor ( let c = cStart; c < cEnd; c += 6, b ++ ) {\n\n\t\t\t\t\tconst bin = truncatedBins[ b ];\n\t\t\t\t\tbin.candidate = triangleBounds[ c + 2 * a ];\n\t\t\t\t\tbin.count = 0;\n\n\t\t\t\t\tconst {\n\t\t\t\t\t\tbounds,\n\t\t\t\t\t\tleftCacheBounds,\n\t\t\t\t\t\trightCacheBounds,\n\t\t\t\t\t} = bin;\n\t\t\t\t\tfor ( let d = 0; d < 3; d ++ ) {\n\n\t\t\t\t\t\trightCacheBounds[ d ] = Infinity;\n\t\t\t\t\t\trightCacheBounds[ d + 3 ] = - Infinity;\n\n\t\t\t\t\t\tleftCacheBounds[ d ] = Infinity;\n\t\t\t\t\t\tleftCacheBounds[ d + 3 ] = - Infinity;\n\n\t\t\t\t\t\tbounds[ d ] = Infinity;\n\t\t\t\t\t\tbounds[ d + 3 ] = - Infinity;\n\n\t\t\t\t\t}\n\n\t\t\t\t\texpandByTriangleBounds( c, triangleBounds, bounds );\n\n\t\t\t\t}\n\n\t\t\t\ttruncatedBins.sort( binsSort );\n\n\t\t\t\t// remove redundant splits\n\t\t\t\tlet splitCount = count;\n\t\t\t\tfor ( let bi = 0; bi < splitCount; bi ++ ) {\n\n\t\t\t\t\tconst bin = truncatedBins[ bi ];\n\t\t\t\t\twhile ( bi + 1 < splitCount && truncatedBins[ bi + 1 ].candidate === bin.candidate ) {\n\n\t\t\t\t\t\ttruncatedBins.splice( bi + 1, 1 );\n\t\t\t\t\t\tsplitCount --;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// find the appropriate bin for each triangle and expand the bounds.\n\t\t\t\tfor ( let c = cStart; c < cEnd; c += 6 ) {\n\n\t\t\t\t\tconst center = triangleBounds[ c + 2 * a ];\n\t\t\t\t\tfor ( let bi = 0; bi < splitCount; bi ++ ) {\n\n\t\t\t\t\t\tconst bin = truncatedBins[ bi ];\n\t\t\t\t\t\tif ( center >= bin.candidate ) {\n\n\t\t\t\t\t\t\texpandByTriangleBounds( c, triangleBounds, bin.rightCacheBounds );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\texpandByTriangleBounds( c, triangleBounds, bin.leftCacheBounds );\n\t\t\t\t\t\t\tbin.count ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// expand all the bounds\n\t\t\t\tfor ( let bi = 0; bi < splitCount; bi ++ ) {\n\n\t\t\t\t\tconst bin = truncatedBins[ bi ];\n\t\t\t\t\tconst leftCount = bin.count;\n\t\t\t\t\tconst rightCount = count - bin.count;\n\n\t\t\t\t\t// check the cost of this split\n\t\t\t\t\tconst leftBounds = bin.leftCacheBounds;\n\t\t\t\t\tconst rightBounds = bin.rightCacheBounds;\n\n\t\t\t\t\tlet leftProb = 0;\n\t\t\t\t\tif ( leftCount !== 0 ) {\n\n\t\t\t\t\t\tleftProb = computeSurfaceArea( leftBounds ) / rootSurfaceArea;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet rightProb = 0;\n\t\t\t\t\tif ( rightCount !== 0 ) {\n\n\t\t\t\t\t\trightProb = computeSurfaceArea( rightBounds ) / rootSurfaceArea;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cost = TRAVERSAL_COST + TRIANGLE_INTERSECT_COST * (\n\t\t\t\t\t\tleftProb * leftCount + rightProb * rightCount\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( cost < bestCost ) {\n\n\t\t\t\t\t\taxis = a;\n\t\t\t\t\t\tbestCost = cost;\n\t\t\t\t\t\tpos = bin.candidate;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// reset the bins\n\t\t\t\tfor ( let i = 0; i < BIN_COUNT; i ++ ) {\n\n\t\t\t\t\tconst bin = sahBins[ i ];\n\t\t\t\t\tbin.count = 0;\n\t\t\t\t\tbin.candidate = axisLeft + binWidth + i * binWidth;\n\n\t\t\t\t\tconst bounds = bin.bounds;\n\t\t\t\t\tfor ( let d = 0; d < 3; d ++ ) {\n\n\t\t\t\t\t\tbounds[ d ] = Infinity;\n\t\t\t\t\t\tbounds[ d + 3 ] = - Infinity;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over all center positions\n\t\t\t\tfor ( let c = cStart; c < cEnd; c += 6 ) {\n\n\t\t\t\t\tconst triCenter = triangleBounds[ c + 2 * a ];\n\t\t\t\t\tconst relativeCenter = triCenter - axisLeft;\n\n\t\t\t\t\t// in the partition function if the centroid lies on the split plane then it is\n\t\t\t\t\t// considered to be on the right side of the split\n\t\t\t\t\tlet binIndex = ~ ~ ( relativeCenter / binWidth );\n\t\t\t\t\tif ( binIndex >= BIN_COUNT ) binIndex = BIN_COUNT - 1;\n\n\t\t\t\t\tconst bin = sahBins[ binIndex ];\n\t\t\t\t\tbin.count ++;\n\n\t\t\t\t\texpandByTriangleBounds( c, triangleBounds, bin.bounds );\n\n\t\t\t\t}\n\n\t\t\t\t// cache the unioned bounds from right to left so we don't have to regenerate them each time\n\t\t\t\tconst lastBin = sahBins[ BIN_COUNT - 1 ];\n\t\t\t\tcopyBounds( lastBin.bounds, lastBin.rightCacheBounds );\n\t\t\t\tfor ( let i = BIN_COUNT - 2; i >= 0; i -- ) {\n\n\t\t\t\t\tconst bin = sahBins[ i ];\n\t\t\t\t\tconst nextBin = sahBins[ i + 1 ];\n\t\t\t\t\tunionBounds( bin.bounds, nextBin.rightCacheBounds, bin.rightCacheBounds );\n\n\t\t\t\t}\n\n\t\t\t\tlet leftCount = 0;\n\t\t\t\tfor ( let i = 0; i < BIN_COUNT - 1; i ++ ) {\n\n\t\t\t\t\tconst bin = sahBins[ i ];\n\t\t\t\t\tconst binCount = bin.count;\n\t\t\t\t\tconst bounds = bin.bounds;\n\n\t\t\t\t\tconst nextBin = sahBins[ i + 1 ];\n\t\t\t\t\tconst rightBounds = nextBin.rightCacheBounds;\n\n\t\t\t\t\t// dont do anything with the bounds if the new bounds have no triangles\n\t\t\t\t\tif ( binCount !== 0 ) {\n\n\t\t\t\t\t\tif ( leftCount === 0 ) {\n\n\t\t\t\t\t\t\tcopyBounds( bounds, leftBounds );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tunionBounds( bounds, leftBounds, leftBounds );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tleftCount += binCount;\n\n\t\t\t\t\t// check the cost of this split\n\t\t\t\t\tlet leftProb = 0;\n\t\t\t\t\tlet rightProb = 0;\n\n\t\t\t\t\tif ( leftCount !== 0 ) {\n\n\t\t\t\t\t\tleftProb = computeSurfaceArea( leftBounds ) / rootSurfaceArea;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst rightCount = count - leftCount;\n\t\t\t\t\tif ( rightCount !== 0 ) {\n\n\t\t\t\t\t\trightProb = computeSurfaceArea( rightBounds ) / rootSurfaceArea;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cost = TRAVERSAL_COST + TRIANGLE_INTERSECT_COST * (\n\t\t\t\t\t\tleftProb * leftCount + rightProb * rightCount\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( cost < bestCost ) {\n\n\t\t\t\t\t\taxis = a;\n\t\t\t\t\t\tbestCost = cost;\n\t\t\t\t\t\tpos = bin.candidate;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\tconsole.warn( `MeshBVH: Invalid build strategy value ${ strategy } used.` );\n\n\t}\n\n\treturn { axis, pos };\n\n}\n\n// returns the average coordinate on the specified axis of the all the provided triangles\nfunction getAverage( triangleBounds, offset, count, axis ) {\n\n\tlet avg = 0;\n\tfor ( let i = offset, end = offset + count; i < end; i ++ ) {\n\n\t\tavg += triangleBounds[ i * 6 + axis * 2 ];\n\n\t}\n\n\treturn avg / count;\n\n}\n\n// precomputes the bounding box for each triangle; required for quickly calculating tree splits.\n// result is an array of size tris.length * 6 where triangle i maps to a\n// [x_center, x_delta, y_center, y_delta, z_center, z_delta] tuple starting at index i * 6,\n// representing the center and half-extent in each dimension of triangle i\nfunction computeTriangleBounds( geo, fullBounds ) {\n\n\tconst posAttr = geo.attributes.position;\n\tconst posArr = posAttr.array;\n\tconst index = geo.index.array;\n\tconst triCount = index.length / 3;\n\tconst triangleBounds = new Float32Array( triCount * 6 );\n\n\t// support for an interleaved position buffer\n\tconst bufferOffset = posAttr.offset || 0;\n\tlet stride = 3;\n\tif ( posAttr.isInterleavedBufferAttribute ) {\n\n\t\tstride = posAttr.data.stride;\n\n\t}\n\n\tfor ( let tri = 0; tri < triCount; tri ++ ) {\n\n\t\tconst tri3 = tri * 3;\n\t\tconst tri6 = tri * 6;\n\t\tconst ai = index[ tri3 + 0 ] * stride + bufferOffset;\n\t\tconst bi = index[ tri3 + 1 ] * stride + bufferOffset;\n\t\tconst ci = index[ tri3 + 2 ] * stride + bufferOffset;\n\n\t\tfor ( let el = 0; el < 3; el ++ ) {\n\n\t\t\tconst a = posArr[ ai + el ];\n\t\t\tconst b = posArr[ bi + el ];\n\t\t\tconst c = posArr[ ci + el ];\n\n\t\t\tlet min = a;\n\t\t\tif ( b < min ) min = b;\n\t\t\tif ( c < min ) min = c;\n\n\t\t\tlet max = a;\n\t\t\tif ( b > max ) max = b;\n\t\t\tif ( c > max ) max = c;\n\n\t\t\t// Increase the bounds size by float32 epsilon to avoid precision errors when\n\t\t\t// converting to 32 bit float. Scale the epsilon by the size of the numbers being\n\t\t\t// worked with.\n\t\t\tconst halfExtents = ( max - min ) / 2;\n\t\t\tconst el2 = el * 2;\n\t\t\ttriangleBounds[ tri6 + el2 + 0 ] = min + halfExtents;\n\t\t\ttriangleBounds[ tri6 + el2 + 1 ] = halfExtents + ( Math.abs( min ) + halfExtents ) * FLOAT32_EPSILON;\n\n\t\t\tif ( min < fullBounds[ el ] ) fullBounds[ el ] = min;\n\t\t\tif ( max > fullBounds[ el + 3 ] ) fullBounds[ el + 3 ] = max;\n\n\t\t}\n\n\t}\n\n\treturn triangleBounds;\n\n}\n\nexport function buildTree( geo, options ) {\n\n\tfunction triggerProgress( trianglesProcessed ) {\n\n\t\tif ( onProgress ) {\n\n\t\t\tonProgress( trianglesProcessed / totalTriangles );\n\n\t\t}\n\n\t}\n\n\t// either recursively splits the given node, creating left and right subtrees for it, or makes it a leaf node,\n\t// recording the offset and count of its triangles and writing them into the reordered geometry index.\n\tfunction splitNode( node, offset, count, centroidBoundingData = null, depth = 0 ) {\n\n\t\tif ( ! reachedMaxDepth && depth >= maxDepth ) {\n\n\t\t\treachedMaxDepth = true;\n\t\t\tif ( verbose ) {\n\n\t\t\t\tconsole.warn( `MeshBVH: Max depth of ${ maxDepth } reached when generating BVH. Consider increasing maxDepth.` );\n\t\t\t\tconsole.warn( geo );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// early out if we've met our capacity\n\t\tif ( count <= maxLeafTris || depth >= maxDepth ) {\n\n\t\t\ttriggerProgress( offset + count );\n\t\t\tnode.offset = offset;\n\t\t\tnode.count = count;\n\t\t\treturn node;\n\n\t\t}\n\n\t\t// Find where to split the volume\n\t\tconst split = getOptimalSplit( node.boundingData, centroidBoundingData, triangleBounds, offset, count, strategy );\n\t\tif ( split.axis === - 1 ) {\n\n\t\t\ttriggerProgress( offset + count );\n\t\t\tnode.offset = offset;\n\t\t\tnode.count = count;\n\t\t\treturn node;\n\n\t\t}\n\n\t\tconst splitOffset = partition( indexArray, triangleBounds, offset, count, split );\n\n\t\t// create the two new child nodes\n\t\tif ( splitOffset === offset || splitOffset === offset + count ) {\n\n\t\t\ttriggerProgress( offset + count );\n\t\t\tnode.offset = offset;\n\t\t\tnode.count = count;\n\n\t\t} else {\n\n\t\t\tnode.splitAxis = split.axis;\n\n\t\t\t// create the left child and compute its bounding box\n\t\t\tconst left = new MeshBVHNode();\n\t\t\tconst lstart = offset;\n\t\t\tconst lcount = splitOffset - offset;\n\t\t\tnode.left = left;\n\t\t\tleft.boundingData = new Float32Array( 6 );\n\n\t\t\tgetBounds( triangleBounds, lstart, lcount, left.boundingData, cacheCentroidBoundingData );\n\t\t\tsplitNode( left, lstart, lcount, cacheCentroidBoundingData, depth + 1 );\n\n\t\t\t// repeat for right\n\t\t\tconst right = new MeshBVHNode();\n\t\t\tconst rstart = splitOffset;\n\t\t\tconst rcount = count - lcount;\n\t\t\tnode.right = right;\n\t\t\tright.boundingData = new Float32Array( 6 );\n\n\t\t\tgetBounds( triangleBounds, rstart, rcount, right.boundingData, cacheCentroidBoundingData );\n\t\t\tsplitNode( right, rstart, rcount, cacheCentroidBoundingData, depth + 1 );\n\n\t\t}\n\n\t\treturn node;\n\n\t}\n\n\tensureIndex( geo, options );\n\n\t// Compute the full bounds of the geometry at the same time as triangle bounds because\n\t// we'll need it for the root bounds in the case with no groups and it should be fast here.\n\t// We can't use the geometrying bounding box if it's available because it may be out of date.\n\tconst fullBounds = new Float32Array( 6 );\n\tconst cacheCentroidBoundingData = new Float32Array( 6 );\n\tconst triangleBounds = computeTriangleBounds( geo, fullBounds );\n\tconst indexArray = geo.index.array;\n\tconst maxDepth = options.maxDepth;\n\tconst verbose = options.verbose;\n\tconst maxLeafTris = options.maxLeafTris;\n\tconst strategy = options.strategy;\n\tconst onProgress = options.onProgress;\n\tconst totalTriangles = geo.index.count / 3;\n\tlet reachedMaxDepth = false;\n\n\tconst roots = [];\n\tconst ranges = getRootIndexRanges( geo );\n\n\tif ( ranges.length === 1 ) {\n\n\t\tconst range = ranges[ 0 ];\n\t\tconst root = new MeshBVHNode();\n\t\troot.boundingData = fullBounds;\n\t\tgetCentroidBounds( triangleBounds, range.offset, range.count, cacheCentroidBoundingData );\n\n\t\tsplitNode( root, range.offset, range.count, cacheCentroidBoundingData );\n\t\troots.push( root );\n\n\t} else {\n\n\t\tfor ( let range of ranges ) {\n\n\t\t\tconst root = new MeshBVHNode();\n\t\t\troot.boundingData = new Float32Array( 6 );\n\t\t\tgetBounds( triangleBounds, range.offset, range.count, root.boundingData, cacheCentroidBoundingData );\n\n\t\t\tsplitNode( root, range.offset, range.count, cacheCentroidBoundingData );\n\t\t\troots.push( root );\n\n\t\t}\n\n\t}\n\n\treturn roots;\n\n}\n\nexport function buildPackedTree( geo, options ) {\n\n\t// boundingData  \t\t\t\t: 6 float32\n\t// right / offset \t\t\t\t: 1 uint32\n\t// splitAxis / isLeaf + count \t: 1 uint32 / 2 uint16\n\tconst roots = buildTree( geo, options );\n\n\tlet float32Array;\n\tlet uint32Array;\n\tlet uint16Array;\n\tconst packedRoots = [];\n\tconst BufferConstructor = options.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer;\n\tfor ( let i = 0; i < roots.length; i ++ ) {\n\n\t\tconst root = roots[ i ];\n\t\tlet nodeCount = countNodes( root );\n\n\t\tconst buffer = new BufferConstructor( BYTES_PER_NODE * nodeCount );\n\t\tfloat32Array = new Float32Array( buffer );\n\t\tuint32Array = new Uint32Array( buffer );\n\t\tuint16Array = new Uint16Array( buffer );\n\t\tpopulateBuffer( 0, root );\n\t\tpackedRoots.push( buffer );\n\n\t}\n\n\treturn packedRoots;\n\n\tfunction countNodes( node ) {\n\n\t\tif ( node.count ) {\n\n\t\t\treturn 1;\n\n\t\t} else {\n\n\t\t\treturn 1 + countNodes( node.left ) + countNodes( node.right );\n\n\t\t}\n\n\t}\n\n\tfunction populateBuffer( byteOffset, node ) {\n\n\t\tconst stride4Offset = byteOffset / 4;\n\t\tconst stride2Offset = byteOffset / 2;\n\t\tconst isLeaf = ! ! node.count;\n\t\tconst boundingData = node.boundingData;\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tfloat32Array[ stride4Offset + i ] = boundingData[ i ];\n\n\t\t}\n\n\t\tif ( isLeaf ) {\n\n\t\t\tconst offset = node.offset;\n\t\t\tconst count = node.count;\n\t\t\tuint32Array[ stride4Offset + 6 ] = offset;\n\t\t\tuint16Array[ stride2Offset + 14 ] = count;\n\t\t\tuint16Array[ stride2Offset + 15 ] = IS_LEAFNODE_FLAG;\n\t\t\treturn byteOffset + BYTES_PER_NODE;\n\n\t\t} else {\n\n\t\t\tconst left = node.left;\n\t\t\tconst right = node.right;\n\t\t\tconst splitAxis = node.splitAxis;\n\n\t\t\tlet nextUnusedPointer;\n\t\t\tnextUnusedPointer = populateBuffer( byteOffset + BYTES_PER_NODE, left );\n\n\t\t\tif ( ( nextUnusedPointer / 4 ) > Math.pow( 2, 32 ) ) {\n\n\t\t\t\tthrow new Error( 'MeshBVH: Cannot store child pointer greater than 32 bits.' );\n\n\t\t\t}\n\n\t\t\tuint32Array[ stride4Offset + 6 ] = nextUnusedPointer / 4;\n\t\t\tnextUnusedPointer = populateBuffer( nextUnusedPointer, right );\n\n\t\t\tuint32Array[ stride4Offset + 7 ] = splitAxis;\n\t\t\treturn nextUnusedPointer;\n\n\t\t}\n\n\t}\n\n}\n","import { Vector3 } from 'three';\n\nexport class SeparatingAxisBounds {\n\n\tconstructor() {\n\n\t\tthis.min = Infinity;\n\t\tthis.max = - Infinity;\n\n\t}\n\n\tsetFromPointsField( points, field ) {\n\n\t\tlet min = Infinity;\n\t\tlet max = - Infinity;\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst p = points[ i ];\n\t\t\tconst val = p[ field ];\n\t\t\tmin = val < min ? val : min;\n\t\t\tmax = val > max ? val : max;\n\n\t\t}\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tsetFromPoints( axis, points ) {\n\n\t\tlet min = Infinity;\n\t\tlet max = - Infinity;\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst p = points[ i ];\n\t\t\tconst val = axis.dot( p );\n\t\t\tmin = val < min ? val : min;\n\t\t\tmax = val > max ? val : max;\n\n\t\t}\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tisSeparated( other ) {\n\n\t\treturn this.min > other.max || other.min > this.max;\n\n\t}\n\n}\n\nSeparatingAxisBounds.prototype.setFromBox = ( function () {\n\n\tconst p = new Vector3();\n\treturn function setFromBox( axis, box ) {\n\n\t\tconst boxMin = box.min;\n\t\tconst boxMax = box.max;\n\t\tlet min = Infinity;\n\t\tlet max = - Infinity;\n\t\tfor ( let x = 0; x <= 1; x ++ ) {\n\n\t\t\tfor ( let y = 0; y <= 1; y ++ ) {\n\n\t\t\t\tfor ( let z = 0; z <= 1; z ++ ) {\n\n\t\t\t\t\tp.x = boxMin.x * x + boxMax.x * ( 1 - x );\n\t\t\t\t\tp.y = boxMin.y * y + boxMax.y * ( 1 - y );\n\t\t\t\t\tp.z = boxMin.z * z + boxMax.z * ( 1 - z );\n\n\t\t\t\t\tconst val = axis.dot( p );\n\t\t\t\t\tmin = Math.min( val, min );\n\t\t\t\t\tmax = Math.max( val, max );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t};\n\n} )();\n\nexport const areIntersecting = ( function () {\n\n\tconst cacheSatBounds = new SeparatingAxisBounds();\n\treturn function areIntersecting( shape1, shape2 ) {\n\n\t\tconst points1 = shape1.points;\n\t\tconst satAxes1 = shape1.satAxes;\n\t\tconst satBounds1 = shape1.satBounds;\n\n\t\tconst points2 = shape2.points;\n\t\tconst satAxes2 = shape2.satAxes;\n\t\tconst satBounds2 = shape2.satBounds;\n\n\t\t// check axes of the first shape\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst sb = satBounds1[ i ];\n\t\t\tconst sa = satAxes1[ i ];\n\t\t\tcacheSatBounds.setFromPoints( sa, points2 );\n\t\t\tif ( sb.isSeparated( cacheSatBounds ) ) return false;\n\n\t\t}\n\n\t\t// check axes of the second shape\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst sb = satBounds2[ i ];\n\t\t\tconst sa = satAxes2[ i ];\n\t\t\tcacheSatBounds.setFromPoints( sa, points1 );\n\t\t\tif ( sb.isSeparated( cacheSatBounds ) ) return false;\n\n\t\t}\n\n\t};\n\n} )();\n","import { Vector3, Vector2, Plane, Line3 } from 'three';\n\nexport const closestPointLineToLine = ( function () {\n\n\t// https://github.com/juj/MathGeoLib/blob/master/src/Geometry/Line.cpp#L56\n\tconst dir1 = new Vector3();\n\tconst dir2 = new Vector3();\n\tconst v02 = new Vector3();\n\treturn function closestPointLineToLine( l1, l2, result ) {\n\n\t\tconst v0 = l1.start;\n\t\tconst v10 = dir1;\n\t\tconst v2 = l2.start;\n\t\tconst v32 = dir2;\n\n\t\tv02.subVectors( v0, v2 );\n\t\tdir1.subVectors( l1.end, l1.start );\n\t\tdir2.subVectors( l2.end, l2.start );\n\n\t\t// float d0232 = v02.Dot(v32);\n\t\tconst d0232 = v02.dot( v32 );\n\n\t\t// float d3210 = v32.Dot(v10);\n\t\tconst d3210 = v32.dot( v10 );\n\n\t\t// float d3232 = v32.Dot(v32);\n\t\tconst d3232 = v32.dot( v32 );\n\n\t\t// float d0210 = v02.Dot(v10);\n\t\tconst d0210 = v02.dot( v10 );\n\n\t\t// float d1010 = v10.Dot(v10);\n\t\tconst d1010 = v10.dot( v10 );\n\n\t\t// float denom = d1010*d3232 - d3210*d3210;\n\t\tconst denom = d1010 * d3232 - d3210 * d3210;\n\n\t\tlet d, d2;\n\t\tif ( denom !== 0 ) {\n\n\t\t\td = ( d0232 * d3210 - d0210 * d3232 ) / denom;\n\n\t\t} else {\n\n\t\t\td = 0;\n\n\t\t}\n\n\t\td2 = ( d0232 + d * d3210 ) / d3232;\n\n\t\tresult.x = d;\n\t\tresult.y = d2;\n\n\t};\n\n} )();\n\nexport const closestPointsSegmentToSegment = ( function () {\n\n\t// https://github.com/juj/MathGeoLib/blob/master/src/Geometry/LineSegment.cpp#L187\n\tconst paramResult = new Vector2();\n\tconst temp1 = new Vector3();\n\tconst temp2 = new Vector3();\n\treturn function closestPointsSegmentToSegment( l1, l2, target1, target2 ) {\n\n\t\tclosestPointLineToLine( l1, l2, paramResult );\n\n\t\tlet d = paramResult.x;\n\t\tlet d2 = paramResult.y;\n\t\tif ( d >= 0 && d <= 1 && d2 >= 0 && d2 <= 1 ) {\n\n\t\t\tl1.at( d, target1 );\n\t\t\tl2.at( d2, target2 );\n\n\t\t\treturn;\n\n\t\t} else if ( d >= 0 && d <= 1 ) {\n\n\t\t\t// Only d2 is out of bounds.\n\t\t\tif ( d2 < 0 ) {\n\n\t\t\t\tl2.at( 0, target2 );\n\n\t\t\t} else {\n\n\t\t\t\tl2.at( 1, target2 );\n\n\t\t\t}\n\n\t\t\tl1.closestPointToPoint( target2, true, target1 );\n\t\t\treturn;\n\n\t\t} else if ( d2 >= 0 && d2 <= 1 ) {\n\n\t\t\t// Only d is out of bounds.\n\t\t\tif ( d < 0 ) {\n\n\t\t\t\tl1.at( 0, target1 );\n\n\t\t\t} else {\n\n\t\t\t\tl1.at( 1, target1 );\n\n\t\t\t}\n\n\t\t\tl2.closestPointToPoint( target1, true, target2 );\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// Both u and u2 are out of bounds.\n\t\t\tlet p;\n\t\t\tif ( d < 0 ) {\n\n\t\t\t\tp = l1.start;\n\n\t\t\t} else {\n\n\t\t\t\tp = l1.end;\n\n\t\t\t}\n\n\t\t\tlet p2;\n\t\t\tif ( d2 < 0 ) {\n\n\t\t\t\tp2 = l2.start;\n\n\t\t\t} else {\n\n\t\t\t\tp2 = l2.end;\n\n\t\t\t}\n\n\t\t\tconst closestPoint = temp1;\n\t\t\tconst closestPoint2 = temp2;\n\t\t\tl1.closestPointToPoint( p2, true, temp1 );\n\t\t\tl2.closestPointToPoint( p, true, temp2 );\n\n\t\t\tif ( closestPoint.distanceToSquared( p2 ) <= closestPoint2.distanceToSquared( p ) ) {\n\n\t\t\t\ttarget1.copy( closestPoint );\n\t\t\t\ttarget2.copy( p2 );\n\t\t\t\treturn;\n\n\t\t\t} else {\n\n\t\t\t\ttarget1.copy( p );\n\t\t\t\ttarget2.copy( closestPoint2 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n} )();\n\n\nexport const sphereIntersectTriangle = ( function () {\n\n\t// https://stackoverflow.com/questions/34043955/detect-collision-between-sphere-and-triangle-in-three-js\n\tconst closestPointTemp = new Vector3();\n\tconst projectedPointTemp = new Vector3();\n\tconst planeTemp = new Plane();\n\tconst lineTemp = new Line3();\n\treturn function sphereIntersectTriangle( sphere, triangle ) {\n\n\t\tconst { radius, center } = sphere;\n\t\tconst { a, b, c } = triangle;\n\n\t\t// phase 1\n\t\tlineTemp.start = a;\n\t\tlineTemp.end = b;\n\t\tconst closestPoint1 = lineTemp.closestPointToPoint( center, true, closestPointTemp );\n\t\tif ( closestPoint1.distanceTo( center ) <= radius ) return true;\n\n\t\tlineTemp.start = a;\n\t\tlineTemp.end = c;\n\t\tconst closestPoint2 = lineTemp.closestPointToPoint( center, true, closestPointTemp );\n\t\tif ( closestPoint2.distanceTo( center ) <= radius ) return true;\n\n\t\tlineTemp.start = b;\n\t\tlineTemp.end = c;\n\t\tconst closestPoint3 = lineTemp.closestPointToPoint( center, true, closestPointTemp );\n\t\tif ( closestPoint3.distanceTo( center ) <= radius ) return true;\n\n\t\t// phase 2\n\t\tconst plane = triangle.getPlane( planeTemp );\n\t\tconst dp = Math.abs( plane.distanceToPoint( center ) );\n\t\tif ( dp <= radius ) {\n\n\t\t\tconst pp = plane.projectPoint( center, projectedPointTemp );\n\t\t\tconst cp = triangle.containsPoint( pp );\n\t\t\tif ( cp ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t};\n\n} )();\n","import { Triangle, Vector3, Line3, Sphere, Plane } from 'three';\nimport { SeparatingAxisBounds } from './SeparatingAxisBounds.js';\nimport { closestPointsSegmentToSegment, sphereIntersectTriangle } from './MathUtilities.js';\n\nconst DIST_EPSILON = 1e-15;\nfunction isNearZero( value ) {\n\n\treturn Math.abs( value ) < DIST_EPSILON;\n\n}\n\nexport class ExtendedTriangle extends Triangle {\n\n\tconstructor( ...args ) {\n\n\t\tsuper( ...args );\n\n\t\tthis.isExtendedTriangle = true;\n\t\tthis.satAxes = new Array( 4 ).fill().map( () => new Vector3() );\n\t\tthis.satBounds = new Array( 4 ).fill().map( () => new SeparatingAxisBounds() );\n\t\tthis.points = [ this.a, this.b, this.c ];\n\t\tthis.sphere = new Sphere();\n\t\tthis.plane = new Plane();\n\t\tthis.needsUpdate = true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphereIntersectTriangle( sphere, this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst a = this.a;\n\t\tconst b = this.b;\n\t\tconst c = this.c;\n\t\tconst points = this.points;\n\n\t\tconst satAxes = this.satAxes;\n\t\tconst satBounds = this.satBounds;\n\n\t\tconst axis0 = satAxes[ 0 ];\n\t\tconst sab0 = satBounds[ 0 ];\n\t\tthis.getNormal( axis0 );\n\t\tsab0.setFromPoints( axis0, points );\n\n\t\tconst axis1 = satAxes[ 1 ];\n\t\tconst sab1 = satBounds[ 1 ];\n\t\taxis1.subVectors( a, b );\n\t\tsab1.setFromPoints( axis1, points );\n\n\t\tconst axis2 = satAxes[ 2 ];\n\t\tconst sab2 = satBounds[ 2 ];\n\t\taxis2.subVectors( b, c );\n\t\tsab2.setFromPoints( axis2, points );\n\n\t\tconst axis3 = satAxes[ 3 ];\n\t\tconst sab3 = satBounds[ 3 ];\n\t\taxis3.subVectors( c, a );\n\t\tsab3.setFromPoints( axis3, points );\n\n\t\tthis.sphere.setFromPoints( this.points );\n\t\tthis.plane.setFromNormalAndCoplanarPoint( axis0, a );\n\t\tthis.needsUpdate = false;\n\n\t}\n\n}\n\nExtendedTriangle.prototype.closestPointToSegment = ( function () {\n\n\tconst point1 = new Vector3();\n\tconst point2 = new Vector3();\n\tconst edge = new Line3();\n\n\treturn function distanceToSegment( segment, target1 = null, target2 = null ) {\n\n\t\tconst { start, end } = segment;\n\t\tconst points = this.points;\n\t\tlet distSq;\n\t\tlet closestDistanceSq = Infinity;\n\n\t\t// check the triangle edges\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst nexti = ( i + 1 ) % 3;\n\t\t\tedge.start.copy( points[ i ] );\n\t\t\tedge.end.copy( points[ nexti ] );\n\n\t\t\tclosestPointsSegmentToSegment( edge, segment, point1, point2 );\n\n\t\t\tdistSq = point1.distanceToSquared( point2 );\n\t\t\tif ( distSq < closestDistanceSq ) {\n\n\t\t\t\tclosestDistanceSq = distSq;\n\t\t\t\tif ( target1 ) target1.copy( point1 );\n\t\t\t\tif ( target2 ) target2.copy( point2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// check end points\n\t\tthis.closestPointToPoint( start, point1 );\n\t\tdistSq = start.distanceToSquared( point1 );\n\t\tif ( distSq < closestDistanceSq ) {\n\n\t\t\tclosestDistanceSq = distSq;\n\t\t\tif ( target1 ) target1.copy( point1 );\n\t\t\tif ( target2 ) target2.copy( start );\n\n\t\t}\n\n\t\tthis.closestPointToPoint( end, point1 );\n\t\tdistSq = end.distanceToSquared( point1 );\n\t\tif ( distSq < closestDistanceSq ) {\n\n\t\t\tclosestDistanceSq = distSq;\n\t\t\tif ( target1 ) target1.copy( point1 );\n\t\t\tif ( target2 ) target2.copy( end );\n\n\t\t}\n\n\t\treturn Math.sqrt( closestDistanceSq );\n\n\t};\n\n} )();\n\nExtendedTriangle.prototype.intersectsTriangle = ( function () {\n\n\tconst saTri2 = new ExtendedTriangle();\n\tconst arr1 = new Array( 3 );\n\tconst arr2 = new Array( 3 );\n\tconst cachedSatBounds = new SeparatingAxisBounds();\n\tconst cachedSatBounds2 = new SeparatingAxisBounds();\n\tconst cachedAxis = new Vector3();\n\tconst dir1 = new Vector3();\n\tconst dir2 = new Vector3();\n\tconst tempDir = new Vector3();\n\tconst edge = new Line3();\n\tconst edge1 = new Line3();\n\tconst edge2 = new Line3();\n\n\t// TODO: If the triangles are coplanar and intersecting the target is nonsensical. It should at least\n\t// be a line contained by both triangles if not a different special case somehow represented in the return result.\n\treturn function intersectsTriangle( other, target = null ) {\n\n\t\tif ( this.needsUpdate ) {\n\n\t\t\tthis.update();\n\n\t\t}\n\n\t\tif ( ! other.isExtendedTriangle ) {\n\n\t\t\tsaTri2.copy( other );\n\t\t\tsaTri2.update();\n\t\t\tother = saTri2;\n\n\t\t} else if ( other.needsUpdate ) {\n\n\t\t\tother.update();\n\n\t\t}\n\n\t\tconst plane1 = this.plane;\n\t\tconst plane2 = other.plane;\n\n\t\tif ( Math.abs( plane1.normal.dot( plane2.normal ) ) > 1.0 - 1e-10 ) {\n\n\t\t\t// perform separating axis intersection test only for coplanar triangles\n\t\t\tconst satBounds1 = this.satBounds;\n\t\t\tconst satAxes1 = this.satAxes;\n\t\t\tarr2[ 0 ] = other.a;\n\t\t\tarr2[ 1 ] = other.b;\n\t\t\tarr2[ 2 ] = other.c;\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst sb = satBounds1[ i ];\n\t\t\t\tconst sa = satAxes1[ i ];\n\t\t\t\tcachedSatBounds.setFromPoints( sa, arr2 );\n\t\t\t\tif ( sb.isSeparated( cachedSatBounds ) ) return false;\n\n\t\t\t}\n\n\t\t\tconst satBounds2 = other.satBounds;\n\t\t\tconst satAxes2 = other.satAxes;\n\t\t\tarr1[ 0 ] = this.a;\n\t\t\tarr1[ 1 ] = this.b;\n\t\t\tarr1[ 2 ] = this.c;\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst sb = satBounds2[ i ];\n\t\t\t\tconst sa = satAxes2[ i ];\n\t\t\t\tcachedSatBounds.setFromPoints( sa, arr1 );\n\t\t\t\tif ( sb.isSeparated( cachedSatBounds ) ) return false;\n\n\t\t\t}\n\n\t\t\t// check crossed axes\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst sa1 = satAxes1[ i ];\n\t\t\t\tfor ( let i2 = 0; i2 < 4; i2 ++ ) {\n\n\t\t\t\t\tconst sa2 = satAxes2[ i2 ];\n\t\t\t\t\tcachedAxis.crossVectors( sa1, sa2 );\n\t\t\t\t\tcachedSatBounds.setFromPoints( cachedAxis, arr1 );\n\t\t\t\t\tcachedSatBounds2.setFromPoints( cachedAxis, arr2 );\n\t\t\t\t\tif ( cachedSatBounds.isSeparated( cachedSatBounds2 ) ) return false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( target ) {\n\n\t\t\t\t// TODO find two points that intersect on the edges and make that the result\n\t\t\t\tconsole.warn( 'ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0.' );\n\n\t\t\t\ttarget.start.set( 0, 0, 0 );\n\t\t\t\ttarget.end.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\t// find the edge that intersects the other triangle plane\n\t\t\tconst points1 = this.points;\n\t\t\tlet found1 = false;\n\t\t\tlet count1 = 0;\n\t\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\t\tconst p = points1[ i ];\n\t\t\t\tconst pNext = points1[ ( i + 1 ) % 3 ];\n\n\t\t\t\tedge.start.copy( p );\n\t\t\t\tedge.end.copy( pNext );\n\t\t\t\tedge.delta( dir1 );\n\n\t\t\t\tconst targetPoint = found1 ? edge1.start : edge1.end;\n\t\t\t\tconst startIntersects = isNearZero( plane2.distanceToPoint( p ) );\n\t\t\t\tif ( isNearZero( plane2.normal.dot( dir1 ) ) && startIntersects ) {\n\n\t\t\t\t\t// if the edge lies on the plane then take the line\n\t\t\t\t\tedge1.copy( edge );\n\t\t\t\t\tcount1 = 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// check if the start point is near the plane because \"intersectLine\" is not robust to that case\n\t\t\t\tconst doesIntersect = plane2.intersectLine( edge, targetPoint ) || startIntersects;\n\t\t\t\tif ( doesIntersect && ! isNearZero( targetPoint.distanceTo( pNext ) ) ) {\n\n\t\t\t\t\tcount1 ++;\n\t\t\t\t\tif ( found1 ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfound1 = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( count1 === 1 && this.containsPoint( edge1.end ) ) {\n\n\t\t\t\tif ( target ) {\n\n\t\t\t\t\ttarget.start.copy( edge1.end );\n\t\t\t\t\ttarget.end.copy( edge1.end );\n\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else if ( count1 !== 2 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// find the other triangles edge that intersects this plane\n\t\t\tconst points2 = other.points;\n\t\t\tlet found2 = false;\n\t\t\tlet count2 = 0;\n\t\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\t\tconst p = points2[ i ];\n\t\t\t\tconst pNext = points2[ ( i + 1 ) % 3 ];\n\n\t\t\t\tedge.start.copy( p );\n\t\t\t\tedge.end.copy( pNext );\n\t\t\t\tedge.delta( dir2 );\n\n\t\t\t\tconst targetPoint = found2 ? edge2.start : edge2.end;\n\t\t\t\tconst startIntersects = isNearZero( plane1.distanceToPoint( p ) );\n\t\t\t\tif ( isNearZero( plane1.normal.dot( dir2 ) ) && startIntersects ) {\n\n\t\t\t\t\t// if the edge lies on the plane then take the line\n\t\t\t\t\tedge2.copy( edge );\n\t\t\t\t\tcount2 = 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// check if the start point is near the plane because \"intersectLine\" is not robust to that case\n\t\t\t\tconst doesIntersect = plane1.intersectLine( edge, targetPoint ) || startIntersects;\n\t\t\t\tif ( doesIntersect && ! isNearZero( targetPoint.distanceTo( pNext ) ) ) {\n\n\t\t\t\t\tcount2 ++;\n\t\t\t\t\tif ( found2 ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfound2 = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( count2 === 1 && this.containsPoint( edge2.end ) ) {\n\n\t\t\t\tif ( target ) {\n\n\t\t\t\t\ttarget.start.copy( edge2.end );\n\t\t\t\t\ttarget.end.copy( edge2.end );\n\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else if ( count2 !== 2 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// find swap the second edge so both lines are running the same direction\n\t\t\tedge1.delta( dir1 );\n\t\t\tedge2.delta( dir2 );\n\n\t\t\tif ( dir1.dot( dir2 ) < 0 ) {\n\n\t\t\t\tlet tmp = edge2.start;\n\t\t\t\tedge2.start = edge2.end;\n\t\t\t\tedge2.end = tmp;\n\n\t\t\t}\n\n\t\t\t// check if the edges are overlapping\n\t\t\tconst s1 = edge1.start.dot( dir1 );\n\t\t\tconst e1 = edge1.end.dot( dir1 );\n\t\t\tconst s2 = edge2.start.dot( dir1 );\n\t\t\tconst e2 = edge2.end.dot( dir1 );\n\t\t\tconst separated1 = e1 < s2;\n\t\t\tconst separated2 = s1 < e2;\n\n\t\t\tif ( s1 !== e2 && s2 !== e1 && separated1 === separated2 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// assign the target output\n\t\t\tif ( target ) {\n\n\t\t\t\ttempDir.subVectors( edge1.start, edge2.start );\n\t\t\t\tif ( tempDir.dot( dir1 ) > 0 ) {\n\n\t\t\t\t\ttarget.start.copy( edge1.start );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttarget.start.copy( edge2.start );\n\n\t\t\t\t}\n\n\t\t\t\ttempDir.subVectors( edge1.end, edge2.end );\n\t\t\t\tif ( tempDir.dot( dir1 ) < 0 ) {\n\n\t\t\t\t\ttarget.end.copy( edge1.end );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttarget.end.copy( edge2.end );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t};\n\n} )();\n\n\nExtendedTriangle.prototype.distanceToPoint = ( function () {\n\n\tconst target = new Vector3();\n\treturn function distanceToPoint( point ) {\n\n\t\tthis.closestPointToPoint( point, target );\n\t\treturn point.distanceTo( target );\n\n\t};\n\n} )();\n\n\nExtendedTriangle.prototype.distanceToTriangle = ( function () {\n\n\tconst point = new Vector3();\n\tconst point2 = new Vector3();\n\tconst cornerFields = [ 'a', 'b', 'c' ];\n\tconst line1 = new Line3();\n\tconst line2 = new Line3();\n\n\treturn function distanceToTriangle( other, target1 = null, target2 = null ) {\n\n\t\tconst lineTarget = target1 || target2 ? line1 : null;\n\t\tif ( this.intersectsTriangle( other, lineTarget ) ) {\n\n\t\t\tif ( target1 || target2 ) {\n\n\t\t\t\tif ( target1 ) lineTarget.getCenter( target1 );\n\t\t\t\tif ( target2 ) lineTarget.getCenter( target2 );\n\n\t\t\t}\n\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tlet closestDistanceSq = Infinity;\n\n\t\t// check all point distances\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tlet dist;\n\t\t\tconst field = cornerFields[ i ];\n\t\t\tconst otherVec = other[ field ];\n\t\t\tthis.closestPointToPoint( otherVec, point );\n\n\t\t\tdist = otherVec.distanceToSquared( point );\n\n\t\t\tif ( dist < closestDistanceSq ) {\n\n\t\t\t\tclosestDistanceSq = dist;\n\t\t\t\tif ( target1 ) target1.copy( point );\n\t\t\t\tif ( target2 ) target2.copy( otherVec );\n\n\t\t\t}\n\n\n\t\t\tconst thisVec = this[ field ];\n\t\t\tother.closestPointToPoint( thisVec, point );\n\n\t\t\tdist = thisVec.distanceToSquared( point );\n\n\t\t\tif ( dist < closestDistanceSq ) {\n\n\t\t\t\tclosestDistanceSq = dist;\n\t\t\t\tif ( target1 ) target1.copy( thisVec );\n\t\t\t\tif ( target2 ) target2.copy( point );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst f11 = cornerFields[ i ];\n\t\t\tconst f12 = cornerFields[ ( i + 1 ) % 3 ];\n\t\t\tline1.set( this[ f11 ], this[ f12 ] );\n\t\t\tfor ( let i2 = 0; i2 < 3; i2 ++ ) {\n\n\t\t\t\tconst f21 = cornerFields[ i2 ];\n\t\t\t\tconst f22 = cornerFields[ ( i2 + 1 ) % 3 ];\n\t\t\t\tline2.set( other[ f21 ], other[ f22 ] );\n\n\t\t\t\tclosestPointsSegmentToSegment( line1, line2, point, point2 );\n\n\t\t\t\tconst dist = point.distanceToSquared( point2 );\n\t\t\t\tif ( dist < closestDistanceSq ) {\n\n\t\t\t\t\tclosestDistanceSq = dist;\n\t\t\t\t\tif ( target1 ) target1.copy( point );\n\t\t\t\t\tif ( target2 ) target2.copy( point2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Math.sqrt( closestDistanceSq );\n\n\t};\n\n} )();\n","import { Box3, Vector3, Matrix4, Line3 } from 'three';\nimport { SeparatingAxisBounds } from './SeparatingAxisBounds.js';\nimport { ExtendedTriangle } from './ExtendedTriangle.js';\nimport { closestPointsSegmentToSegment } from './MathUtilities.js';\n\nexport class OrientedBox extends Box3 {\n\n\tconstructor( ...args ) {\n\n\t\tsuper( ...args );\n\n\t\tthis.isOrientedBox = true;\n\t\tthis.matrix = new Matrix4();\n\t\tthis.invMatrix = new Matrix4();\n\t\tthis.points = new Array( 8 ).fill().map( () => new Vector3() );\n\t\tthis.satAxes = new Array( 3 ).fill().map( () => new Vector3() );\n\t\tthis.satBounds = new Array( 3 ).fill().map( () => new SeparatingAxisBounds() );\n\t\tthis.alignedSatBounds = new Array( 3 ).fill().map( () => new SeparatingAxisBounds() );\n\t\tthis.needsUpdate = false;\n\n\t}\n\n\tset( min, max, matrix ) {\n\n\t\tsuper.set( min, max );\n\t\tthis.matrix.copy( matrix );\n\t\tthis.needsUpdate = true;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tsuper.copy( other );\n\t\tthis.matrix.copy( other.matrix );\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nOrientedBox.prototype.update = ( function () {\n\n\treturn function update() {\n\n\t\tconst matrix = this.matrix;\n\t\tconst min = this.min;\n\t\tconst max = this.max;\n\n\t\tconst points = this.points;\n\t\tfor ( let x = 0; x <= 1; x ++ ) {\n\n\t\t\tfor ( let y = 0; y <= 1; y ++ ) {\n\n\t\t\t\tfor ( let z = 0; z <= 1; z ++ ) {\n\n\t\t\t\t\tconst i = ( ( 1 << 0 ) * x ) | ( ( 1 << 1 ) * y ) | ( ( 1 << 2 ) * z );\n\t\t\t\t\tconst v = points[ i ];\n\t\t\t\t\tv.x = x ? max.x : min.x;\n\t\t\t\t\tv.y = y ? max.y : min.y;\n\t\t\t\t\tv.z = z ? max.z : min.z;\n\n\t\t\t\t\tv.applyMatrix4( matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst satBounds = this.satBounds;\n\t\tconst satAxes = this.satAxes;\n\t\tconst minVec = points[ 0 ];\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst axis = satAxes[ i ];\n\t\t\tconst sb = satBounds[ i ];\n\t\t\tconst index = 1 << i;\n\t\t\tconst pi = points[ index ];\n\n\t\t\taxis.subVectors( minVec, pi );\n\t\t\tsb.setFromPoints( axis, points );\n\n\t\t}\n\n\t\tconst alignedSatBounds = this.alignedSatBounds;\n\t\talignedSatBounds[ 0 ].setFromPointsField( points, 'x' );\n\t\talignedSatBounds[ 1 ].setFromPointsField( points, 'y' );\n\t\talignedSatBounds[ 2 ].setFromPointsField( points, 'z' );\n\n\t\tthis.invMatrix.copy( this.matrix ).invert();\n\t\tthis.needsUpdate = false;\n\n\t};\n\n} )();\n\nOrientedBox.prototype.intersectsBox = ( function () {\n\n\tconst aabbBounds = new SeparatingAxisBounds();\n\treturn function intersectsBox( box ) {\n\n\t\t// TODO: should this be doing SAT against the AABB?\n\t\tif ( this.needsUpdate ) {\n\n\t\t\tthis.update();\n\n\t\t}\n\n\t\tconst min = box.min;\n\t\tconst max = box.max;\n\t\tconst satBounds = this.satBounds;\n\t\tconst satAxes = this.satAxes;\n\t\tconst alignedSatBounds = this.alignedSatBounds;\n\n\t\taabbBounds.min = min.x;\n\t\taabbBounds.max = max.x;\n\t\tif ( alignedSatBounds[ 0 ].isSeparated( aabbBounds ) ) return false;\n\n\t\taabbBounds.min = min.y;\n\t\taabbBounds.max = max.y;\n\t\tif ( alignedSatBounds[ 1 ].isSeparated( aabbBounds ) ) return false;\n\n\t\taabbBounds.min = min.z;\n\t\taabbBounds.max = max.z;\n\t\tif ( alignedSatBounds[ 2 ].isSeparated( aabbBounds ) ) return false;\n\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst axis = satAxes[ i ];\n\t\t\tconst sb = satBounds[ i ];\n\t\t\taabbBounds.setFromBox( axis, box );\n\t\t\tif ( sb.isSeparated( aabbBounds ) ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t};\n\n} )();\n\nOrientedBox.prototype.intersectsTriangle = ( function () {\n\n\tconst saTri = new ExtendedTriangle();\n\tconst pointsArr = new Array( 3 );\n\tconst cachedSatBounds = new SeparatingAxisBounds();\n\tconst cachedSatBounds2 = new SeparatingAxisBounds();\n\tconst cachedAxis = new Vector3();\n\treturn function intersectsTriangle( triangle ) {\n\n\t\tif ( this.needsUpdate ) {\n\n\t\t\tthis.update();\n\n\t\t}\n\n\t\tif ( ! triangle.isExtendedTriangle ) {\n\n\t\t\tsaTri.copy( triangle );\n\t\t\tsaTri.update();\n\t\t\ttriangle = saTri;\n\n\t\t} else if ( triangle.needsUpdate ) {\n\n\t\t\ttriangle.update();\n\n\t\t}\n\n\t\tconst satBounds = this.satBounds;\n\t\tconst satAxes = this.satAxes;\n\n\t\tpointsArr[ 0 ] = triangle.a;\n\t\tpointsArr[ 1 ] = triangle.b;\n\t\tpointsArr[ 2 ] = triangle.c;\n\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst sb = satBounds[ i ];\n\t\t\tconst sa = satAxes[ i ];\n\t\t\tcachedSatBounds.setFromPoints( sa, pointsArr );\n\t\t\tif ( sb.isSeparated( cachedSatBounds ) ) return false;\n\n\t\t}\n\n\t\tconst triSatBounds = triangle.satBounds;\n\t\tconst triSatAxes = triangle.satAxes;\n\t\tconst points = this.points;\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst sb = triSatBounds[ i ];\n\t\t\tconst sa = triSatAxes[ i ];\n\t\t\tcachedSatBounds.setFromPoints( sa, points );\n\t\t\tif ( sb.isSeparated( cachedSatBounds ) ) return false;\n\n\t\t}\n\n\t\t// check crossed axes\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tconst sa1 = satAxes[ i ];\n\t\t\tfor ( let i2 = 0; i2 < 4; i2 ++ ) {\n\n\t\t\t\tconst sa2 = triSatAxes[ i2 ];\n\t\t\t\tcachedAxis.crossVectors( sa1, sa2 );\n\t\t\t\tcachedSatBounds.setFromPoints( cachedAxis, pointsArr );\n\t\t\t\tcachedSatBounds2.setFromPoints( cachedAxis, points );\n\t\t\t\tif ( cachedSatBounds.isSeparated( cachedSatBounds2 ) ) return false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t};\n\n} )();\n\nOrientedBox.prototype.closestPointToPoint = ( function () {\n\n\treturn function closestPointToPoint( point, target1 ) {\n\n\t\tif ( this.needsUpdate ) {\n\n\t\t\tthis.update();\n\n\t\t}\n\n\t\ttarget1\n\t\t\t.copy( point )\n\t\t\t.applyMatrix4( this.invMatrix )\n\t\t\t.clamp( this.min, this.max )\n\t\t\t.applyMatrix4( this.matrix );\n\n\t\treturn target1;\n\n\t};\n\n} )();\n\nOrientedBox.prototype.distanceToPoint = ( function () {\n\n\tconst target = new Vector3();\n\treturn function distanceToPoint( point ) {\n\n\t\tthis.closestPointToPoint( point, target );\n\t\treturn point.distanceTo( target );\n\n\t};\n\n} )();\n\nOrientedBox.prototype.distanceToBox = ( function () {\n\n\tconst xyzFields = [ 'x', 'y', 'z' ];\n\tconst segments1 = new Array( 12 ).fill().map( () => new Line3() );\n\tconst segments2 = new Array( 12 ).fill().map( () => new Line3() );\n\n\tconst point1 = new Vector3();\n\tconst point2 = new Vector3();\n\n\t// early out if we find a value below threshold\n\treturn function distanceToBox( box, threshold = 0, target1 = null, target2 = null ) {\n\n\t\tif ( this.needsUpdate ) {\n\n\t\t\tthis.update();\n\n\t\t}\n\n\t\tif ( this.intersectsBox( box ) ) {\n\n\t\t\tif ( target1 || target2 ) {\n\n\t\t\t\tbox.getCenter( point2 );\n\t\t\t\tthis.closestPointToPoint( point2, point1 );\n\t\t\t\tbox.closestPointToPoint( point1, point2 );\n\n\t\t\t\tif ( target1 ) target1.copy( point1 );\n\t\t\t\tif ( target2 ) target2.copy( point2 );\n\n\t\t\t}\n\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tconst threshold2 = threshold * threshold;\n\t\tconst min = box.min;\n\t\tconst max = box.max;\n\t\tconst points = this.points;\n\n\n\t\t// iterate over every edge and compare distances\n\t\tlet closestDistanceSq = Infinity;\n\n\t\t// check over all these points\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst p = points[ i ];\n\t\t\tpoint2.copy( p ).clamp( min, max );\n\n\t\t\tconst dist = p.distanceToSquared( point2 );\n\t\t\tif ( dist < closestDistanceSq ) {\n\n\t\t\t\tclosestDistanceSq = dist;\n\t\t\t\tif ( target1 ) target1.copy( p );\n\t\t\t\tif ( target2 ) target2.copy( point2 );\n\n\t\t\t\tif ( dist < threshold2 ) return Math.sqrt( dist );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate and check all line segment distances\n\t\tlet count = 0;\n\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\tfor ( let i1 = 0; i1 <= 1; i1 ++ ) {\n\n\t\t\t\tfor ( let i2 = 0; i2 <= 1; i2 ++ ) {\n\n\t\t\t\t\tconst nextIndex = ( i + 1 ) % 3;\n\t\t\t\t\tconst nextIndex2 = ( i + 2 ) % 3;\n\n\t\t\t\t\t// get obb line segments\n\t\t\t\t\tconst index = i1 << nextIndex | i2 << nextIndex2;\n\t\t\t\t\tconst index2 = 1 << i | i1 << nextIndex | i2 << nextIndex2;\n\t\t\t\t\tconst p1 = points[ index ];\n\t\t\t\t\tconst p2 = points[ index2 ];\n\t\t\t\t\tconst line1 = segments1[ count ];\n\t\t\t\t\tline1.set( p1, p2 );\n\n\n\t\t\t\t\t// get aabb line segments\n\t\t\t\t\tconst f1 = xyzFields[ i ];\n\t\t\t\t\tconst f2 = xyzFields[ nextIndex ];\n\t\t\t\t\tconst f3 = xyzFields[ nextIndex2 ];\n\t\t\t\t\tconst line2 = segments2[ count ];\n\t\t\t\t\tconst start = line2.start;\n\t\t\t\t\tconst end = line2.end;\n\n\t\t\t\t\tstart[ f1 ] = min[ f1 ];\n\t\t\t\t\tstart[ f2 ] = i1 ? min[ f2 ] : max[ f2 ];\n\t\t\t\t\tstart[ f3 ] = i2 ? min[ f3 ] : max[ f2 ];\n\n\t\t\t\t\tend[ f1 ] = max[ f1 ];\n\t\t\t\t\tend[ f2 ] = i1 ? min[ f2 ] : max[ f2 ];\n\t\t\t\t\tend[ f3 ] = i2 ? min[ f3 ] : max[ f2 ];\n\n\t\t\t\t\tcount ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// check all the other boxes point\n\t\tfor ( let x = 0; x <= 1; x ++ ) {\n\n\t\t\tfor ( let y = 0; y <= 1; y ++ ) {\n\n\t\t\t\tfor ( let z = 0; z <= 1; z ++ ) {\n\n\t\t\t\t\tpoint2.x = x ? max.x : min.x;\n\t\t\t\t\tpoint2.y = y ? max.y : min.y;\n\t\t\t\t\tpoint2.z = z ? max.z : min.z;\n\n\t\t\t\t\tthis.closestPointToPoint( point2, point1 );\n\t\t\t\t\tconst dist = point2.distanceToSquared( point1 );\n\t\t\t\t\tif ( dist < closestDistanceSq ) {\n\n\t\t\t\t\t\tclosestDistanceSq = dist;\n\t\t\t\t\t\tif ( target1 ) target1.copy( point1 );\n\t\t\t\t\t\tif ( target2 ) target2.copy( point2 );\n\n\t\t\t\t\t\tif ( dist < threshold2 ) return Math.sqrt( dist );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 12; i ++ ) {\n\n\t\t\tconst l1 = segments1[ i ];\n\t\t\tfor ( let i2 = 0; i2 < 12; i2 ++ ) {\n\n\t\t\t\tconst l2 = segments2[ i2 ];\n\t\t\t\tclosestPointsSegmentToSegment( l1, l2, point1, point2 );\n\t\t\t\tconst dist = point1.distanceToSquared( point2 );\n\t\t\t\tif ( dist < closestDistanceSq ) {\n\n\t\t\t\t\tclosestDistanceSq = dist;\n\t\t\t\t\tif ( target1 ) target1.copy( point1 );\n\t\t\t\t\tif ( target2 ) target2.copy( point2 );\n\n\t\t\t\t\tif ( dist < threshold2 ) return Math.sqrt( dist );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Math.sqrt( closestDistanceSq );\n\n\t};\n\n} )();\n","\nimport { Vector2, Vector3, Triangle } from 'three';\n\n// sets the vertices of triangle `tri` with the 3 vertices after i\nexport function setTriangle( tri, i, index, pos ) {\n\n\tconst ta = tri.a;\n\tconst tb = tri.b;\n\tconst tc = tri.c;\n\n\tlet i0 = i;\n\tlet i1 = i + 1;\n\tlet i2 = i + 2;\n\tif ( index ) {\n\n\t\ti0 = index.getX( i );\n\t\ti1 = index.getX( i + 1 );\n\t\ti2 = index.getX( i + 2 );\n\n\t}\n\n\tta.x = pos.getX( i0 );\n\tta.y = pos.getY( i0 );\n\tta.z = pos.getZ( i0 );\n\n\ttb.x = pos.getX( i1 );\n\ttb.y = pos.getY( i1 );\n\ttb.z = pos.getZ( i1 );\n\n\ttc.x = pos.getX( i2 );\n\ttc.y = pos.getY( i2 );\n\ttc.z = pos.getZ( i2 );\n\n}\n\nexport function iterateOverTriangles(\n\toffset,\n\tcount,\n\tgeometry,\n\tintersectsTriangleFunc,\n\tcontained,\n\tdepth,\n\ttriangle\n) {\n\n\tconst index = geometry.index;\n\tconst pos = geometry.attributes.position;\n\tfor ( let i = offset, l = count + offset; i < l; i ++ ) {\n\n\t\tsetTriangle( triangle, i * 3, index, pos );\n\t\ttriangle.needsUpdate = true;\n\n\t\tif ( intersectsTriangleFunc( triangle, i, contained, depth ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t}\n\n\treturn false;\n\n}\n\nconst tempV1 = /* @__PURE__ */ new Vector3();\nconst tempV2 = /* @__PURE__ */ new Vector3();\nconst tempV3 = /* @__PURE__ */ new Vector3();\nconst tempUV1 = /* @__PURE__ */ new Vector2();\nconst tempUV2 = /* @__PURE__ */ new Vector2();\nconst tempUV3 = /* @__PURE__ */ new Vector2();\n\nexport function getTriangleHitPointInfo( point, geometry, triangleIndex, target ) {\n\n\tconst indices = geometry.getIndex().array;\n\tconst positions = geometry.getAttribute( 'position' );\n\tconst uvs = geometry.getAttribute( 'uv' );\n\n\tconst a = indices[ triangleIndex * 3 ];\n\tconst b = indices[ triangleIndex * 3 + 1 ];\n\tconst c = indices[ triangleIndex * 3 + 2 ];\n\n\ttempV1.fromBufferAttribute( positions, a );\n\ttempV2.fromBufferAttribute( positions, b );\n\ttempV3.fromBufferAttribute( positions, c );\n\n\t// find the associated material index\n\tlet materialIndex = 0;\n\tconst groups = geometry.groups;\n\tconst firstVertexIndex = triangleIndex * 3;\n\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\t\tconst { start, count } = group;\n\t\tif ( firstVertexIndex >= start && firstVertexIndex < start + count ) {\n\n\t\t\tmaterialIndex = group.materialIndex;\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\t// extract uvs\n\tlet uv = null;\n\tif ( uvs ) {\n\n\t\ttempUV1.fromBufferAttribute( uvs, a );\n\t\ttempUV2.fromBufferAttribute( uvs, b );\n\t\ttempUV3.fromBufferAttribute( uvs, c );\n\n\t\tif ( target && target.uv ) uv = target.uv;\n\t\telse uv = new Vector2();\n\n\t\tTriangle.getUV( point, tempV1, tempV2, tempV3, tempUV1, tempUV2, tempUV3, uv );\n\n\t}\n\n\t// adjust the provided target or create a new one\n\tif ( target ) {\n\n\t\tif ( ! target.face ) target.face = { };\n\t\ttarget.face.a = a;\n\t\ttarget.face.b = b;\n\t\ttarget.face.c = c;\n\t\ttarget.face.materialIndex = materialIndex;\n\t\tif ( ! target.face.normal ) target.face.normal = new Vector3();\n\t\tTriangle.getNormal( tempV1, tempV2, tempV3, target.face.normal );\n\n\t\tif ( ! target.uv ) target.uv = new Vector2();\n\t\ttarget.uv.copy( uv );\n\n\t\treturn target;\n\n\t} else {\n\n\t\treturn {\n\t\t\tface: {\n\t\t\t\ta: a,\n\t\t\t\tb: b,\n\t\t\t\tc: c,\n\t\t\t\tmaterialIndex: materialIndex,\n\t\t\t\tnormal: Triangle.getNormal( tempV1, tempV2, tempV3, new Vector3() )\n\t\t\t},\n\t\t\tuv: uv\n\t\t};\n\n\t}\n\n}\n","export class PrimitivePool {\n\n\tconstructor( getNewPrimitive ) {\n\n\t\tthis._getNewPrimitive = getNewPrimitive;\n\t\tthis._primitives = [];\n\n\t}\n\n\tgetPrimitive() {\n\n\t\tconst primitives = this._primitives;\n\t\tif ( primitives.length === 0 ) {\n\n\t\t\treturn this._getNewPrimitive();\n\n\t\t} else {\n\n\t\t\treturn primitives.pop();\n\n\t\t}\n\n\t}\n\n\treleasePrimitive( primitive ) {\n\n\t\tthis._primitives.push( primitive );\n\n\t}\n\n}\n","export function IS_LEAF( n16, uint16Array ) {\n\n\treturn uint16Array[ n16 + 15 ] === 0xFFFF;\n\n}\n\nexport function OFFSET( n32, uint32Array ) {\n\n\treturn uint32Array[ n32 + 6 ];\n\n}\n\nexport function COUNT( n16, uint16Array ) {\n\n\treturn uint16Array[ n16 + 14 ];\n\n}\n\nexport function LEFT_NODE( n32 ) {\n\n\treturn n32 + 8;\n\n}\n\nexport function RIGHT_NODE( n32, uint32Array ) {\n\n\treturn uint32Array[ n32 + 6 ];\n\n}\n\nexport function SPLIT_AXIS( n32, uint32Array ) {\n\n\treturn uint32Array[ n32 + 7 ];\n\n}\n\nexport function BOUNDING_DATA_INDEX( n32 ) {\n\n\treturn n32;\n\n}\n","import { Box3, Vector3, Matrix4 } from 'three';\nimport { CONTAINED } from './Constants.js';\n\nimport { OrientedBox } from '../math/OrientedBox.js';\nimport { ExtendedTriangle } from '../math/ExtendedTriangle.js';\nimport { intersectTris, intersectClosestTri } from '../utils/GeometryRayIntersectUtilities.js';\nimport { setTriangle } from '../utils/TriangleUtilities.js';\nimport { arrayToBox } from '../utils/ArrayBoxUtilities.js';\nimport { PrimitivePool } from '../utils/PrimitivePool.js';\nimport { COUNT, OFFSET, LEFT_NODE, RIGHT_NODE, IS_LEAF, BOUNDING_DATA_INDEX, SPLIT_AXIS } from './nodeBufferFunctions.js';\n\nconst boundingBox = new Box3();\nconst boxIntersection = new Vector3();\nconst xyzFields = [ 'x', 'y', 'z' ];\n\nexport function raycast( nodeIndex32, geometry, side, ray, intersects ) {\n\n\tlet nodeIndex16 = nodeIndex32 * 2, float32Array = _float32Array, uint16Array = _uint16Array, uint32Array = _uint32Array;\n\n\tconst isLeaf = IS_LEAF( nodeIndex16, uint16Array );\n\tif ( isLeaf ) {\n\n\t\tconst offset = OFFSET( nodeIndex32, uint32Array );\n\t\tconst count = COUNT( nodeIndex16, uint16Array );\n\n\t\tintersectTris( geometry, side, ray, offset, count, intersects );\n\n\t} else {\n\n\t\tconst leftIndex = LEFT_NODE( nodeIndex32 );\n\t\tif ( intersectRay( leftIndex, float32Array, ray, boxIntersection ) ) {\n\n\t\t\traycast( leftIndex, geometry, side, ray, intersects );\n\n\t\t}\n\n\t\tconst rightIndex = RIGHT_NODE( nodeIndex32, uint32Array );\n\t\tif ( intersectRay( rightIndex, float32Array, ray, boxIntersection ) ) {\n\n\t\t\traycast( rightIndex, geometry, side, ray, intersects );\n\n\t\t}\n\n\t}\n\n}\n\nexport function raycastFirst( nodeIndex32, geometry, side, ray ) {\n\n\tlet nodeIndex16 = nodeIndex32 * 2, float32Array = _float32Array, uint16Array = _uint16Array, uint32Array = _uint32Array;\n\n\tconst isLeaf = IS_LEAF( nodeIndex16, uint16Array );\n\tif ( isLeaf ) {\n\n\t\tconst offset = OFFSET( nodeIndex32, uint32Array );\n\t\tconst count = COUNT( nodeIndex16, uint16Array );\n\t\treturn intersectClosestTri( geometry, side, ray, offset, count );\n\n\t} else {\n\n\t\t// consider the position of the split plane with respect to the oncoming ray; whichever direction\n\t\t// the ray is coming from, look for an intersection among that side of the tree first\n\t\tconst splitAxis = SPLIT_AXIS( nodeIndex32, uint32Array );\n\t\tconst xyzAxis = xyzFields[ splitAxis ];\n\t\tconst rayDir = ray.direction[ xyzAxis ];\n\t\tconst leftToRight = rayDir >= 0;\n\n\t\t// c1 is the child to check first\n\t\tlet c1, c2;\n\t\tif ( leftToRight ) {\n\n\t\t\tc1 = LEFT_NODE( nodeIndex32 );\n\t\t\tc2 = RIGHT_NODE( nodeIndex32, uint32Array );\n\n\t\t} else {\n\n\t\t\tc1 = RIGHT_NODE( nodeIndex32, uint32Array );\n\t\t\tc2 = LEFT_NODE( nodeIndex32 );\n\n\t\t}\n\n\t\tconst c1Intersection = intersectRay( c1, float32Array, ray, boxIntersection );\n\t\tconst c1Result = c1Intersection ? raycastFirst( c1, geometry, side, ray ) : null;\n\n\t\t// if we got an intersection in the first node and it's closer than the second node's bounding\n\t\t// box, we don't need to consider the second node because it couldn't possibly be a better result\n\t\tif ( c1Result ) {\n\n\t\t\t// check if the point is within the second bounds\n\t\t\t// \"point\" is in the local frame of the bvh\n\t\t\tconst point = c1Result.point[ xyzAxis ];\n\t\t\tconst isOutside = leftToRight ?\n\t\t\t\tpoint <= float32Array[ c2 + splitAxis ] : // min bounding data\n\t\t\t\tpoint >= float32Array[ c2 + splitAxis + 3 ]; // max bounding data\n\n\t\t\tif ( isOutside ) {\n\n\t\t\t\treturn c1Result;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// either there was no intersection in the first node, or there could still be a closer\n\t\t// intersection in the second, so check the second node and then take the better of the two\n\t\tconst c2Intersection = intersectRay( c2, float32Array, ray, boxIntersection );\n\t\tconst c2Result = c2Intersection ? raycastFirst( c2, geometry, side, ray ) : null;\n\n\t\tif ( c1Result && c2Result ) {\n\n\t\t\treturn c1Result.distance <= c2Result.distance ? c1Result : c2Result;\n\n\t\t} else {\n\n\t\t\treturn c1Result || c2Result || null;\n\n\t\t}\n\n\t}\n\n}\n\nexport const shapecast = ( function () {\n\n\tlet _box1, _box2;\n\tconst boxStack = [];\n\tconst boxPool = new PrimitivePool( () => new Box3() );\n\n\treturn function shapecast( ...args ) {\n\n\t\t_box1 = boxPool.getPrimitive();\n\t\t_box2 = boxPool.getPrimitive();\n\t\tboxStack.push( _box1, _box2 );\n\n\t\tconst result = shapecastTraverse( ...args );\n\n\t\tboxPool.releasePrimitive( _box1 );\n\t\tboxPool.releasePrimitive( _box2 );\n\t\tboxStack.pop();\n\t\tboxStack.pop();\n\n\t\tconst length = boxStack.length;\n\t\tif ( length > 0 ) {\n\n\t\t\t_box2 = boxStack[ length - 1 ];\n\t\t\t_box1 = boxStack[ length - 2 ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tfunction shapecastTraverse(\n\t\tnodeIndex32,\n\t\tgeometry,\n\t\tintersectsBoundsFunc,\n\t\tintersectsRangeFunc,\n\t\tnodeScoreFunc = null,\n\t\tnodeIndexByteOffset = 0, // offset for unique node identifier\n\t\tdepth = 0\n\t) {\n\n\t\t// Define these inside the function so it has access to the local variables needed\n\t\t// when converting to the buffer equivalents\n\t\tfunction getLeftOffset( nodeIndex32 ) {\n\n\t\t\tlet nodeIndex16 = nodeIndex32 * 2, uint16Array = _uint16Array, uint32Array = _uint32Array;\n\n\t\t\t// traverse until we find a leaf\n\t\t\twhile ( ! IS_LEAF( nodeIndex16, uint16Array ) ) {\n\n\t\t\t\tnodeIndex32 = LEFT_NODE( nodeIndex32 );\n\t\t\t\tnodeIndex16 = nodeIndex32 * 2;\n\n\t\t\t}\n\n\t\t\treturn OFFSET( nodeIndex32, uint32Array );\n\n\t\t}\n\n\t\tfunction getRightEndOffset( nodeIndex32 ) {\n\n\t\t\tlet nodeIndex16 = nodeIndex32 * 2, uint16Array = _uint16Array, uint32Array = _uint32Array;\n\n\t\t\t// traverse until we find a leaf\n\t\t\twhile ( ! IS_LEAF( nodeIndex16, uint16Array ) ) {\n\n\t\t\t\t// adjust offset to point to the right node\n\t\t\t\tnodeIndex32 = RIGHT_NODE( nodeIndex32, uint32Array );\n\t\t\t\tnodeIndex16 = nodeIndex32 * 2;\n\n\t\t\t}\n\n\t\t\t// return the end offset of the triangle range\n\t\t\treturn OFFSET( nodeIndex32, uint32Array ) + COUNT( nodeIndex16, uint16Array );\n\n\t\t}\n\n\t\tlet nodeIndex16 = nodeIndex32 * 2, float32Array = _float32Array, uint16Array = _uint16Array, uint32Array = _uint32Array;\n\n\t\tconst isLeaf = IS_LEAF( nodeIndex16, uint16Array );\n\t\tif ( isLeaf ) {\n\n\t\t\tconst offset = OFFSET( nodeIndex32, uint32Array );\n\t\t\tconst count = COUNT( nodeIndex16, uint16Array );\n\t\t\tarrayToBox( BOUNDING_DATA_INDEX( nodeIndex32 ), float32Array, _box1 );\n\t\t\treturn intersectsRangeFunc( offset, count, false, depth, nodeIndexByteOffset + nodeIndex32, _box1 );\n\n\t\t} else {\n\n\t\t\tconst left = LEFT_NODE( nodeIndex32 );\n\t\t\tconst right = RIGHT_NODE( nodeIndex32, uint32Array );\n\t\t\tlet c1 = left;\n\t\t\tlet c2 = right;\n\n\t\t\tlet score1, score2;\n\t\t\tlet box1, box2;\n\t\t\tif ( nodeScoreFunc ) {\n\n\t\t\t\tbox1 = _box1;\n\t\t\t\tbox2 = _box2;\n\n\t\t\t\t// bounding data is not offset\n\t\t\t\tarrayToBox( BOUNDING_DATA_INDEX( c1 ), float32Array, box1 );\n\t\t\t\tarrayToBox( BOUNDING_DATA_INDEX( c2 ), float32Array, box2 );\n\n\t\t\t\tscore1 = nodeScoreFunc( box1 );\n\t\t\t\tscore2 = nodeScoreFunc( box2 );\n\n\t\t\t\tif ( score2 < score1 ) {\n\n\t\t\t\t\tc1 = right;\n\t\t\t\t\tc2 = left;\n\n\t\t\t\t\tconst temp = score1;\n\t\t\t\t\tscore1 = score2;\n\t\t\t\t\tscore2 = temp;\n\n\t\t\t\t\tbox1 = box2;\n\t\t\t\t\t// box2 is always set before use below\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Check box 1 intersection\n\t\t\tif ( ! box1 ) {\n\n\t\t\t\tbox1 = _box1;\n\t\t\t\tarrayToBox( BOUNDING_DATA_INDEX( c1 ), float32Array, box1 );\n\n\t\t\t}\n\n\t\t\tconst isC1Leaf = IS_LEAF( c1 * 2, uint16Array );\n\t\t\tconst c1Intersection = intersectsBoundsFunc( box1, isC1Leaf, score1, depth + 1, nodeIndexByteOffset + c1 );\n\n\t\t\tlet c1StopTraversal;\n\t\t\tif ( c1Intersection === CONTAINED ) {\n\n\t\t\t\tconst offset = getLeftOffset( c1 );\n\t\t\t\tconst end = getRightEndOffset( c1 );\n\t\t\t\tconst count = end - offset;\n\n\t\t\t\tc1StopTraversal = intersectsRangeFunc( offset, count, true, depth + 1, nodeIndexByteOffset + c1, box1 );\n\n\t\t\t} else {\n\n\t\t\t\tc1StopTraversal =\n\t\t\t\t\tc1Intersection &&\n\t\t\t\t\tshapecastTraverse(\n\t\t\t\t\t\tc1,\n\t\t\t\t\t\tgeometry,\n\t\t\t\t\t\tintersectsBoundsFunc,\n\t\t\t\t\t\tintersectsRangeFunc,\n\t\t\t\t\t\tnodeScoreFunc,\n\t\t\t\t\t\tnodeIndexByteOffset,\n\t\t\t\t\t\tdepth + 1\n\t\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( c1StopTraversal ) return true;\n\n\t\t\t// Check box 2 intersection\n\t\t\t// cached box2 will have been overwritten by previous traversal\n\t\t\tbox2 = _box2;\n\t\t\tarrayToBox( BOUNDING_DATA_INDEX( c2 ), float32Array, box2 );\n\n\t\t\tconst isC2Leaf = IS_LEAF( c2 * 2, uint16Array );\n\t\t\tconst c2Intersection = intersectsBoundsFunc( box2, isC2Leaf, score2, depth + 1, nodeIndexByteOffset + c2 );\n\n\t\t\tlet c2StopTraversal;\n\t\t\tif ( c2Intersection === CONTAINED ) {\n\n\t\t\t\tconst offset = getLeftOffset( c2 );\n\t\t\t\tconst end = getRightEndOffset( c2 );\n\t\t\t\tconst count = end - offset;\n\n\t\t\t\tc2StopTraversal = intersectsRangeFunc( offset, count, true, depth + 1, nodeIndexByteOffset + c2, box2 );\n\n\t\t\t} else {\n\n\t\t\t\tc2StopTraversal =\n\t\t\t\t\tc2Intersection &&\n\t\t\t\t\tshapecastTraverse(\n\t\t\t\t\t\tc2,\n\t\t\t\t\t\tgeometry,\n\t\t\t\t\t\tintersectsBoundsFunc,\n\t\t\t\t\t\tintersectsRangeFunc,\n\t\t\t\t\t\tnodeScoreFunc,\n\t\t\t\t\t\tnodeIndexByteOffset,\n\t\t\t\t\t\tdepth + 1\n\t\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( c2StopTraversal ) return true;\n\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n} )();\n\nexport const intersectsGeometry = ( function () {\n\n\tconst triangle = new ExtendedTriangle();\n\tconst triangle2 = new ExtendedTriangle();\n\tconst invertedMat = new Matrix4();\n\n\tconst obb = new OrientedBox();\n\tconst obb2 = new OrientedBox();\n\n\treturn function intersectsGeometry( nodeIndex32, geometry, otherGeometry, geometryToBvh, cachedObb = null ) {\n\n\t\tlet nodeIndex16 = nodeIndex32 * 2, float32Array = _float32Array, uint16Array = _uint16Array, uint32Array = _uint32Array;\n\n\t\tif ( cachedObb === null ) {\n\n\t\t\tif ( ! otherGeometry.boundingBox ) {\n\n\t\t\t\totherGeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\tobb.set( otherGeometry.boundingBox.min, otherGeometry.boundingBox.max, geometryToBvh );\n\t\t\tcachedObb = obb;\n\n\t\t}\n\n\t\tconst isLeaf = IS_LEAF( nodeIndex16, uint16Array );\n\t\tif ( isLeaf ) {\n\n\t\t\tconst thisGeometry = geometry;\n\t\t\tconst thisIndex = thisGeometry.index;\n\t\t\tconst thisPos = thisGeometry.attributes.position;\n\n\t\t\tconst index = otherGeometry.index;\n\t\t\tconst pos = otherGeometry.attributes.position;\n\n\t\t\tconst offset = OFFSET( nodeIndex32, uint32Array );\n\t\t\tconst count = COUNT( nodeIndex16, uint16Array );\n\n\t\t\t// get the inverse of the geometry matrix so we can transform our triangles into the\n\t\t\t// geometry space we're trying to test. We assume there are fewer triangles being checked\n\t\t\t// here.\n\t\t\tinvertedMat.copy( geometryToBvh ).invert();\n\n\t\t\tif ( otherGeometry.boundsTree ) {\n\n\t\t\t\tarrayToBox( BOUNDING_DATA_INDEX( nodeIndex32 ), float32Array, obb2 );\n\t\t\t\tobb2.matrix.copy( invertedMat );\n\t\t\t\tobb2.needsUpdate = true;\n\n\t\t\t\tconst res = otherGeometry.boundsTree.shapecast( {\n\n\t\t\t\t\tintersectsBounds: box => obb2.intersectsBox( box ),\n\n\t\t\t\t\tintersectsTriangle: tri => {\n\n\t\t\t\t\t\ttri.a.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\ttri.b.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\ttri.c.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\ttri.needsUpdate = true;\n\n\t\t\t\t\t\tfor ( let i = offset * 3, l = ( count + offset ) * 3; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t// this triangle needs to be transformed into the current BVH coordinate frame\n\t\t\t\t\t\t\tsetTriangle( triangle2, i, thisIndex, thisPos );\n\t\t\t\t\t\t\ttriangle2.needsUpdate = true;\n\t\t\t\t\t\t\tif ( tri.intersectsTriangle( triangle2 ) ) {\n\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn res;\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = offset * 3, l = ( count + offset * 3 ); i < l; i += 3 ) {\n\n\t\t\t\t\t// this triangle needs to be transformed into the current BVH coordinate frame\n\t\t\t\t\tsetTriangle( triangle, i, thisIndex, thisPos );\n\t\t\t\t\ttriangle.a.applyMatrix4( invertedMat );\n\t\t\t\t\ttriangle.b.applyMatrix4( invertedMat );\n\t\t\t\t\ttriangle.c.applyMatrix4( invertedMat );\n\t\t\t\t\ttriangle.needsUpdate = true;\n\n\t\t\t\t\tfor ( let i2 = 0, l2 = index.count; i2 < l2; i2 += 3 ) {\n\n\t\t\t\t\t\tsetTriangle( triangle2, i2, index, pos );\n\t\t\t\t\t\ttriangle2.needsUpdate = true;\n\n\t\t\t\t\t\tif ( triangle.intersectsTriangle( triangle2 ) ) {\n\n\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst left = nodeIndex32 + 8;\n\t\t\tconst right = uint32Array[ nodeIndex32 + 6 ];\n\n\t\t\tarrayToBox( BOUNDING_DATA_INDEX( left ), float32Array, boundingBox );\n\t\t\tconst leftIntersection =\n\t\t\t\tcachedObb.intersectsBox( boundingBox ) &&\n\t\t\t\tintersectsGeometry( left, geometry, otherGeometry, geometryToBvh, cachedObb );\n\n\t\t\tif ( leftIntersection ) return true;\n\n\t\t\tarrayToBox( BOUNDING_DATA_INDEX( right ), float32Array, boundingBox );\n\t\t\tconst rightIntersection =\n\t\t\t\tcachedObb.intersectsBox( boundingBox ) &&\n\t\t\t\tintersectsGeometry( right, geometry, otherGeometry, geometryToBvh, cachedObb );\n\n\t\t\tif ( rightIntersection ) return true;\n\n\t\t\treturn false;\n\n\t\t}\n\n\t};\n\n} )();\n\nfunction intersectRay( nodeIndex32, array, ray, target ) {\n\n\tarrayToBox( nodeIndex32, array, boundingBox );\n\treturn ray.intersectBox( boundingBox, target );\n\n}\n\nconst bufferStack = [];\nlet _prevBuffer;\nlet _float32Array;\nlet _uint16Array;\nlet _uint32Array;\nexport function setBuffer( buffer ) {\n\n\tif ( _prevBuffer ) {\n\n\t\tbufferStack.push( _prevBuffer );\n\n\t}\n\n\t_prevBuffer = buffer;\n\t_float32Array = new Float32Array( buffer );\n\t_uint16Array = new Uint16Array( buffer );\n\t_uint32Array = new Uint32Array( buffer );\n\n}\n\nexport function clearBuffer() {\n\n\t_prevBuffer = null;\n\t_float32Array = null;\n\t_uint16Array = null;\n\t_uint32Array = null;\n\n\tif ( bufferStack.length ) {\n\n\t\tsetBuffer( bufferStack.pop() );\n\n\t}\n\n}\n","import { Vector3, BufferAttribute, Box3, FrontSide, Matrix4 } from 'three';\nimport { CENTER, BYTES_PER_NODE, IS_LEAFNODE_FLAG } from './Constants.js';\nimport { buildPackedTree } from './buildFunctions.js';\nimport {\n\traycast,\n\traycastFirst,\n\tshapecast,\n\tintersectsGeometry,\n\tsetBuffer,\n\tclearBuffer,\n} from './castFunctions.js';\nimport { OrientedBox } from '../math/OrientedBox.js';\nimport { ExtendedTriangle } from '../math/ExtendedTriangle.js';\nimport { PrimitivePool } from '../utils/PrimitivePool.js';\nimport { arrayToBox } from '../utils/ArrayBoxUtilities.js';\nimport { iterateOverTriangles, setTriangle } from '../utils/TriangleUtilities.js';\nimport { convertRaycastIntersect } from '../utils/GeometryRayIntersectUtilities.js';\n\nconst SKIP_GENERATION = Symbol( 'skip tree generation' );\n\nconst aabb = /* @__PURE__ */ new Box3();\nconst aabb2 = /* @__PURE__ */ new Box3();\nconst tempMatrix = /* @__PURE__ */ new Matrix4();\nconst obb = /* @__PURE__ */ new OrientedBox();\nconst obb2 = /* @__PURE__ */ new OrientedBox();\nconst temp = /* @__PURE__ */ new Vector3();\nconst temp1 = /* @__PURE__ */ new Vector3();\nconst temp2 = /* @__PURE__ */ new Vector3();\nconst temp3 = /* @__PURE__ */ new Vector3();\nconst temp4 = /* @__PURE__ */ new Vector3();\nconst tempBox = /* @__PURE__ */ new Box3();\nconst trianglePool = /* @__PURE__ */ new PrimitivePool( () => new ExtendedTriangle() );\n\nexport class MeshBVH {\n\n\tstatic serialize( bvh, options = {} ) {\n\n\t\tif ( options.isBufferGeometry ) {\n\n\t\t\tconsole.warn( 'MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature.' );\n\n\t\t\treturn MeshBVH.serialize(\n\t\t\t\targuments[ 0 ],\n\t\t\t\t{\n\t\t\t\t\tcloneBuffers: arguments[ 2 ] === undefined ? true : arguments[ 2 ],\n\t\t\t\t}\n\t\t\t);\n\n\t\t}\n\n\t\toptions = {\n\t\t\tcloneBuffers: true,\n\t\t\t...options,\n\t\t};\n\n\t\tconst geometry = bvh.geometry;\n\t\tconst rootData = bvh._roots;\n\t\tconst indexAttribute = geometry.getIndex();\n\t\tlet result;\n\t\tif ( options.cloneBuffers ) {\n\n\t\t\tresult = {\n\t\t\t\troots: rootData.map( root => root.slice() ),\n\t\t\t\tindex: indexAttribute.array.slice(),\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tresult = {\n\t\t\t\troots: rootData,\n\t\t\t\tindex: indexAttribute.array,\n\t\t\t};\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tstatic deserialize( data, geometry, options = {} ) {\n\n\t\tif ( typeof options === 'boolean' ) {\n\n\t\t\tconsole.warn( 'MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature.' );\n\n\t\t\treturn MeshBVH.deserialize(\n\t\t\t\targuments[ 0 ],\n\t\t\t\targuments[ 1 ],\n\t\t\t\t{\n\t\t\t\t\tsetIndex: arguments[ 2 ] === undefined ? true : arguments[ 2 ],\n\t\t\t\t}\n\t\t\t);\n\n\t\t}\n\n\t\toptions = {\n\t\t\tsetIndex: true,\n\t\t\t...options,\n\t\t};\n\n\t\tconst { index, roots } = data;\n\t\tconst bvh = new MeshBVH( geometry, { ...options, [ SKIP_GENERATION ]: true } );\n\t\tbvh._roots = roots;\n\n\t\tif ( options.setIndex ) {\n\n\t\t\tconst indexAttribute = geometry.getIndex();\n\t\t\tif ( indexAttribute === null ) {\n\n\t\t\t\tconst newIndex = new BufferAttribute( data.index, 1, false );\n\t\t\t\tgeometry.setIndex( newIndex );\n\n\t\t\t} else if ( indexAttribute.array !== index ) {\n\n\t\t\t\tindexAttribute.array.set( index );\n\t\t\t\tindexAttribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn bvh;\n\n\t}\n\n\tconstructor( geometry, options = {} ) {\n\n\t\tif ( ! geometry.isBufferGeometry ) {\n\n\t\t\tthrow new Error( 'MeshBVH: Only BufferGeometries are supported.' );\n\n\t\t} else if ( geometry.index && geometry.index.isInterleavedBufferAttribute ) {\n\n\t\t\tthrow new Error( 'MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.' );\n\n\t\t}\n\n\t\t// default options\n\t\toptions = Object.assign( {\n\n\t\t\tstrategy: CENTER,\n\t\t\tmaxDepth: 40,\n\t\t\tmaxLeafTris: 10,\n\t\t\tverbose: true,\n\t\t\tuseSharedArrayBuffer: false,\n\t\t\tsetBoundingBox: true,\n\t\t\tonProgress: null,\n\n\t\t\t// undocumented options\n\n\t\t\t// Whether to skip generating the tree. Used for deserialization.\n\t\t\t[ SKIP_GENERATION ]: false,\n\n\t\t}, options );\n\n\t\tif ( options.useSharedArrayBuffer && typeof SharedArrayBuffer === 'undefined' ) {\n\n\t\t\tthrow new Error( 'MeshBVH: SharedArrayBuffer is not available.' );\n\n\t\t}\n\n\t\tthis._roots = null;\n\t\tif ( ! options[ SKIP_GENERATION ] ) {\n\n\t\t\tthis._roots = buildPackedTree( geometry, options );\n\n\t\t\tif ( ! geometry.boundingBox && options.setBoundingBox ) {\n\n\t\t\t\tgeometry.boundingBox = this.getBoundingBox( new Box3() );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// retain references to the geometry so we can use them it without having to\n\t\t// take a geometry reference in every function.\n\t\tthis.geometry = geometry;\n\n\t}\n\n\trefit( nodeIndices = null ) {\n\n\t\tif ( nodeIndices && Array.isArray( nodeIndices ) ) {\n\n\t\t\tnodeIndices = new Set( nodeIndices );\n\n\t\t}\n\n\t\tconst geometry = this.geometry;\n\t\tconst indexArr = geometry.index.array;\n\t\tconst posAttr = geometry.attributes.position;\n\t\tconst posArr = posAttr.array;\n\n\t\t// support for an interleaved position buffer\n\t\tconst bufferOffset = posAttr.offset || 0;\n\t\tlet stride = 3;\n\t\tif ( posAttr.isInterleavedBufferAttribute ) {\n\n\t\t\tstride = posAttr.data.stride;\n\n\t\t}\n\n\t\tlet buffer, uint32Array, uint16Array, float32Array;\n\t\tlet byteOffset = 0;\n\t\tconst roots = this._roots;\n\t\tfor ( let i = 0, l = roots.length; i < l; i ++ ) {\n\n\t\t\tbuffer = roots[ i ];\n\t\t\tuint32Array = new Uint32Array( buffer );\n\t\t\tuint16Array = new Uint16Array( buffer );\n\t\t\tfloat32Array = new Float32Array( buffer );\n\n\t\t\t_traverse( 0, byteOffset );\n\t\t\tbyteOffset += buffer.byteLength;\n\n\t\t}\n\n\t\tfunction _traverse( node32Index, byteOffset, force = false ) {\n\n\t\t\tconst node16Index = node32Index * 2;\n\t\t\tconst isLeaf = uint16Array[ node16Index + 15 ] === IS_LEAFNODE_FLAG;\n\t\t\tif ( isLeaf ) {\n\n\t\t\t\tconst offset = uint32Array[ node32Index + 6 ];\n\t\t\t\tconst count = uint16Array[ node16Index + 14 ];\n\n\t\t\t\tlet minx = Infinity;\n\t\t\t\tlet miny = Infinity;\n\t\t\t\tlet minz = Infinity;\n\t\t\t\tlet maxx = - Infinity;\n\t\t\t\tlet maxy = - Infinity;\n\t\t\t\tlet maxz = - Infinity;\n\t\t\t\tfor ( let i = 3 * offset, l = 3 * ( offset + count ); i < l; i ++ ) {\n\n\t\t\t\t\tconst index = indexArr[ i ] * stride + bufferOffset;\n\t\t\t\t\tconst x = posArr[ index + 0 ];\n\t\t\t\t\tconst y = posArr[ index + 1 ];\n\t\t\t\t\tconst z = posArr[ index + 2 ];\n\n\t\t\t\t\tif ( x < minx ) minx = x;\n\t\t\t\t\tif ( x > maxx ) maxx = x;\n\n\t\t\t\t\tif ( y < miny ) miny = y;\n\t\t\t\t\tif ( y > maxy ) maxy = y;\n\n\t\t\t\t\tif ( z < minz ) minz = z;\n\t\t\t\t\tif ( z > maxz ) maxz = z;\n\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tfloat32Array[ node32Index + 0 ] !== minx ||\n\t\t\t\t\tfloat32Array[ node32Index + 1 ] !== miny ||\n\t\t\t\t\tfloat32Array[ node32Index + 2 ] !== minz ||\n\n\t\t\t\t\tfloat32Array[ node32Index + 3 ] !== maxx ||\n\t\t\t\t\tfloat32Array[ node32Index + 4 ] !== maxy ||\n\t\t\t\t\tfloat32Array[ node32Index + 5 ] !== maxz\n\t\t\t\t) {\n\n\t\t\t\t\tfloat32Array[ node32Index + 0 ] = minx;\n\t\t\t\t\tfloat32Array[ node32Index + 1 ] = miny;\n\t\t\t\t\tfloat32Array[ node32Index + 2 ] = minz;\n\n\t\t\t\t\tfloat32Array[ node32Index + 3 ] = maxx;\n\t\t\t\t\tfloat32Array[ node32Index + 4 ] = maxy;\n\t\t\t\t\tfloat32Array[ node32Index + 5 ] = maxz;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst left = node32Index + 8;\n\t\t\t\tconst right = uint32Array[ node32Index + 6 ];\n\n\t\t\t\t// the identifying node indices provided by the shapecast function include offsets of all\n\t\t\t\t// root buffers to guarantee they're unique between roots so offset left and right indices here.\n\t\t\t\tconst offsetLeft = left + byteOffset;\n\t\t\t\tconst offsetRight = right + byteOffset;\n\t\t\t\tlet forceChildren = force;\n\t\t\t\tlet includesLeft = false;\n\t\t\t\tlet includesRight = false;\n\n\t\t\t\tif ( nodeIndices ) {\n\n\t\t\t\t\t// if we see that neither the left or right child are included in the set that need to be updated\n\t\t\t\t\t// then we assume that all children need to be updated.\n\t\t\t\t\tif ( ! forceChildren ) {\n\n\t\t\t\t\t\tincludesLeft = nodeIndices.has( offsetLeft );\n\t\t\t\t\t\tincludesRight = nodeIndices.has( offsetRight );\n\t\t\t\t\t\tforceChildren = ! includesLeft && ! includesRight;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tincludesLeft = true;\n\t\t\t\t\tincludesRight = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst traverseLeft = forceChildren || includesLeft;\n\t\t\t\tconst traverseRight = forceChildren || includesRight;\n\n\t\t\t\tlet leftChange = false;\n\t\t\t\tif ( traverseLeft ) {\n\n\t\t\t\t\tleftChange = _traverse( left, byteOffset, forceChildren );\n\n\t\t\t\t}\n\n\t\t\t\tlet rightChange = false;\n\t\t\t\tif ( traverseRight ) {\n\n\t\t\t\t\trightChange = _traverse( right, byteOffset, forceChildren );\n\n\t\t\t\t}\n\n\t\t\t\tconst didChange = leftChange || rightChange;\n\t\t\t\tif ( didChange ) {\n\n\t\t\t\t\tfor ( let i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\tconst lefti = left + i;\n\t\t\t\t\t\tconst righti = right + i;\n\t\t\t\t\t\tconst minLeftValue = float32Array[ lefti ];\n\t\t\t\t\t\tconst maxLeftValue = float32Array[ lefti + 3 ];\n\t\t\t\t\t\tconst minRightValue = float32Array[ righti ];\n\t\t\t\t\t\tconst maxRightValue = float32Array[ righti + 3 ];\n\n\t\t\t\t\t\tfloat32Array[ node32Index + i ] = minLeftValue < minRightValue ? minLeftValue : minRightValue;\n\t\t\t\t\t\tfloat32Array[ node32Index + i + 3 ] = maxLeftValue > maxRightValue ? maxLeftValue : maxRightValue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn didChange;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttraverse( callback, rootIndex = 0 ) {\n\n\t\tconst buffer = this._roots[ rootIndex ];\n\t\tconst uint32Array = new Uint32Array( buffer );\n\t\tconst uint16Array = new Uint16Array( buffer );\n\t\t_traverse( 0 );\n\n\t\tfunction _traverse( node32Index, depth = 0 ) {\n\n\t\t\tconst node16Index = node32Index * 2;\n\t\t\tconst isLeaf = uint16Array[ node16Index + 15 ] === IS_LEAFNODE_FLAG;\n\t\t\tif ( isLeaf ) {\n\n\t\t\t\tconst offset = uint32Array[ node32Index + 6 ];\n\t\t\t\tconst count = uint16Array[ node16Index + 14 ];\n\t\t\t\tcallback( depth, isLeaf, new Float32Array( buffer, node32Index * 4, 6 ), offset, count );\n\n\t\t\t} else {\n\n\t\t\t\t// TODO: use node functions here\n\t\t\t\tconst left = node32Index + BYTES_PER_NODE / 4;\n\t\t\t\tconst right = uint32Array[ node32Index + 6 ];\n\t\t\t\tconst splitAxis = uint32Array[ node32Index + 7 ];\n\t\t\t\tconst stopTraversal = callback( depth, isLeaf, new Float32Array( buffer, node32Index * 4, 6 ), splitAxis );\n\n\t\t\t\tif ( ! stopTraversal ) {\n\n\t\t\t\t\t_traverse( left, depth + 1 );\n\t\t\t\t\t_traverse( right, depth + 1 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/* Core Cast Functions */\n\traycast( ray, materialOrSide = FrontSide ) {\n\n\t\tconst roots = this._roots;\n\t\tconst geometry = this.geometry;\n\t\tconst intersects = [];\n\t\tconst isMaterial = materialOrSide.isMaterial;\n\t\tconst isArrayMaterial = Array.isArray( materialOrSide );\n\n\t\tconst groups = geometry.groups;\n\t\tconst side = isMaterial ? materialOrSide.side : materialOrSide;\n\t\tfor ( let i = 0, l = roots.length; i < l; i ++ ) {\n\n\t\t\tconst materialSide = isArrayMaterial ? materialOrSide[ groups[ i ].materialIndex ].side : side;\n\t\t\tconst startCount = intersects.length;\n\n\t\t\tsetBuffer( roots[ i ] );\n\t\t\traycast( 0, geometry, materialSide, ray, intersects );\n\t\t\tclearBuffer();\n\n\t\t\tif ( isArrayMaterial ) {\n\n\t\t\t\tconst materialIndex = groups[ i ].materialIndex;\n\t\t\t\tfor ( let j = startCount, jl = intersects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tintersects[ j ].face.materialIndex = materialIndex;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn intersects;\n\n\t}\n\n\traycastFirst( ray, materialOrSide = FrontSide ) {\n\n\t\tconst roots = this._roots;\n\t\tconst geometry = this.geometry;\n\t\tconst isMaterial = materialOrSide.isMaterial;\n\t\tconst isArrayMaterial = Array.isArray( materialOrSide );\n\n\t\tlet closestResult = null;\n\n\t\tconst groups = geometry.groups;\n\t\tconst side = isMaterial ? materialOrSide.side : materialOrSide;\n\t\tfor ( let i = 0, l = roots.length; i < l; i ++ ) {\n\n\t\t\tconst materialSide = isArrayMaterial ? materialOrSide[ groups[ i ].materialIndex ].side : side;\n\n\t\t\tsetBuffer( roots[ i ] );\n\t\t\tconst result = raycastFirst( 0, geometry, materialSide, ray );\n\t\t\tclearBuffer();\n\n\t\t\tif ( result != null && ( closestResult == null || result.distance < closestResult.distance ) ) {\n\n\t\t\t\tclosestResult = result;\n\t\t\t\tif ( isArrayMaterial ) {\n\n\t\t\t\t\tresult.face.materialIndex = groups[ i ].materialIndex;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn closestResult;\n\n\t}\n\n\tintersectsGeometry( otherGeometry, geomToMesh ) {\n\n\t\tconst geometry = this.geometry;\n\t\tlet result = false;\n\t\tfor ( const root of this._roots ) {\n\n\t\t\tsetBuffer( root );\n\t\t\tresult = intersectsGeometry( 0, geometry, otherGeometry, geomToMesh );\n\t\t\tclearBuffer();\n\n\t\t\tif ( result ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tshapecast( callbacks, _intersectsTriangleFunc, _orderNodesFunc ) {\n\n\t\tconst geometry = this.geometry;\n\t\tif ( callbacks instanceof Function ) {\n\n\t\t\tif ( _intersectsTriangleFunc ) {\n\n\t\t\t\t// Support the previous function signature that provided three sequential index buffer\n\t\t\t\t// indices here.\n\t\t\t\tconst originalTriangleFunc = _intersectsTriangleFunc;\n\t\t\t\t_intersectsTriangleFunc = ( tri, index, contained, depth ) => {\n\n\t\t\t\t\tconst i3 = index * 3;\n\t\t\t\t\treturn originalTriangleFunc( tri, i3, i3 + 1, i3 + 2, contained, depth );\n\n\t\t\t\t};\n\n\n\t\t\t}\n\n\t\t\tcallbacks = {\n\n\t\t\t\tboundsTraverseOrder: _orderNodesFunc,\n\t\t\t\tintersectsBounds: callbacks,\n\t\t\t\tintersectsTriangle: _intersectsTriangleFunc,\n\t\t\t\tintersectsRange: null,\n\n\t\t\t};\n\n\t\t\tconsole.warn( 'MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.' );\n\n\t\t}\n\n\t\tconst triangle = trianglePool.getPrimitive();\n\t\tlet {\n\t\t\tboundsTraverseOrder,\n\t\t\tintersectsBounds,\n\t\t\tintersectsRange,\n\t\t\tintersectsTriangle,\n\t\t} = callbacks;\n\n\t\tif ( intersectsRange && intersectsTriangle ) {\n\n\t\t\tconst originalIntersectsRange = intersectsRange;\n\t\t\tintersectsRange = ( offset, count, contained, depth, nodeIndex ) => {\n\n\t\t\t\tif ( ! originalIntersectsRange( offset, count, contained, depth, nodeIndex ) ) {\n\n\t\t\t\t\treturn iterateOverTriangles( offset, count, geometry, intersectsTriangle, contained, depth, triangle );\n\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t};\n\n\t\t} else if ( ! intersectsRange ) {\n\n\t\t\tif ( intersectsTriangle ) {\n\n\t\t\t\tintersectsRange = ( offset, count, contained, depth ) => {\n\n\t\t\t\t\treturn iterateOverTriangles( offset, count, geometry, intersectsTriangle, contained, depth, triangle );\n\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tintersectsRange = ( offset, count, contained ) => {\n\n\t\t\t\t\treturn contained;\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet result = false;\n\t\tlet byteOffset = 0;\n\t\tfor ( const root of this._roots ) {\n\n\t\t\tsetBuffer( root );\n\t\t\tresult = shapecast( 0, geometry, intersectsBounds, intersectsRange, boundsTraverseOrder, byteOffset );\n\t\t\tclearBuffer();\n\n\t\t\tif ( result ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tbyteOffset += root.byteLength;\n\n\t\t}\n\n\t\ttrianglePool.releasePrimitive( triangle );\n\n\t\treturn result;\n\n\t}\n\n\tbvhcast( otherBvh, matrixToLocal, callbacks ) {\n\n\t\t// BVHCast function for intersecting two BVHs against each other. Ultimately just uses two recursive shapecast calls rather\n\t\t// than an approach that walks down the tree (see bvhcast.js file for more info).\n\n\t\tlet {\n\t\t\tintersectsRanges,\n\t\t\tintersectsTriangles,\n\t\t} = callbacks;\n\n\t\tconst indexAttr = this.geometry.index;\n\t\tconst positionAttr = this.geometry.attributes.position;\n\n\t\tconst otherIndexAttr = otherBvh.geometry.index;\n\t\tconst otherPositionAttr = otherBvh.geometry.attributes.position;\n\n\t\ttempMatrix.copy( matrixToLocal ).invert();\n\n\t\tconst triangle = trianglePool.getPrimitive();\n\t\tconst triangle2 = trianglePool.getPrimitive();\n\n\t\tif ( intersectsTriangles ) {\n\n\t\t\tfunction iterateOverDoubleTriangles( offset1, count1, offset2, count2, depth1, index1, depth2, index2 ) {\n\n\t\t\t\tfor ( let i2 = offset2, l2 = offset2 + count2; i2 < l2; i2 ++ ) {\n\n\t\t\t\t\tsetTriangle( triangle2, i2 * 3, otherIndexAttr, otherPositionAttr );\n\t\t\t\t\ttriangle2.a.applyMatrix4( matrixToLocal );\n\t\t\t\t\ttriangle2.b.applyMatrix4( matrixToLocal );\n\t\t\t\t\ttriangle2.c.applyMatrix4( matrixToLocal );\n\t\t\t\t\ttriangle2.needsUpdate = true;\n\n\t\t\t\t\tfor ( let i1 = offset1, l1 = offset1 + count1; i1 < l1; i1 ++ ) {\n\n\t\t\t\t\t\tsetTriangle( triangle, i1 * 3, indexAttr, positionAttr );\n\t\t\t\t\t\ttriangle.needsUpdate = true;\n\n\t\t\t\t\t\tif ( intersectsTriangles( triangle, triangle2, i1, i2, depth1, index1, depth2, index2 ) ) {\n\n\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\tif ( intersectsRanges ) {\n\n\t\t\t\tconst originalIntersectsRanges = intersectsRanges;\n\t\t\t\tintersectsRanges = function ( offset1, count1, offset2, count2, depth1, index1, depth2, index2 ) {\n\n\t\t\t\t\tif ( ! originalIntersectsRanges( offset1, count1, offset2, count2, depth1, index1, depth2, index2 ) ) {\n\n\t\t\t\t\t\treturn iterateOverDoubleTriangles( offset1, count1, offset2, count2, depth1, index1, depth2, index2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tintersectsRanges = iterateOverDoubleTriangles;\n\n\t\t\t}\n\n\t\t}\n\n\t\totherBvh.getBoundingBox( aabb2 );\n\t\taabb2.applyMatrix4( matrixToLocal );\n\t\tconst result = this.shapecast( {\n\n\t\t\tintersectsBounds: box => aabb2.intersectsBox( box ),\n\n\t\t\tintersectsRange: ( offset1, count1, contained, depth1, nodeIndex1, box ) => {\n\n\t\t\t\taabb.copy( box );\n\t\t\t\taabb.applyMatrix4( tempMatrix );\n\t\t\t\treturn otherBvh.shapecast( {\n\n\t\t\t\t\tintersectsBounds: box => aabb.intersectsBox( box ),\n\n\t\t\t\t\tintersectsRange: ( offset2, count2, contained, depth2, nodeIndex2 ) => {\n\n\t\t\t\t\t\treturn intersectsRanges( offset1, count1, offset2, count2, depth1, nodeIndex1, depth2, nodeIndex2 );\n\n\t\t\t\t\t},\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} );\n\n\t\ttrianglePool.releasePrimitive( triangle );\n\t\ttrianglePool.releasePrimitive( triangle2 );\n\t\treturn result;\n\n\t}\n\n\t/* Derived Cast Functions */\n\tintersectsBox( box, boxToMesh ) {\n\n\t\tobb.set( box.min, box.max, boxToMesh );\n\t\tobb.needsUpdate = true;\n\n\t\treturn this.shapecast(\n\t\t\t{\n\t\t\t\tintersectsBounds: box => obb.intersectsBox( box ),\n\t\t\t\tintersectsTriangle: tri => obb.intersectsTriangle( tri )\n\t\t\t}\n\t\t);\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.shapecast(\n\t\t\t{\n\t\t\t\tintersectsBounds: box => sphere.intersectsBox( box ),\n\t\t\t\tintersectsTriangle: tri => tri.intersectsSphere( sphere )\n\t\t\t}\n\t\t);\n\n\t}\n\n\tclosestPointToGeometry( otherGeometry, geometryToBvh, target1 = { }, target2 = { }, minThreshold = 0, maxThreshold = Infinity ) {\n\n\t\tif ( ! otherGeometry.boundingBox ) {\n\n\t\t\totherGeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tobb.set( otherGeometry.boundingBox.min, otherGeometry.boundingBox.max, geometryToBvh );\n\t\tobb.needsUpdate = true;\n\n\t\tconst geometry = this.geometry;\n\t\tconst pos = geometry.attributes.position;\n\t\tconst index = geometry.index;\n\t\tconst otherPos = otherGeometry.attributes.position;\n\t\tconst otherIndex = otherGeometry.index;\n\t\tconst triangle = trianglePool.getPrimitive();\n\t\tconst triangle2 = trianglePool.getPrimitive();\n\n\t\tlet tempTarget1 = temp1;\n\t\tlet tempTargetDest1 = temp2;\n\t\tlet tempTarget2 = null;\n\t\tlet tempTargetDest2 = null;\n\n\t\tif ( target2 ) {\n\n\t\t\ttempTarget2 = temp3;\n\t\t\ttempTargetDest2 = temp4;\n\n\t\t}\n\n\t\tlet closestDistance = Infinity;\n\t\tlet closestDistanceTriIndex = null;\n\t\tlet closestDistanceOtherTriIndex = null;\n\t\ttempMatrix.copy( geometryToBvh ).invert();\n\t\tobb2.matrix.copy( tempMatrix );\n\t\tthis.shapecast(\n\t\t\t{\n\n\t\t\t\tboundsTraverseOrder: box => {\n\n\t\t\t\t\treturn obb.distanceToBox( box );\n\n\t\t\t\t},\n\n\t\t\t\tintersectsBounds: ( box, isLeaf, score ) => {\n\n\t\t\t\t\tif ( score < closestDistance && score < maxThreshold ) {\n\n\t\t\t\t\t\t// if we know the triangles of this bounds will be intersected next then\n\t\t\t\t\t\t// save the bounds to use during triangle checks.\n\t\t\t\t\t\tif ( isLeaf ) {\n\n\t\t\t\t\t\t\tobb2.min.copy( box.min );\n\t\t\t\t\t\t\tobb2.max.copy( box.max );\n\t\t\t\t\t\t\tobb2.needsUpdate = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t},\n\n\t\t\t\tintersectsRange: ( offset, count ) => {\n\n\t\t\t\t\tif ( otherGeometry.boundsTree ) {\n\n\t\t\t\t\t\t// if the other geometry has a bvh then use the accelerated path where we use shapecast to find\n\t\t\t\t\t\t// the closest bounds in the other geometry to check.\n\t\t\t\t\t\treturn otherGeometry.boundsTree.shapecast( {\n\t\t\t\t\t\t\tboundsTraverseOrder: box => {\n\n\t\t\t\t\t\t\t\treturn obb2.distanceToBox( box );\n\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\tintersectsBounds: ( box, isLeaf, score ) => {\n\n\t\t\t\t\t\t\t\treturn score < closestDistance && score < maxThreshold;\n\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\tintersectsRange: ( otherOffset, otherCount ) => {\n\n\t\t\t\t\t\t\t\tfor ( let i2 = otherOffset * 3, l2 = ( otherOffset + otherCount ) * 3; i2 < l2; i2 += 3 ) {\n\n\t\t\t\t\t\t\t\t\tsetTriangle( triangle2, i2, otherIndex, otherPos );\n\t\t\t\t\t\t\t\t\ttriangle2.a.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\t\t\t\ttriangle2.b.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\t\t\t\ttriangle2.c.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\t\t\t\ttriangle2.needsUpdate = true;\n\n\t\t\t\t\t\t\t\t\tfor ( let i = offset * 3, l = ( offset + count ) * 3; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t\t\t\tsetTriangle( triangle, i, index, pos );\n\t\t\t\t\t\t\t\t\t\ttriangle.needsUpdate = true;\n\n\t\t\t\t\t\t\t\t\t\tconst dist = triangle.distanceToTriangle( triangle2, tempTarget1, tempTarget2 );\n\t\t\t\t\t\t\t\t\t\tif ( dist < closestDistance ) {\n\n\t\t\t\t\t\t\t\t\t\t\ttempTargetDest1.copy( tempTarget1 );\n\n\t\t\t\t\t\t\t\t\t\t\tif ( tempTargetDest2 ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\ttempTargetDest2.copy( tempTarget2 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tclosestDistance = dist;\n\t\t\t\t\t\t\t\t\t\t\tclosestDistanceTriIndex = i / 3;\n\t\t\t\t\t\t\t\t\t\t\tclosestDistanceOtherTriIndex = i2 / 3;\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// stop traversal if we find a point that's under the given threshold\n\t\t\t\t\t\t\t\t\t\tif ( dist < minThreshold ) {\n\n\t\t\t\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// If no bounds tree then we'll just check every triangle.\n\t\t\t\t\t\tconst triCount = otherIndex ? otherIndex.count : otherPos.count;\n\t\t\t\t\t\tfor ( let i2 = 0, l2 = triCount; i2 < l2; i2 += 3 ) {\n\n\t\t\t\t\t\t\tsetTriangle( triangle2, i2, otherIndex, otherPos );\n\t\t\t\t\t\t\ttriangle2.a.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\t\ttriangle2.b.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\t\ttriangle2.c.applyMatrix4( geometryToBvh );\n\t\t\t\t\t\t\ttriangle2.needsUpdate = true;\n\n\t\t\t\t\t\t\tfor ( let i = offset * 3, l = ( offset + count ) * 3; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\t\tsetTriangle( triangle, i, index, pos );\n\t\t\t\t\t\t\t\ttriangle.needsUpdate = true;\n\n\t\t\t\t\t\t\t\tconst dist = triangle.distanceToTriangle( triangle2, tempTarget1, tempTarget2 );\n\t\t\t\t\t\t\t\tif ( dist < closestDistance ) {\n\n\t\t\t\t\t\t\t\t\ttempTargetDest1.copy( tempTarget1 );\n\n\t\t\t\t\t\t\t\t\tif ( tempTargetDest2 ) {\n\n\t\t\t\t\t\t\t\t\t\ttempTargetDest2.copy( tempTarget2 );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tclosestDistance = dist;\n\t\t\t\t\t\t\t\t\tclosestDistanceTriIndex = i / 3;\n\t\t\t\t\t\t\t\t\tclosestDistanceOtherTriIndex = i2 / 3;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// stop traversal if we find a point that's under the given threshold\n\t\t\t\t\t\t\t\tif ( dist < minThreshold ) {\n\n\t\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t}\n\n\t\t);\n\n\t\ttrianglePool.releasePrimitive( triangle );\n\t\ttrianglePool.releasePrimitive( triangle2 );\n\n\t\tif ( closestDistance === Infinity ) return null;\n\n\t\tif ( ! target1.point ) target1.point = tempTargetDest1.clone();\n\t\telse target1.point.copy( tempTargetDest1 );\n\t\ttarget1.distance = closestDistance,\n\t\ttarget1.faceIndex = closestDistanceTriIndex;\n\n\t\tif ( target2 ) {\n\n\t\t\tif ( ! target2.point ) target2.point = tempTargetDest2.clone();\n\t\t\telse target2.point.copy( tempTargetDest2 );\n\t\t\ttarget2.point.applyMatrix4( tempMatrix );\n\t\t\ttempTargetDest1.applyMatrix4( tempMatrix );\n\t\t\ttarget2.distance = tempTargetDest1.sub( target2.point ).length();\n\t\t\ttarget2.faceIndex = closestDistanceOtherTriIndex;\n\n\t\t}\n\n\t\treturn target1;\n\n\t}\n\n\tclosestPointToPoint( point, target = { }, minThreshold = 0, maxThreshold = Infinity ) {\n\n\t\t// early out if under minThreshold\n\t\t// skip checking if over maxThreshold\n\t\t// set minThreshold = maxThreshold to quickly check if a point is within a threshold\n\t\t// returns Infinity if no value found\n\t\tconst minThresholdSq = minThreshold * minThreshold;\n\t\tconst maxThresholdSq = maxThreshold * maxThreshold;\n\t\tlet closestDistanceSq = Infinity;\n\t\tlet closestDistanceTriIndex = null;\n\t\tthis.shapecast(\n\n\t\t\t{\n\n\t\t\t\tboundsTraverseOrder: box => {\n\n\t\t\t\t\ttemp.copy( point ).clamp( box.min, box.max );\n\t\t\t\t\treturn temp.distanceToSquared( point );\n\n\t\t\t\t},\n\n\t\t\t\tintersectsBounds: ( box, isLeaf, score ) => {\n\n\t\t\t\t\treturn score < closestDistanceSq && score < maxThresholdSq;\n\n\t\t\t\t},\n\n\t\t\t\tintersectsTriangle: ( tri, triIndex ) => {\n\n\t\t\t\t\ttri.closestPointToPoint( point, temp );\n\t\t\t\t\tconst distSq = point.distanceToSquared( temp );\n\t\t\t\t\tif ( distSq < closestDistanceSq ) {\n\n\t\t\t\t\t\ttemp1.copy( temp );\n\t\t\t\t\t\tclosestDistanceSq = distSq;\n\t\t\t\t\t\tclosestDistanceTriIndex = triIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( distSq < minThresholdSq ) {\n\n\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t}\n\n\t\t);\n\n\t\tif ( closestDistanceSq === Infinity ) return null;\n\n\t\tconst closestDistance = Math.sqrt( closestDistanceSq );\n\n\t\tif ( ! target.point ) target.point = temp1.clone();\n\t\telse target.point.copy( temp1 );\n\t\ttarget.distance = closestDistance,\n\t\ttarget.faceIndex = closestDistanceTriIndex;\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\ttarget.makeEmpty();\n\n\t\tconst roots = this._roots;\n\t\troots.forEach( buffer => {\n\n\t\t\tarrayToBox( 0, new Float32Array( buffer ), tempBox );\n\t\t\ttarget.union( tempBox );\n\n\t\t} );\n\n\t\treturn target;\n\n\t}\n\n}\n\n// Deprecation\nconst originalRaycast = MeshBVH.prototype.raycast;\nMeshBVH.prototype.raycast = function ( ...args ) {\n\n\tif ( args[ 0 ].isMesh ) {\n\n\t\tconsole.warn( 'MeshBVH: The function signature and results frame for \"raycast\" has changed. See docs for new signature.' );\n\t\tconst [\n\t\t\tmesh, raycaster, ray, intersects,\n\t\t] = args;\n\n\t\tconst results = originalRaycast.call( this, ray, mesh.material );\n\t\tresults.forEach( hit => {\n\n\t\t\thit = convertRaycastIntersect( hit, mesh, raycaster );\n\t\t\tif ( hit ) {\n\n\t\t\t\tintersects.push( hit );\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn intersects;\n\n\t} else {\n\n\t\treturn originalRaycast.apply( this, args );\n\n\t}\n\n};\n\nconst originalRaycastFirst = MeshBVH.prototype.raycastFirst;\nMeshBVH.prototype.raycastFirst = function ( ...args ) {\n\n\tif ( args[ 0 ].isMesh ) {\n\n\t\tconsole.warn( 'MeshBVH: The function signature and results frame for \"raycastFirst\" has changed. See docs for new signature.' );\n\t\tconst [\n\t\t\tmesh, raycaster, ray,\n\t\t] = args;\n\n\t\treturn convertRaycastIntersect( originalRaycastFirst.call( this, ray, mesh.material ), mesh, raycaster );\n\n\t} else {\n\n\t\treturn originalRaycastFirst.apply( this, args );\n\n\t}\n\n};\n\nconst originalClosestPointToPoint = MeshBVH.prototype.closestPointToPoint;\nMeshBVH.prototype.closestPointToPoint = function ( ...args ) {\n\n\n\tif ( args[ 0 ].isMesh ) {\n\n\t\tconsole.warn( 'MeshBVH: The function signature and results frame for \"closestPointToPoint\" has changed. See docs for new signature.' );\n\n\t\targs.unshift();\n\n\t\tconst target = args[ 1 ];\n\t\tconst result = {};\n\t\targs[ 1 ] = result;\n\n\t\toriginalClosestPointToPoint.apply( this, args );\n\n\t\tif ( target ) {\n\n\t\t\ttarget.copy( result.point );\n\n\t\t}\n\n\t\treturn result.distance;\n\n\t} else {\n\n\t\treturn originalClosestPointToPoint.apply( this, args );\n\n\t}\n\n};\n\nconst originalClosestPointToGeometry = MeshBVH.prototype.closestPointToGeometry;\nMeshBVH.prototype.closestPointToGeometry = function ( ...args ) {\n\n\tconst target1 = args[ 2 ];\n\tconst target2 = args[ 3 ];\n\tif ( target1 && target1.isVector3 || target2 && target2.isVector3 ) {\n\n\t\tconsole.warn( 'MeshBVH: The function signature and results frame for \"closestPointToGeometry\" has changed. See docs for new signature.' );\n\n\t\tconst result1 = {};\n\t\tconst result2 = {};\n\t\tconst geometryToBvh = args[ 1 ];\n\t\targs[ 2 ] = result1;\n\t\targs[ 3 ] = result2;\n\n\t\toriginalClosestPointToGeometry.apply( this, args );\n\n\t\tif ( target1 ) {\n\n\t\t\ttarget1.copy( result1.point );\n\n\t\t}\n\n\t\tif ( target2 ) {\n\n\t\t\ttarget2.copy( result2.point ).applyMatrix4( geometryToBvh );\n\n\t\t}\n\n\t\treturn result1.distance;\n\n\t} else {\n\n\t\treturn originalClosestPointToGeometry.apply( this, args );\n\n\t}\n\n};\n\nconst originalRefit = MeshBVH.prototype.refit;\nMeshBVH.prototype.refit = function ( ...args ) {\n\n\tconst nodeIndices = args[ 0 ];\n\tconst terminationIndices = args[ 1 ];\n\tif ( terminationIndices && ( terminationIndices instanceof Set || Array.isArray( terminationIndices ) ) ) {\n\n\t\tconsole.warn( 'MeshBVH: The function signature for \"refit\" has changed. See docs for new signature.' );\n\n\t\tconst newNodeIndices = new Set();\n\t\tterminationIndices.forEach( v => newNodeIndices.add( v ) );\n\t\tif ( nodeIndices ) {\n\n\t\t\tnodeIndices.forEach( v => newNodeIndices.add( v ) );\n\n\t\t}\n\n\t\toriginalRefit.call( this, newNodeIndices );\n\n\t} else {\n\n\t\toriginalRefit.apply( this, args );\n\n\t}\n\n};\n\n[\n\t'intersectsGeometry',\n\t'shapecast',\n\t'intersectsBox',\n\t'intersectsSphere',\n].forEach( name => {\n\n\tconst originalFunc = MeshBVH.prototype[ name ];\n\tMeshBVH.prototype[ name ] = function ( ...args ) {\n\n\t\tif ( args[ 0 ] === null || args[ 0 ].isMesh ) {\n\n\t\t\targs.shift();\n\t\t\tconsole.warn( `MeshBVH: The function signature for \"${ name }\" has changed and no longer takes Mesh. See docs for new signature.` );\n\n\t\t}\n\n\t\treturn originalFunc.apply( this, args );\n\n\t};\n\n} );\n","export class AttributeCallbackQueue {\n  static block() {\n    this._blocked = true;\n  }\n  static runOrEnqueue(callback) {\n    if (this._blocked) {\n      this._lastCallback = callback;\n    } else {\n      callback();\n    }\n  }\n  static unblock() {\n    this._blocked = false;\n    if (this._lastCallback) {\n      this._lastCallback();\n      this._lastCallback = void 0;\n    }\n  }\n}\nAttributeCallbackQueue._blocked = true;\n","import { CoreObject } from \"../Object\";\nimport { AttributeCallbackQueue } from \"./AttributeCallbackQueue\";\nexport function _makeAttribReactiveBaseVector(object, attribName, props, callback) {\n  const attributesDict = CoreObject.attributesDictionary(object);\n  const attributesPreviousValuesDict = CoreObject.attributesPreviousValuesDictionary(object);\n  const proxy = {\n    value: attributesDict[attribName].clone(),\n    previousValue: attributesDict[attribName]\n  };\n  const currentVec = attributesDict[attribName];\n  for (let prop of props) {\n    Object.defineProperties(currentVec, {\n      [prop]: {\n        get: function() {\n          return proxy.value[prop];\n        },\n        set: function(componentVal) {\n          if (componentVal != proxy.value[prop]) {\n            proxy.previousValue = proxy.value;\n            proxy.value[prop] = componentVal;\n            const c = function() {\n              callback(proxy);\n            };\n            AttributeCallbackQueue.runOrEnqueue(c);\n          }\n          return componentVal;\n        },\n        configurable: true\n      }\n    });\n  }\n  Object.defineProperties(attributesPreviousValuesDict, {\n    [attribName]: {\n      get: function() {\n        return proxy.previousValue;\n      },\n      configurable: true\n    }\n  });\n}\n","import { Vector4 } from \"three\";\nimport { CoreObject } from \"../Object\";\nimport { _makeAttribReactiveBaseVector } from \"./_BaseVector\";\nconst PROPS = [\"x\", \"y\", \"z\", \"w\"];\nexport function makeAttribReactiveVector4(object, attribName, callback) {\n  const attributesDict = CoreObject.attributesDictionary(object);\n  if (attributesDict[attribName] == null) {\n    attributesDict[attribName] = new Vector4();\n  }\n  _makeAttribReactiveBaseVector(object, attribName, PROPS, callback);\n}\n","import { Vector3 } from \"three\";\nimport { CoreObject } from \"../Object\";\nimport { _makeAttribReactiveBaseVector } from \"./_BaseVector\";\nconst PROPS = [\"x\", \"y\", \"z\"];\nexport function makeAttribReactiveVector3(object, attribName, callback) {\n  const attributesDict = CoreObject.attributesDictionary(object);\n  if (attributesDict[attribName] == null) {\n    attributesDict[attribName] = new Vector3();\n  }\n  _makeAttribReactiveBaseVector(object, attribName, PROPS, callback);\n}\n","import { Vector2 } from \"three\";\nimport { CoreObject } from \"../Object\";\nimport { _makeAttribReactiveBaseVector } from \"./_BaseVector\";\nconst PROPS = [\"x\", \"y\"];\nexport function makeAttribReactiveVector2(object, attribName, callback) {\n  const attributesDict = CoreObject.attributesDictionary(object);\n  if (attributesDict[attribName] == null) {\n    attributesDict[attribName] = new Vector2();\n  }\n  _makeAttribReactiveBaseVector(object, attribName, PROPS, callback);\n}\n","import { Vector2 } from \"three\";\nimport { Vector3 } from \"three\";\nimport { Vector4 } from \"three\";\nimport { Color } from \"three\";\nimport { CoreGeometry } from \"./Geometry\";\nimport { Attribute, CoreAttribute } from \"./Attribute\";\nimport { CoreConstant, AttribType } from \"./Constant\";\nimport { CoreMaterial } from \"./Material\";\nimport { CoreString } from \"../String\";\nimport { CoreEntity } from \"./Entity\";\nimport { CoreType } from \"../Type\";\nimport { ObjectUtils } from \"../ObjectUtils\";\nimport { ArrayUtils } from \"../ArrayUtils\";\nimport { ThreeMeshBVHHelper } from \"../../engine/operations/sop/utils/Bvh/ThreeMeshBVHHelper\";\nimport { makeAttribReactiveVector4 } from \"./attribute/Vector4\";\nimport { makeAttribReactiveVector3 } from \"./attribute/Vector3\";\nimport { makeAttribReactiveVector2 } from \"./attribute/Vector2\";\nimport { makeAttribReactiveSimple } from \"./attribute/Simple\";\nimport { AttributeCallbackQueue } from \"./attribute/AttributeCallbackQueue\";\nvar PropertyName = /* @__PURE__ */ ((PropertyName2) => {\n  PropertyName2[\"NAME\"] = \"name\";\n  PropertyName2[\"POSITION\"] = \"position\";\n  return PropertyName2;\n})(PropertyName || {});\nconst ATTRIBUTES = \"attributes\";\nconst ATTRIBUTES_PREVIOUS_VALUES = \"attributesPreviousValues\";\nfunction _convertArrayToVector(value) {\n  switch (value.length) {\n    case 1:\n      return value[0];\n    case 2:\n      return new Vector2(value[0], value[1]);\n    case 3:\n      return new Vector3(value[0], value[1], value[2]);\n    case 4:\n      return new Vector4(value[0], value[1], value[2], value[3]);\n  }\n}\nexport class CoreObject extends CoreEntity {\n  constructor(_object, index) {\n    super(index);\n    this._object = _object;\n  }\n  dispose() {\n  }\n  object() {\n    return this._object;\n  }\n  geometry() {\n    return this._object.geometry;\n  }\n  coreGeometry() {\n    const geo = this.geometry();\n    if (geo) {\n      return new CoreGeometry(geo);\n    } else {\n      return null;\n    }\n  }\n  points() {\n    var _a;\n    return ((_a = this.coreGeometry()) == null ? void 0 : _a.points()) || [];\n  }\n  pointsFromGroup(group) {\n    if (group) {\n      const indices = CoreString.indices(group);\n      if (indices) {\n        const points = this.points();\n        return ArrayUtils.compact(indices.map((i) => points[i]));\n      } else {\n        return [];\n      }\n    } else {\n      return this.points();\n    }\n  }\n  static isInGroup(groupString, coreObject) {\n    const group = groupString.trim();\n    if (group.length == 0) {\n      return true;\n    }\n    if (coreObject.object.name == group) {\n      return true;\n    }\n    if (CoreString.matchMask(groupString, coreObject.name())) {\n      return true;\n    }\n    const elements = group.split(\"=\");\n    const attribNameWithPrefix = elements[0];\n    if (attribNameWithPrefix[0] == \"@\") {\n      const attribName = attribNameWithPrefix.substring(1);\n      const expectedAttribValue = elements[1];\n      const currentAttribValue = coreObject.attribValue(attribName);\n      return expectedAttribValue == currentAttribValue;\n    }\n    return false;\n  }\n  computeVertexNormals() {\n    var _a;\n    (_a = this.coreGeometry()) == null ? void 0 : _a.computeVertexNormals();\n  }\n  static setAttribute(object, attribName, value) {\n    this.addAttribute(object, attribName, value);\n  }\n  static addAttribute(object, attribName, value) {\n    if (CoreType.isArray(value)) {\n      const convertedValue = _convertArrayToVector(value);\n      if (!convertedValue) {\n        const message = `attribute_value invalid`;\n        console.error(message, value);\n        throw new Error(message);\n      }\n    }\n    const dict = this.attributesDictionary(object);\n    const currentValue = dict[attribName];\n    if (currentValue != null) {\n      if (CoreType.isVector(currentValue) && CoreType.isVector(value)) {\n        AttributeCallbackQueue.block();\n        if (currentValue instanceof Vector2 && value instanceof Vector2) {\n          currentValue.copy(value);\n        }\n        if (currentValue instanceof Vector3 && value instanceof Vector3) {\n          currentValue.copy(value);\n        }\n        if (currentValue instanceof Vector4 && value instanceof Vector4) {\n          currentValue.copy(value);\n        }\n        AttributeCallbackQueue.unblock();\n        return;\n      }\n    }\n    if (CoreType.isVector(value)) {\n      dict[attribName] = value.clone();\n    } else {\n      dict[attribName] = value;\n    }\n  }\n  addAttribute(name, value) {\n    CoreObject.addAttribute(this._object, name, value);\n  }\n  addNumericAttrib(name, value) {\n    this.addAttribute(name, value);\n  }\n  setAttribValue(name, value) {\n    this.addAttribute(name, value);\n  }\n  addNumericVertexAttrib(name, size, defaultValue) {\n    var _a;\n    if (defaultValue == null) {\n      defaultValue = CoreAttribute.default_value(size);\n    }\n    (_a = this.coreGeometry()) == null ? void 0 : _a.addNumericAttrib(name, size, defaultValue);\n  }\n  static attributesDictionary(object) {\n    return object.userData[ATTRIBUTES] || this._createAttributesDictionaryIfNone(object);\n  }\n  static attributesPreviousValuesDictionary(object) {\n    return object.userData[ATTRIBUTES_PREVIOUS_VALUES] || this._createAttributesPreviousValuesDictionaryIfNone(object);\n  }\n  static _createAttributesDictionaryIfNone(object) {\n    if (!object.userData[ATTRIBUTES]) {\n      return object.userData[ATTRIBUTES] = {};\n    }\n  }\n  static _createAttributesPreviousValuesDictionaryIfNone(object) {\n    if (!object.userData[ATTRIBUTES_PREVIOUS_VALUES]) {\n      return object.userData[ATTRIBUTES_PREVIOUS_VALUES] = {};\n    }\n  }\n  _attributesDictionary() {\n    return CoreObject.attributesDictionary(this._object);\n  }\n  attributeNames() {\n    return this.attribNames();\n  }\n  static attribNames(object) {\n    return Object.keys(CoreObject.attributesDictionary(object));\n  }\n  attribNames() {\n    return CoreObject.attribNames(this._object);\n  }\n  hasAttrib(attribName) {\n    return CoreObject.hasAttrib(this._object, attribName);\n  }\n  static hasAttrib(object, attribName) {\n    return attribName in this.attributesDictionary(object);\n  }\n  renameAttrib(old_name, new_name) {\n    const current_value = this.attribValue(old_name);\n    if (current_value != null) {\n      this.addAttribute(new_name, current_value);\n      this.deleteAttribute(old_name);\n    } else {\n      console.warn(`attribute ${old_name} not found`);\n    }\n  }\n  deleteAttribute(name) {\n    delete this._attributesDictionary()[name];\n  }\n  static deleteAttribute(object, attribName) {\n    delete this.attributesDictionary(object)[attribName];\n  }\n  static attribValue(object, attribName, index = 0, target) {\n    function _attribFromProperty() {\n      if (attribName == \"name\" /* NAME */) {\n        return object.name;\n      }\n      if (attribName == \"position\" /* POSITION */) {\n        return object.position.toArray();\n      }\n    }\n    if (attribName === Attribute.OBJECT_INDEX) {\n      return index;\n    }\n    if (object.userData) {\n      const dict = this.attributesDictionary(object);\n      const val = dict[attribName];\n      if (val == null) {\n        return _attribFromProperty();\n      } else {\n        if (CoreType.isVector(val) && target) {\n          if (val instanceof Vector3 && target instanceof Vector3) {\n            return target.copy(val);\n          }\n          if (val instanceof Vector2 && target instanceof Vector2) {\n            return target.copy(val);\n          }\n          if (val instanceof Vector4 && target instanceof Vector4) {\n            return target.copy(val);\n          }\n        }\n        if (CoreType.isArray(val) && target) {\n          target.fromArray(val);\n          return target;\n        }\n      }\n      return val;\n    }\n    return _attribFromProperty();\n  }\n  static previousAttribValue(object, attribName) {\n    const dict = this.attributesPreviousValuesDictionary(object);\n    return dict[attribName];\n  }\n  static stringAttribValue(object, attribName, index = 0) {\n    const str = this.attribValue(object, attribName, index);\n    if (str != null) {\n      if (CoreType.isString(str)) {\n        return str;\n      } else {\n        return `${str}`;\n      }\n    }\n  }\n  static makeAttribReactive(object, attribName, callback) {\n    const attributesDict = this.attributesDictionary(object);\n    const currentValue = attributesDict[attribName];\n    if (currentValue instanceof Vector4) {\n      return makeAttribReactiveVector4(object, attribName, callback);\n    }\n    if (currentValue instanceof Vector3) {\n      return makeAttribReactiveVector3(object, attribName, callback);\n    }\n    if (currentValue instanceof Vector2) {\n      return makeAttribReactiveVector2(object, attribName, callback);\n    }\n    return makeAttribReactiveSimple(object, attribName, callback);\n  }\n  attribValue(attribName, target) {\n    return CoreObject.attribValue(this._object, attribName, this._index, target);\n  }\n  stringAttribValue(name) {\n    return CoreObject.stringAttribValue(this._object, name, this._index);\n  }\n  name() {\n    return this.attribValue(\"name\" /* NAME */);\n  }\n  humanType() {\n    return CoreConstant.CONSTRUCTOR_NAMES_BY_CONSTRUCTOR_NAME[this._object.constructor.name];\n  }\n  attribTypes() {\n    const h = {};\n    for (let attrib_name of this.attribNames()) {\n      const type = this.attribType(attrib_name);\n      if (type != null) {\n        h[attrib_name] = type;\n      }\n    }\n    return h;\n  }\n  attribType(name) {\n    const val = this.attribValue(name);\n    if (CoreType.isString(val)) {\n      return AttribType.STRING;\n    } else {\n      return AttribType.NUMERIC;\n    }\n  }\n  attribSizes() {\n    const h = {};\n    for (let attrib_name of this.attribNames()) {\n      const size = this.attribSize(attrib_name);\n      if (size != null) {\n        h[attrib_name] = size;\n      }\n    }\n    return h;\n  }\n  attribSize(name) {\n    const val = this.attribValue(name);\n    if (val == null) {\n      return null;\n    }\n    return CoreAttribute.attribSizeFromValue(val);\n  }\n  clone() {\n    return CoreObject.clone(this._object);\n  }\n  static clone(srcObject) {\n    const clonedObject = srcObject.clone();\n    var sourceLookup = /* @__PURE__ */ new Map();\n    var cloneLookup = /* @__PURE__ */ new Map();\n    CoreObject.parallelTraverse(srcObject, clonedObject, function(sourceNode, clonedNode) {\n      sourceLookup.set(clonedNode, sourceNode);\n      cloneLookup.set(sourceNode, clonedNode);\n    });\n    clonedObject.traverse(function(node) {\n      const srcNode = sourceLookup.get(node);\n      const meshNode = node;\n      if (meshNode.geometry && srcNode && srcNode.geometry) {\n        const srcNodeGeometry = srcNode.geometry;\n        meshNode.geometry = CoreGeometry.clone(srcNodeGeometry);\n        ThreeMeshBVHHelper.copyBVH(meshNode, srcNode);\n      }\n      if (meshNode.material) {\n        CoreMaterial.applyCustomMaterials(node, meshNode.material);\n        const material_with_color = meshNode.material;\n        if (material_with_color.color == null) {\n          material_with_color.color = new Color(1, 1, 1);\n        }\n      }\n      if (srcNode) {\n        if (srcNode.userData) {\n          node.userData = ObjectUtils.cloneDeep(srcNode.userData);\n        }\n        const src_node_with_animations = srcNode;\n        if (src_node_with_animations.animations) {\n          node.animations = src_node_with_animations.animations.map((animation) => animation.clone());\n        }\n        const skinned_node = node;\n        if (skinned_node.isSkinnedMesh) {\n          var clonedMesh = skinned_node;\n          var sourceMesh = srcNode;\n          var sourceBones = sourceMesh.skeleton.bones;\n          clonedMesh.skeleton = sourceMesh.skeleton.clone();\n          clonedMesh.bindMatrix.copy(sourceMesh.bindMatrix);\n          const new_bones = sourceBones.map(function(bone) {\n            return cloneLookup.get(bone);\n          });\n          clonedMesh.skeleton.bones = new_bones;\n          clonedMesh.bind(clonedMesh.skeleton, clonedMesh.bindMatrix);\n        }\n      }\n    });\n    return clonedObject;\n  }\n  static parallelTraverse(a, b, callback) {\n    callback(a, b);\n    for (var i = 0; i < a.children.length; i++) {\n      const childA = a.children[i];\n      const childB = b.children[i];\n      if (childA && childB) {\n        this.parallelTraverse(childA, childB, callback);\n      }\n    }\n  }\n}\n","import { CoreObject } from \"../Object\";\nexport function makeAttribReactiveSimple(object, attribName, callback) {\n  const attributesDict = CoreObject.attributesDictionary(object);\n  const attributesPreviousValuesDict = CoreObject.attributesPreviousValuesDictionary(object);\n  if (attributesDict[attribName] == null) {\n    attributesDict[attribName] = 0;\n  }\n  const proxy = {\n    value: attributesDict[attribName],\n    previousValue: attributesDict[attribName]\n  };\n  Object.defineProperties(attributesDict, {\n    [attribName]: {\n      get: function() {\n        return proxy.value;\n      },\n      set: function(x) {\n        if (x != proxy.value) {\n          proxy.previousValue = proxy.value;\n          proxy.value = x;\n          callback(proxy);\n        }\n        return proxy.value;\n      },\n      configurable: true\n    }\n  });\n  Object.defineProperties(attributesPreviousValuesDict, {\n    [attribName]: {\n      get: function() {\n        return proxy.previousValue;\n      },\n      configurable: true\n    }\n  });\n}\n","import { MeshBVH, acceleratedRaycast, CENTER } from \"./three-mesh-bvh\";\nexport class ThreeMeshBVHHelper {\n  static assignBVH(mesh, bvh) {\n    mesh.raycast = acceleratedRaycast;\n    mesh.geometry.boundsTree = bvh;\n  }\n  static assignDefaultBVHIfNone(mesh) {\n    let bvh = mesh.geometry.boundsTree || this.defaultBVH(mesh);\n    this.assignBVH(mesh, bvh);\n  }\n  static createBVH(mesh, options) {\n    return new MeshBVH(mesh.geometry, options);\n  }\n  static defaultBVH(mesh) {\n    return this.createBVH(mesh, { strategy: CENTER, maxLeafTris: 10, maxDepth: 40, verbose: false });\n  }\n  static copyBVH(meshDest, meshSrc) {\n    const existingBVH = meshSrc.geometry.boundsTree;\n    if (existingBVH) {\n      meshDest.raycast = acceleratedRaycast;\n      this.assignBVH(meshDest, existingBVH);\n    }\n  }\n}\n","import { Vector3 } from \"three\";\nimport { Box3 } from \"three\";\nimport { CoreObject } from \"./Object\";\nimport { CoreGeometry } from \"./Geometry\";\nimport { CoreAttribute } from \"./Attribute\";\nimport { CoreString } from \"../String\";\nimport { CoreConstant, objectTypeFromConstructor, AttribType } from \"./Constant\";\nimport { CoreType } from \"../Type\";\nimport { ArrayUtils } from \"../ArrayUtils\";\nimport { Poly } from \"../../engine/Poly\";\nimport { CoreEntity } from \"./Entity\";\nexport class CoreGroup extends CoreEntity {\n  constructor() {\n    super(0);\n    this._objects = [];\n    this._objectsWithGeo = [];\n    this._center = new Vector3();\n    this._size = new Vector3();\n    this._attributes = {};\n    this.touch();\n  }\n  dispose() {\n    this._objects = [];\n    this._objectsWithGeo = [];\n    if (this._coreObjects) {\n      for (let coreObject of this._coreObjects) {\n        coreObject.dispose();\n      }\n      this._coreObjects = void 0;\n    }\n    if (this._coreGeometries) {\n      for (let coreGeometry of this._coreGeometries) {\n        coreGeometry.dispose();\n      }\n      this._coreGeometries = void 0;\n    }\n  }\n  timestamp() {\n    return this._timestamp;\n  }\n  touch() {\n    const performance = Poly.performance.performanceManager();\n    this._timestamp = performance.now();\n    this.reset();\n  }\n  reset() {\n    this.resetBoundingBox();\n    this._coreGeometries = void 0;\n    this._coreObjects = void 0;\n  }\n  resetBoundingBox() {\n    this._boundingBox = void 0;\n  }\n  clone() {\n    const coreGroup = new CoreGroup();\n    if (this._objects) {\n      const objects = [];\n      for (let object of this._objects) {\n        objects.push(CoreObject.clone(object));\n      }\n      coreGroup.setObjects(objects);\n    }\n    const attribNames = this.attribNames();\n    for (let attribName of attribNames) {\n      const value = this.attribValue(attribName);\n      coreGroup.addAttribute(attribName, value);\n    }\n    return coreGroup;\n  }\n  setObjects(objects) {\n    this._objects = objects;\n    this._objectsWithGeo = objects.filter((obj) => obj.geometry != null);\n    this.touch();\n  }\n  objects() {\n    return this._objects;\n  }\n  objectsWithGeo() {\n    return this._objectsWithGeo;\n  }\n  coreObjects() {\n    return this._coreObjects = this._coreObjects || this._create_core_objects();\n  }\n  _create_core_objects() {\n    if (this._objects) {\n      return this._objects.map((object, i) => new CoreObject(object, i));\n    }\n    return [];\n  }\n  objectsData() {\n    if (this._objects) {\n      return this._objects.map((object) => this._objectData(object));\n    }\n    return [];\n  }\n  _objectData(object) {\n    let points_count = 0;\n    if (object.geometry) {\n      points_count = CoreGeometry.pointsCount(object.geometry);\n    }\n    const objectType = objectTypeFromConstructor(object.constructor);\n    return {\n      type: objectType,\n      name: object.name,\n      children_count: object.children.length,\n      points_count\n    };\n  }\n  geometries() {\n    const list = [];\n    for (let core_object of this.coreObjects()) {\n      const geometry = core_object.object().geometry;\n      if (geometry) {\n        list.push(geometry);\n      }\n    }\n    return list;\n  }\n  coreGeometries() {\n    return this._coreGeometries = this._coreGeometries || this._createCoreGeometries();\n  }\n  _createCoreGeometries() {\n    const list = [];\n    for (let geometry of this.geometries()) {\n      list.push(new CoreGeometry(geometry));\n    }\n    return list;\n  }\n  static geometryFromObject(object) {\n    if (object.isMesh || object.isLine || object.isPoints) {\n      return object.geometry;\n    }\n    return null;\n  }\n  faces() {\n    const faces = [];\n    for (let object of this.objectsWithGeo()) {\n      if (object.geometry) {\n        const coreGeo = new CoreGeometry(object.geometry);\n        const geoFaces = coreGeo.faces();\n        for (let geoFace of geoFaces) {\n          geoFace.applyMatrix4(object.matrix);\n          faces.push(geoFace);\n        }\n      }\n    }\n    return faces;\n  }\n  points() {\n    return this.coreGeometries().map((g) => g.points()).flat();\n  }\n  pointsCount() {\n    return ArrayUtils.sum(this.coreGeometries().map((g) => g.pointsCount()));\n  }\n  totalPointsCount() {\n    if (this._objects) {\n      let sum = 0;\n      for (let object of this._objects) {\n        object.traverse((object2) => {\n          const geometry = object2.geometry;\n          if (geometry) {\n            sum += CoreGeometry.pointsCount(geometry);\n          }\n        });\n      }\n      return sum;\n    } else {\n      return 0;\n    }\n  }\n  pointsFromGroup(group) {\n    if (group) {\n      const indices = CoreString.indices(group);\n      const points = this.points();\n      return ArrayUtils.compact(indices.map((i) => points[i]));\n    } else {\n      return this.points();\n    }\n  }\n  static _fromObjects(objects) {\n    const core_group = new CoreGroup();\n    core_group.setObjects(objects);\n    return core_group;\n  }\n  objectsFromGroup(groupName) {\n    return this.coreObjectsFromGroup(groupName).map((co) => co.object());\n  }\n  coreObjectsFromGroup(groupString) {\n    groupString = groupString.trim();\n    if (groupString !== \"\") {\n      const index = parseInt(groupString);\n      if (!CoreType.isNaN(index)) {\n        return ArrayUtils.compact([this.coreObjects()[index]]);\n      } else {\n        return this.coreObjects().filter((coreObject) => {\n          return CoreObject.isInGroup(groupString, coreObject);\n        });\n      }\n    } else {\n      return this.coreObjects();\n    }\n  }\n  boundingBox(forceUpdate = false) {\n    if (forceUpdate) {\n      return this._boundingBox = this._computeBoundingBox();\n    }\n    return this._boundingBox = this._boundingBox || this._computeBoundingBox();\n  }\n  center() {\n    this.boundingBox().getCenter(this._center);\n    return this._center;\n  }\n  size() {\n    this.boundingBox().getSize(this._size);\n    return this._size;\n  }\n  _computeBoundingBox() {\n    let bbox;\n    if (this._objects) {\n      for (let object of this._objects) {\n        object.traverse((childObject) => {\n          if (!bbox) {\n            const geometry = childObject.geometry;\n            if (geometry) {\n              childObject.updateWorldMatrix(true, false);\n              geometry.computeBoundingBox();\n              if (geometry.boundingBox) {\n                bbox = geometry.boundingBox.clone();\n                bbox.applyMatrix4(childObject.matrixWorld);\n              }\n            }\n          }\n        });\n      }\n      if (bbox) {\n        for (let object of this._objects) {\n          if (bbox) {\n            bbox.expandByObject(object);\n          }\n        }\n      }\n    }\n    bbox = bbox || new Box3(new Vector3(-1, -1, -1), new Vector3(1, 1, 1));\n    return bbox;\n  }\n  computeVertexNormals() {\n    for (let object of this.coreObjects()) {\n      object.computeVertexNormals();\n    }\n  }\n  hasAttrib(name) {\n    let first_geometry;\n    if ((first_geometry = this.coreGeometries()[0]) != null) {\n      return first_geometry.hasAttrib(name);\n    } else {\n      return false;\n    }\n  }\n  geoAttribType(name) {\n    const first_core_geometry = this.coreGeometries()[0];\n    if (first_core_geometry != null) {\n      return first_core_geometry.attribType(name);\n    } else {\n      return null;\n    }\n  }\n  objectAttribType(name) {\n    const first_core_object = this.coreObjects()[0];\n    if (first_core_object != null) {\n      return first_core_object.attribType(name);\n    } else {\n      return null;\n    }\n  }\n  renameAttrib(old_name, new_name, attrib_class) {\n    switch (attrib_class) {\n      case CoreConstant.ATTRIB_CLASS.VERTEX:\n        if (this.hasAttrib(old_name)) {\n          if (this._objects) {\n            for (let object of this._objects) {\n              object.traverse((child) => {\n                const geometry = CoreGroup.geometryFromObject(child);\n                if (geometry) {\n                  const core_geometry = new CoreGeometry(geometry);\n                  core_geometry.renameAttrib(old_name, new_name);\n                }\n              });\n            }\n          }\n        }\n        break;\n      case CoreConstant.ATTRIB_CLASS.OBJECT:\n        if (this.hasAttrib(old_name)) {\n          if (this._objects) {\n            for (let object of this._objects) {\n              object.traverse((child) => {\n                const core_object = new CoreObject(child, 0);\n                core_object.renameAttrib(old_name, new_name);\n              });\n            }\n          }\n        }\n        break;\n    }\n  }\n  geoAttribNames() {\n    const firstGeometry = this.coreGeometries()[0];\n    if (firstGeometry) {\n      return firstGeometry.attribNames();\n    } else {\n      return [];\n    }\n  }\n  objectAttribNames() {\n    const firstObject = this.coreObjects()[0];\n    if (firstObject) {\n      return firstObject.attribNames();\n    } else {\n      return [];\n    }\n  }\n  geoAttribNamesMatchingMask(masksString) {\n    return CoreAttribute.attribNamesMatchingMask(masksString, this.geoAttribNames());\n  }\n  objectAttribNamesMatchingMask(masksString) {\n    return CoreAttribute.attribNamesMatchingMask(masksString, this.objectAttribNames());\n  }\n  attribNamesMatchingMask(masksString) {\n    return CoreAttribute.attribNamesMatchingMask(masksString, this.attribNames());\n  }\n  geoAttribSizes() {\n    const firstGeometry = this.coreGeometries()[0];\n    if (firstGeometry) {\n      return firstGeometry.attribSizes();\n    } else {\n      return {};\n    }\n  }\n  objectAttribSizes() {\n    const firstObject = this.coreObjects()[0];\n    if (firstObject) {\n      return firstObject.attribSizes();\n    } else {\n      return {};\n    }\n  }\n  geoAttribSize(attrib_name) {\n    const firstGeometry = this.coreGeometries()[0];\n    if (firstGeometry) {\n      return firstGeometry.attribSize(attrib_name);\n    } else {\n      return 0;\n    }\n  }\n  addGeoNumericVertexAttrib(name, size, defaultValue) {\n    if (defaultValue == null) {\n      defaultValue = CoreAttribute.default_value(size);\n    }\n    for (let coreGeometry of this.coreGeometries()) {\n      coreGeometry.addNumericAttrib(name, size, defaultValue);\n    }\n  }\n  addAttribute(attribName, attribValue) {\n    this._attributesDictionary()[attribName] = attribValue;\n  }\n  deleteAttribute(name) {\n    delete this._attributesDictionary()[name];\n  }\n  attribValue(attribName) {\n    return this._attributes && this._attributes[attribName];\n  }\n  attribNames() {\n    return this._attributes ? Object.keys(this._attributes) : [];\n  }\n  attribType(name) {\n    const val = this.attribValue(name);\n    if (CoreType.isString(val)) {\n      return AttribType.STRING;\n    } else {\n      return AttribType.NUMERIC;\n    }\n  }\n  attribSizes() {\n    const h = {};\n    for (let attrib_name of this.attribNames()) {\n      const size = this.attribSize(attrib_name);\n      if (size != null) {\n        h[attrib_name] = size;\n      }\n    }\n    return h;\n  }\n  attribSize(name) {\n    const val = this.attribValue(name);\n    if (val == null) {\n      return null;\n    }\n    return CoreAttribute.attribSizeFromValue(val);\n  }\n  _attributesDictionary() {\n    return this._attributes || this._createAttributesDictionaryIfNone();\n  }\n  _createAttributesDictionaryIfNone() {\n    if (!this._attributes) {\n      this._attributes = {};\n    }\n    return this._attributes;\n  }\n  setAttribValue(attribName, attribValue) {\n    this.addAttribute(attribName, attribValue);\n  }\n  stringAttribValue(attribName) {\n    return this.attribValue(attribName);\n  }\n}\n","import { CoreType } from \"../../core/Type\";\nimport { TypedNodePathParamValue, TypedParamPathParamValue } from \"../../core/Walker\";\nexport const OPERATIONS_COMPOSER_NODE_TYPE = \"operationsComposer\";\nexport class BaseOperation {\n  constructor(_scene, states, _node) {\n    this._scene = _scene;\n    this.states = states;\n    this._node = _node;\n  }\n  static type() {\n    throw \"type to be overriden\";\n  }\n  type() {\n    const c = this.constructor;\n    return c.type();\n  }\n  static context() {\n    console.error(\"operation has no node_context\", this);\n    throw \"context requires override\";\n  }\n  context() {\n    const c = this.constructor;\n    return c.context();\n  }\n  scene() {\n    return this._scene;\n  }\n  cook(input_contents, params) {\n  }\n  convertExportParamData(options) {\n    const { params, paramName, paramData } = options;\n    const default_param = params[paramName];\n    if (CoreType.isBoolean(paramData)) {\n      return paramData;\n    }\n    if (CoreType.isNumber(paramData)) {\n      if (CoreType.isBoolean(default_param)) {\n        return paramData >= 1 ? true : false;\n      } else {\n        return paramData;\n      }\n    }\n    if (CoreType.isString(paramData)) {\n      if (default_param) {\n        if (default_param instanceof TypedNodePathParamValue) {\n          return default_param.setPath(paramData);\n        }\n        if (default_param instanceof TypedParamPathParamValue) {\n          return default_param.setPath(paramData);\n        }\n      }\n      return paramData;\n    }\n    if (CoreType.isArray(paramData)) {\n      params[paramName].fromArray(paramData);\n    }\n  }\n}\nBaseOperation.DEFAULT_PARAMS = {};\nBaseOperation.INPUT_CLONED_STATE = [];\n","import { ArrayUtils } from \"../../ArrayUtils\";\nconst POSITION = \"position\";\nexport class CoreGeometryIndexBuilder {\n  static createIndexIfNone(geometry) {\n    if (!geometry.index) {\n      const position = geometry.getAttribute(POSITION);\n      if (position) {\n        const position_array = position.array;\n        geometry.setIndex(ArrayUtils.range(position_array.length / 3));\n      }\n    }\n  }\n}\n","import { CoreGroup } from \"../../../core/geometry/Group\";\nimport { BaseOperation } from \"../_Base\";\nimport { NodeContext } from \"../../../engine/poly/NodeContext\";\nimport {\n  ObjectType,\n  OBJECT_CONSTRUCTOR_BY_OBJECT_TYPE,\n  CoreConstant\n} from \"../../../core/geometry/Constant\";\nimport { CoreGeometryIndexBuilder } from \"../../../core/geometry/util/IndexBuilder\";\nexport class BaseSopOperation extends BaseOperation {\n  static context() {\n    return NodeContext.SOP;\n  }\n  cook(input_contents, params) {\n  }\n  createCoreGroupFromObjects(objects) {\n    const core_group = new CoreGroup();\n    core_group.setObjects(objects);\n    return core_group;\n  }\n  createCoreGroupFromGeometry(geometry, type = ObjectType.MESH) {\n    const object = BaseSopOperation.createObject(geometry, type);\n    return this.createCoreGroupFromObjects([object]);\n  }\n  createObject(geometry, type, material) {\n    return BaseSopOperation.createObject(geometry, type, material);\n  }\n  static createObject(geometry, type, material) {\n    this.createIndexIfNone(geometry);\n    const object_constructor = OBJECT_CONSTRUCTOR_BY_OBJECT_TYPE[type];\n    material = material || CoreConstant.MATERIALS[type].clone();\n    const object = new object_constructor(geometry, material);\n    this.applyObjectDefault(object);\n    return object;\n  }\n  static applyObjectDefault(object) {\n    object.castShadow = true;\n    object.receiveShadow = true;\n    object.frustumCulled = false;\n    object.matrixAutoUpdate = false;\n  }\n  createIndexIfNone(geometry) {\n    BaseSopOperation.createIndexIfNone(geometry);\n  }\n  static createIndexIfNone(geometry) {\n    CoreGeometryIndexBuilder.createIndexIfNone(geometry);\n  }\n}\n","import { FrontSide, LineBasicMaterial, MeshStandardMaterial } from \"three\";\nimport { ObjectType } from \"../Constant\";\nexport const CSG_MATERIAL = {\n  [ObjectType.MESH]: new MeshStandardMaterial({\n    color: 16777215,\n    vertexColors: true,\n    side: FrontSide,\n    metalness: 0,\n    roughness: 0.9\n  }),\n  [ObjectType.LINE_SEGMENTS]: new LineBasicMaterial({\n    color: 16777215,\n    linewidth: 1,\n    vertexColors: true\n  })\n};\n","import { BufferGeometry, BufferAttribute, Matrix4, Vector3, Quaternion } from \"three\";\nimport { ObjectType } from \"../../Constant\";\nimport { BaseSopOperation } from \"../../../../engine/operations/sop/_Base\";\nimport { CSG_MATERIAL } from \"../CsgConstant\";\nconst matrix = new Matrix4();\nconst t = new Vector3();\nconst q = new Quaternion();\nconst s = new Vector3();\nexport function geom2ToObject3D(csg) {\n  const geometry = geom2ToBufferGeometry(csg);\n  return BaseSopOperation.createObject(geometry, ObjectType.LINE_SEGMENTS, CSG_MATERIAL[ObjectType.LINE_SEGMENTS]);\n}\nexport function geom2ToBufferGeometry(csg) {\n  const vertices = [];\n  const colors = [];\n  const indices = [];\n  const sides = csg.sides;\n  const color = csg.color || [1, 1, 1];\n  let i = 0;\n  for (let side of sides) {\n    const point0 = side[0];\n    const point1 = side[1];\n    vertices.push(point0[0], 0, point0[1]);\n    vertices.push(point1[0], 0, point1[1]);\n    colors.push(...color);\n    colors.push(...color);\n    indices.push(i * 2);\n    indices.push(i * 2 + 1);\n    i++;\n  }\n  const geo = new BufferGeometry();\n  geo.setAttribute(\"position\", new BufferAttribute(new Float32Array(vertices), 3));\n  geo.setAttribute(\"color\", new BufferAttribute(new Float32Array(colors), 3));\n  geo.setIndex(indices);\n  matrix.elements = csg.transforms;\n  matrix.decompose(t, q, s);\n  t.y = 0;\n  matrix.compose(t, q, s);\n  geo.applyMatrix4(matrix);\n  return geo;\n}\nexport function geom2Positions(csg) {\n  const sides = csg.sides;\n  const vectors = new Array(sides.length);\n  let i = 0;\n  for (let side of sides) {\n    const vec = new Vector3();\n    const pt = side[0];\n    vec.x = pt[0];\n    vec.y = 0;\n    vec.z = pt[1];\n    vectors[i] = vec;\n    i++;\n  }\n  return vectors;\n}\n","import { BufferGeometry, BufferAttribute, Matrix4, Vector3, Quaternion } from \"three\";\nimport { ObjectType } from \"../../Constant\";\nimport { BaseSopOperation } from \"../../../../engine/operations/sop/_Base\";\nimport { CSG_MATERIAL } from \"../CsgConstant\";\nconst matrix = new Matrix4();\nconst t = new Vector3();\nconst q = new Quaternion();\nconst s = new Vector3();\nexport function path2ToObject3D(csg) {\n  const geometry = path2ToBufferGeometry(csg);\n  return BaseSopOperation.createObject(geometry, ObjectType.LINE_SEGMENTS, CSG_MATERIAL[ObjectType.LINE_SEGMENTS]);\n}\nexport function path2ToBufferGeometry(csg) {\n  const vertices = [];\n  const colors = [];\n  const indices = [];\n  const points2D = csg.points;\n  const color = csg.color || [1, 1, 1];\n  let i = 0;\n  for (let point of points2D) {\n    vertices.push(point[0], 0, point[1]);\n    colors.push(...color);\n    if (i != 0) {\n      indices.push(i - 1);\n      indices.push(i);\n    }\n    i++;\n  }\n  const geo = new BufferGeometry();\n  geo.setAttribute(\"position\", new BufferAttribute(new Float32Array(vertices), 3));\n  geo.setIndex(indices);\n  matrix.elements = csg.transforms;\n  matrix.decompose(t, q, s);\n  t.y = 0;\n  matrix.compose(t, q, s);\n  geo.applyMatrix4(matrix);\n  return geo;\n}\nexport function path2Positions(csg) {\n  const points = csg.points;\n  const vectors = new Array(points.length);\n  let i = 0;\n  for (let pt of points) {\n    const vec = new Vector3();\n    vec.x = pt[0];\n    vec.y = 0;\n    vec.z = pt[1];\n    vectors[i] = vec;\n    i++;\n  }\n  return vectors;\n}\n","import { NodeContext } from \"../../poly/NodeContext\";\nimport { AnimationContainer } from \"../Animation\";\nimport { AudioContainer } from \"../Audio\";\nimport { EventContainer } from \"../Event\";\nimport { GeometryContainer } from \"../Geometry\";\nimport { GlContainer } from \"../Gl\";\nimport { JsContainer } from \"../Js\";\nimport { ManagerContainer } from \"../Manager\";\nimport { MaterialContainer } from \"../Material\";\nimport { ObjectContainer } from \"../Object\";\nimport { TextureContainer } from \"../Texture\";\nimport { PostProcessContainer } from \"../PostProcess\";\nimport { RopContainer } from \"../Rop\";\nimport { CsgContainer } from \"../Csg\";\nexport const ContainerClassMap = {\n  [NodeContext.ACTOR]: AnimationContainer,\n  [NodeContext.ANIM]: AnimationContainer,\n  [NodeContext.AUDIO]: AudioContainer,\n  [NodeContext.COP]: TextureContainer,\n  [NodeContext.CSG]: CsgContainer,\n  [NodeContext.EVENT]: EventContainer,\n  [NodeContext.GL]: GlContainer,\n  [NodeContext.JS]: JsContainer,\n  [NodeContext.MANAGER]: ManagerContainer,\n  [NodeContext.MAT]: MaterialContainer,\n  [NodeContext.OBJ]: ObjectContainer,\n  [NodeContext.POST]: PostProcessContainer,\n  [NodeContext.ROP]: RopContainer,\n  [NodeContext.SOP]: GeometryContainer\n};\n","import { TypedContainer } from \"./_Base\";\nexport class AudioContainer extends TypedContainer {\n  setContent(content) {\n    super.set_content(content);\n  }\n  setAudioBuilder(audioBuilder) {\n    return this.set_content(audioBuilder);\n  }\n  audioBuilder() {\n    return this.content();\n  }\n  coreContentCloned() {\n    if (this._content) {\n      return this._content.clone();\n    }\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nimport { CoreType } from \"../../core/Type\";\nexport class TextureContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n  texture() {\n    return this._content;\n  }\n  coreContent() {\n    return this._content;\n  }\n  coreContentCloned() {\n    var _a;\n    const texture = (_a = this._content) == null ? void 0 : _a.clone();\n    if (texture) {\n      texture.needsUpdate = true;\n    }\n    return texture;\n  }\n  object() {\n    return this.texture();\n  }\n  infos() {\n    if (this._content != null) {\n      return [this._content];\n    }\n  }\n  resolution() {\n    function _resolutionFromHTMLVideoElement(video) {\n      return [video.videoWidth, video.videoHeight];\n    }\n    if (this._content) {\n      const image = this._content.image;\n      if (image) {\n        if (image instanceof HTMLImageElement || image instanceof Image || image instanceof ImageData || image instanceof HTMLCanvasElement) {\n          return [image.width, image.height];\n        }\n        if (image instanceof HTMLVideoElement) {\n          return _resolutionFromHTMLVideoElement(image);\n        }\n        if (CoreType.isNumber(image.width) && CoreType.isNumber(image.height)) {\n          return [image.width, image.height];\n        }\n      }\n      const source = this._content.source;\n      if (source) {\n        if (source instanceof HTMLVideoElement) {\n          return _resolutionFromHTMLVideoElement(source);\n        }\n        const data = source.data;\n        if (data && CoreType.isNumber(data.width) && CoreType.isNumber(data.height)) {\n          return [data.width, data.height];\n        }\n      }\n    }\n    return [-1, -1];\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nimport { csgObjectType } from \"../../core/geometry/csg/CsgToObject3D\";\nexport class CsgContainer extends TypedContainer {\n  coreContentCloned() {\n    if (this._content) {\n      return this._content.clone();\n    }\n  }\n  set_content(content) {\n    super.set_content(content);\n  }\n  objectTypes() {\n    return this._content.objects().map((o) => csgObjectType(o));\n  }\n}\n","import jscad from \"@jscad/modeling\";\nimport { geom3ToObject3D } from \"./toObject3D/CsgGeom3ToObject3D\";\nimport { geom2ToObject3D } from \"./toObject3D/CsgGeom2ToObject3D\";\nimport { path2ToObject3D } from \"./toObject3D/CsgPath2ToObject3D\";\nexport var CsgObjectType = /* @__PURE__ */ ((CsgObjectType2) => {\n  CsgObjectType2[\"GEOM3\"] = \"geom3\";\n  CsgObjectType2[\"GEOM2\"] = \"geom2\";\n  CsgObjectType2[\"PATH2\"] = \"path2\";\n  CsgObjectType2[\"UNKNOWN\"] = \"unknown\";\n  return CsgObjectType2;\n})(CsgObjectType || {});\nexport function csgObjectType(csg) {\n  if (jscad.geometries.geom3.isA(csg)) {\n    return \"geom3\" /* GEOM3 */;\n  }\n  if (jscad.geometries.geom2.isA(csg)) {\n    return \"geom2\" /* GEOM2 */;\n  }\n  if (jscad.geometries.path2.isA(csg)) {\n    return \"path2\" /* PATH2 */;\n  }\n  return \"unknown\" /* UNKNOWN */;\n}\nexport function csgToObject3D(csg) {\n  if (jscad.geometries.geom3.isA(csg)) {\n    return geom3ToObject3D(csg);\n  }\n  if (jscad.geometries.geom2.isA(csg)) {\n    return geom2ToObject3D(csg);\n  }\n  if (jscad.geometries.path2.isA(csg)) {\n    return path2ToObject3D(csg);\n  }\n  console.warn(\"no conversion method for\", csg);\n}\n","import { TypedContainer } from \"./_Base\";\nexport class EventContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nexport class GlContainer extends TypedContainer {\n  object() {\n    return this._content;\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nexport class JsContainer extends TypedContainer {\n  object() {\n    return this._content;\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nexport class ManagerContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nexport class MaterialContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n  set_material(material) {\n    if (this._content != null) {\n      this._content.dispose();\n    }\n    this.set_content(material);\n  }\n  has_material() {\n    return this.has_content();\n  }\n  material() {\n    return this.content();\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nexport class ObjectContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n  set_object(object) {\n    return this.set_content(object);\n  }\n  has_object() {\n    return this.has_content();\n  }\n  object() {\n    return this.content();\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nexport class PostProcessContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n  render_pass() {\n    return this._content;\n  }\n  object(options = {}) {\n    return this.render_pass();\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nexport class RopContainer extends TypedContainer {\n  set_content(content) {\n    super.set_content(content);\n  }\n  renderer() {\n    return this._content;\n  }\n}\n","import { TypedContainer } from \"./_Base\";\nimport { CoreGeometry } from \"../../core/geometry/Geometry\";\nimport { CoreObject } from \"../../core/geometry/Object\";\nexport class GeometryContainer extends TypedContainer {\n  coreContentCloned() {\n    if (this._content) {\n      return this._content.clone();\n    }\n  }\n  set_content(content) {\n    super.set_content(content);\n  }\n  firstObject() {\n    if (this._content) {\n      return this._content.objects()[0];\n    }\n  }\n  firstCoreObject() {\n    const object = this.firstObject();\n    if (object) {\n      return new CoreObject(object, 0);\n    }\n  }\n  firstGeometry() {\n    const object = this.firstObject();\n    if (object) {\n      return object.geometry;\n    } else {\n      return null;\n    }\n  }\n  objectsCount() {\n    if (this._content) {\n      return this._content.objects().length;\n    } else {\n      return 0;\n    }\n  }\n  objectsVisibleCount() {\n    let count = 0;\n    if (this._content) {\n      const objects = this._content.objects();\n      for (let object of objects) {\n        if (object.visible) {\n          count++;\n        }\n      }\n    }\n    return count;\n  }\n  objectsCountByType() {\n    const count_by_type = {};\n    const core_group = this._content;\n    if (this._content && core_group) {\n      for (let core_object of core_group.coreObjects()) {\n        const human_type = core_object.humanType();\n        if (count_by_type[human_type] == null) {\n          count_by_type[human_type] = 0;\n        }\n        count_by_type[human_type] += 1;\n      }\n    }\n    return count_by_type;\n  }\n  objectsNamesByType() {\n    const names_by_type = {};\n    const core_group = this._content;\n    if (this._content && core_group) {\n      for (let core_object of core_group.coreObjects()) {\n        const human_type = core_object.humanType();\n        names_by_type[human_type] = names_by_type[human_type] || [];\n        names_by_type[human_type].push(core_object.name());\n      }\n    }\n    return names_by_type;\n  }\n  pointAttributeNames() {\n    let names = [];\n    const geometry = this.firstGeometry();\n    if (geometry) {\n      names = Object.keys(geometry.attributes);\n    }\n    return names;\n  }\n  pointAttributeSizesByName() {\n    let sizes_by_name = {};\n    const geometry = this.firstGeometry();\n    if (geometry) {\n      Object.keys(geometry.attributes).forEach((attrib_name) => {\n        const attrib = geometry.attributes[attrib_name];\n        sizes_by_name[attrib_name] = attrib.itemSize;\n      });\n    }\n    return sizes_by_name;\n  }\n  objectAttributeSizesByName() {\n    let sizes_by_name = {};\n    const core_object = this.firstCoreObject();\n    if (core_object) {\n      const attribNames = core_object.attribNames();\n      for (let name of attribNames) {\n        const size = core_object.attribSize(name);\n        if (size != null) {\n          sizes_by_name[name] = size;\n        }\n      }\n    }\n    return sizes_by_name;\n  }\n  coreGroupAttributeSizesByName() {\n    let sizes_by_name = {};\n    const coreGroup = this._content;\n    const attribNames = coreGroup.attribNames();\n    for (let name of attribNames) {\n      const size = coreGroup.attribSize(name);\n      if (size != null) {\n        sizes_by_name[name] = size;\n      }\n    }\n    return sizes_by_name;\n  }\n  pointAttributeTypesByName() {\n    let types_by_name = {};\n    const geometry = this.firstGeometry();\n    if (geometry) {\n      const core_geo = new CoreGeometry(geometry);\n      Object.keys(geometry.attributes).forEach((attrib_name) => {\n        types_by_name[attrib_name] = core_geo.attribType(attrib_name);\n      });\n    }\n    return types_by_name;\n  }\n  objectAttributeTypesByName() {\n    let types_by_name = {};\n    const core_object = this.firstCoreObject();\n    if (core_object) {\n      for (let name of core_object.attribNames()) {\n        types_by_name[name] = core_object.attribType(name);\n      }\n    }\n    return types_by_name;\n  }\n  coreGroupAttributeTypesByName() {\n    let types_by_name = {};\n    const coreGroup = this._content;\n    for (let name of coreGroup.attribNames()) {\n      types_by_name[name] = coreGroup.attribType(name);\n    }\n    return types_by_name;\n  }\n  coreGroupAttributeValuesByName() {\n    let valuesByName = {};\n    const coreGroup = this._content;\n    for (let name of coreGroup.attribNames()) {\n      valuesByName[name] = coreGroup.attribValue(name);\n    }\n    return valuesByName;\n  }\n  objectAttributeNames() {\n    let names = [];\n    const object = this.firstObject();\n    if (object) {\n      names = Object.keys(object.userData[\"attributes\"] || {});\n    }\n    return names;\n  }\n  pointsCount() {\n    if (this._content) {\n      return this._content.pointsCount();\n    } else {\n      return 0;\n    }\n  }\n  totalPointsCount() {\n    if (this._content) {\n      return this._content.totalPointsCount();\n    } else {\n      return 0;\n    }\n  }\n  objectsData() {\n    if (this._content) {\n      return this._content.objectsData();\n    } else {\n      return [];\n    }\n  }\n  boundingBox(forceUpdate = false) {\n    return this._content.boundingBox(forceUpdate);\n  }\n  center() {\n    return this._content.center();\n  }\n  size() {\n    return this._content.size();\n  }\n}\n","import { ContainerClassMap } from \"../../containers/utils/ContainerMap\";\nexport class TypedContainerController {\n  constructor(node) {\n    this.node = node;\n    this._callbacks = [];\n    this._callbacksTmp = [];\n    this._container = this._createContainer();\n  }\n  container() {\n    return this._container;\n  }\n  _createContainer() {\n    const ContainerClass = ContainerClassMap[this.node.context()];\n    return new ContainerClass(this.node);\n  }\n  containerUnlessBypassed() {\n    var _a, _b;\n    if ((_b = (_a = this.node.flags) == null ? void 0 : _a.bypass) == null ? void 0 : _b.active()) {\n      this.node.states.error.clear();\n      const inputNode = this.node.io.inputs.input(0);\n      if (inputNode) {\n        return inputNode.containerController.containerUnlessBypassed();\n      } else {\n        return this._createContainer();\n      }\n    } else {\n      return this.container();\n    }\n  }\n  async compute() {\n    var _a, _b;\n    if (this.node.disposed) {\n      console.warn(\".compute() requested from a disposed node\", this.node);\n    }\n    if ((_b = (_a = this.node.flags) == null ? void 0 : _a.bypass) == null ? void 0 : _b.active()) {\n      this.node.states.error.clear();\n      const inputNode = this.node.io.inputs.input(0);\n      if (inputNode) {\n        const container = await this.requestInputContainer(0) || this._container;\n        this.node.cookController.endCook();\n        return container;\n      } else {\n        return this._createContainer();\n      }\n    }\n    if (this.node.isDirty()) {\n      return new Promise((resolve, reject) => {\n        var _a2, _b2;\n        this._callbacks.push(resolve);\n        if ((_b2 = (_a2 = this.node.flags) == null ? void 0 : _a2.bypass) == null ? void 0 : _b2.active()) {\n          throw \"we should not be here\";\n        }\n        this.node.cookController.cookMain();\n      });\n    }\n    return this._container;\n  }\n  async requestInputContainer(inputIndex) {\n    const inputNode = this.node.io.inputs.input(inputIndex);\n    if (inputNode) {\n      return await inputNode.compute();\n    } else {\n      this.node.states.error.set(`input ${inputIndex} required`);\n      this.notifyRequesters();\n      return null;\n    }\n  }\n  notifyRequesters(container) {\n    this._callbacksTmp = this._callbacks.slice();\n    this._callbacks.splice(0, this._callbacks.length);\n    if (!container) {\n      container = this.node.containerController.container();\n    }\n    let callback;\n    while (callback = this._callbacksTmp.pop()) {\n      callback(container);\n    }\n    this.node.scene().cookController.removeNode(this.node);\n  }\n}\nexport class BaseContainerController extends TypedContainerController {\n}\n","import { Poly } from \"../../../Poly\";\nconst performance = Poly.performance.performanceManager();\nexport class NodeCookPerformanceformanceController {\n  constructor(cookController) {\n    this.cookController = cookController;\n    this._inputsStart = 0;\n    this._inputsTime = 0;\n    this._paramsStart = 0;\n    this._paramsTime = 0;\n    this._cookStart = 0;\n    this._cookTime = 0;\n    this._cooksCount = 0;\n    this._data = {\n      inputsTime: 0,\n      paramsTime: 0,\n      cookTime: 0\n    };\n  }\n  cooksCount() {\n    return this._cooksCount;\n  }\n  data() {\n    this._data.inputsTime = this._inputsTime;\n    this._data.paramsTime = this._paramsTime;\n    this._data.cookTime = this._cookTime;\n    return this._data;\n  }\n  active() {\n    return this.cookController.performanceRecordStarted();\n  }\n  recordInputsStart() {\n    if (this.active()) {\n      this._inputsStart = performance.now();\n    }\n  }\n  recordInputsEnd() {\n    if (this.active()) {\n      this._inputsTime = performance.now() - this._inputsStart;\n    }\n  }\n  recordParamsStart() {\n    if (this.active()) {\n      this._paramsStart = performance.now();\n    }\n  }\n  recordParamsEnd() {\n    if (this.active()) {\n      this._paramsTime = performance.now() - this._paramsStart;\n    }\n  }\n  recordCookStart() {\n    if (this.active()) {\n      this._cookStart = performance.now();\n    }\n  }\n  recordCookEnd() {\n    if (this.active()) {\n      this._cookTime = performance.now() - this._cookStart;\n      this._cooksCount += 1;\n    }\n  }\n}\n","import { Poly } from \"../../Poly\";\nimport { NodeCookPerformanceformanceController } from \"./cook/PerformanceController\";\nexport class NodeCookController {\n  constructor(node) {\n    this.node = node;\n    this._cooking = false;\n    this._performanceController = new NodeCookPerformanceformanceController(this);\n    this._inputsEvaluationRequired = true;\n    this._corePerformance = this.node.scene().performance;\n  }\n  performanceRecordStarted() {\n    return this._corePerformance.started();\n  }\n  dispose() {\n    this._clearHooks();\n  }\n  disallowInputsEvaluation() {\n    this._inputsEvaluationRequired = false;\n  }\n  isCooking() {\n    return this._cooking === true;\n  }\n  _startCookIfNoErrors(inputContents) {\n    if (this.node.states.error.active()) {\n      this.endCook();\n    } else {\n      try {\n        this._performanceController.recordCookStart();\n        this.node.cook(inputContents || []);\n      } catch (e) {\n        this.node.states.error.set(`node internal error: '${e}'.`);\n        Poly.warn(e);\n        this.endCook();\n      }\n    }\n  }\n  async cookMain() {\n    if (this.isCooking()) {\n      return;\n    }\n    this._initCookingState();\n    this.node.states.error.clear();\n    this.node.scene().cookController.addNode(this.node);\n    try {\n      const inputContents = this._inputsEvaluationRequired ? await this._evaluateInputs() : void 0;\n      if (this.node.params.paramsEvalRequired()) {\n        await this._evaluateParams();\n      }\n      this._startCookIfNoErrors(inputContents);\n    } catch (e) {\n      this.node.states.error.set(`node inputs error: '${e}'.`);\n      Poly.warn(e);\n      this.endCook();\n    }\n  }\n  async cookMainWithoutInputs() {\n    this.node.scene().cookController.addNode(this.node);\n    if (this.isCooking()) {\n      Poly.warn(\"cook_main_without_inputs already cooking\", this.node.path());\n      return;\n    }\n    this._initCookingState();\n    this.node.states.error.clear();\n    if (this.node.params.paramsEvalRequired()) {\n      await this._evaluateParams();\n    }\n    this._startCookIfNoErrors(void 0);\n  }\n  endCook(message) {\n    var _a, _b;\n    this._finalizeCookPerformance();\n    const dirtyTimestamp = this.node.dirtyController.dirtyTimestamp();\n    const timestampUnchangedSinceCookStarted = dirtyTimestamp == null || dirtyTimestamp === this._cookingDirtyTimestamp;\n    if (timestampUnchangedSinceCookStarted) {\n      this.node.removeDirtyState();\n      this._terminateCookProcess();\n    } else {\n      if ((_b = (_a = this.node.flags) == null ? void 0 : _a.bypass) == null ? void 0 : _b.active()) {\n        return;\n      }\n      Poly.log(\"COOK AGAIN\", dirtyTimestamp, this._cookingDirtyTimestamp, this.node.path());\n      this._cooking = false;\n      this.cookMain();\n    }\n  }\n  _initCookingState() {\n    this._cooking = true;\n    this._cookingDirtyTimestamp = this.node.dirtyController.dirtyTimestamp();\n  }\n  _terminateCookProcess() {\n    if (this.isCooking()) {\n      this._cooking = false;\n      this.node.containerController.notifyRequesters();\n      this._runOnCookCompleteHooks();\n    }\n  }\n  async _evaluateInputs() {\n    this._performanceController.recordInputsStart();\n    const ioOnputs = this.node.io.inputs;\n    const inputContainers = this._inputsEvaluationRequired ? ioOnputs.isGraphNodeDirty() ? await ioOnputs.evalRequiredInputs() : ioOnputs.containersWithoutEvaluation() : [];\n    const inputs = ioOnputs.inputs();\n    const inputContents = [];\n    let inputContainer;\n    for (let i = 0; i < inputs.length; i++) {\n      inputContainer = inputContainers[i];\n      if (inputContainer) {\n        if (ioOnputs.cloneRequired(i)) {\n          inputContents[i] = inputContainer.coreContentCloned();\n        } else {\n          inputContents[i] = inputContainer.coreContent();\n        }\n      }\n    }\n    this._performanceController.recordInputsEnd();\n    return inputContents;\n  }\n  async _evaluateParams() {\n    this._performanceController.recordParamsStart();\n    await this.node.params.evalAll();\n    this._performanceController.recordParamsEnd();\n  }\n  cooksCount() {\n    return this._performanceController.cooksCount();\n  }\n  cookTime() {\n    return this._performanceController.data().cookTime;\n  }\n  _finalizeCookPerformance() {\n    if (!this._corePerformance.started()) {\n      return;\n    }\n    this._performanceController.recordCookEnd();\n    this._corePerformance.recordNodeCookData(this.node, this._performanceController.data());\n  }\n  registerOnCookEnd(callbackName, callback) {\n    this._onCookCompleteHookNames = this._onCookCompleteHookNames || [];\n    this._onCookCompleteHooks = this._onCookCompleteHooks || [];\n    this._onCookCompleteHookNames.push(callbackName);\n    this._onCookCompleteHooks.push(callback);\n  }\n  _clearHooks() {\n    if (!this._onCookCompleteHookNames || !this._onCookCompleteHooks) {\n      return;\n    }\n    for (let hookName of this._onCookCompleteHookNames) {\n      this.deregisterOnCookEnd(hookName);\n    }\n  }\n  deregisterOnCookEnd(callbackName) {\n    var _a;\n    if (!this._onCookCompleteHookNames || !this._onCookCompleteHooks) {\n      return;\n    }\n    const index = (_a = this._onCookCompleteHookNames) == null ? void 0 : _a.indexOf(callbackName);\n    this._onCookCompleteHookNames.splice(index, 1);\n    this._onCookCompleteHooks.splice(index, 1);\n    if (this._onCookCompleteHookNames.length == 0) {\n      this._onCookCompleteHookNames = void 0;\n    }\n    if (this._onCookCompleteHooks.length == 0) {\n      this._onCookCompleteHooks = void 0;\n    }\n  }\n  _runOnCookCompleteHooks() {\n    if (this._onCookCompleteHooks) {\n      const hooks = [...this._onCookCompleteHooks];\n      for (let hook of hooks) {\n        hook();\n      }\n    }\n  }\n  onCookEndCallbackNames() {\n    return this._onCookCompleteHookNames;\n  }\n}\n","export class NodeSerializer {\n  constructor(node) {\n    this.node = node;\n  }\n  dispose() {\n  }\n  toJSON(include_param_components = false) {\n    var _a, _b, _c, _d, _e, _f;\n    const data = {\n      name: this.node.name(),\n      type: this.node.type(),\n      graph_node_id: this.node.graphNodeId(),\n      is_dirty: this.node.isDirty(),\n      ui_data_json: this.node.uiData.toJSON(),\n      error_message: this.node.states.error.message(),\n      children: this.childrenIds(),\n      maxInputsCount: this.maxInputsCount(),\n      inputs: this.inputIds(),\n      input_connection_output_indices: this.inputConnectionOutputIndices(),\n      named_input_connection_points: this.namedInputConnectionPoints(),\n      named_output_connection_points: this.namedOutputConnectionPoints(),\n      param_ids: this.to_json_params(include_param_components),\n      override_cloned_state_allowed: this.node.io.inputs.overrideClonedStateAllowed(),\n      inputs_clone_required_states: this.node.io.inputs.cloneRequiredStates(),\n      flags: {\n        display: (_b = (_a = this.node.flags) == null ? void 0 : _a.display) == null ? void 0 : _b.active(),\n        bypass: (_d = (_c = this.node.flags) == null ? void 0 : _c.bypass) == null ? void 0 : _d.active(),\n        optimize: (_f = (_e = this.node.flags) == null ? void 0 : _e.optimize) == null ? void 0 : _f.active()\n      },\n      selection: void 0\n    };\n    if (this.node.childrenAllowed() && this.node.childrenController) {\n      data[\"selection\"] = this.node.childrenController.selection.toJSON();\n    }\n    if (this.node.polyNodeController) {\n      data[\"polyNode\"] = {\n        locked: this.node.polyNodeController.locked()\n      };\n    }\n    return data;\n  }\n  childrenIds() {\n    return this.node.children().map((node) => node.graphNodeId());\n  }\n  maxInputsCount() {\n    return this.node.io.inputs.maxInputsCount();\n  }\n  inputIds() {\n    return this.node.io.inputs.inputs().map((node) => node != null ? node.graphNodeId() : void 0);\n  }\n  inputConnectionOutputIndices() {\n    var _a;\n    return (_a = this.node.io.connections.inputConnections()) == null ? void 0 : _a.map((connection) => connection != null ? connection.output_index : void 0);\n  }\n  namedInputConnectionPoints() {\n    return this.node.io.inputs.namedInputConnectionPoints().map((i) => i.toJSON());\n  }\n  namedOutputConnectionPoints() {\n    return this.node.io.outputs.namedOutputConnectionPoints().map((o) => o.toJSON());\n  }\n  to_json_params_from_names(param_names, include_components = false) {\n    return param_names.map((param_name) => {\n      return this.node.params.get(param_name).graphNodeId();\n    });\n  }\n  to_json_params(include_components = false) {\n    return this.to_json_params_from_names(this.node.params.names, include_components);\n  }\n}\n","export var ParamEvent = /* @__PURE__ */ ((ParamEvent2) => {\n  ParamEvent2[\"VISIBLE_UPDATED\"] = \"param_visible_updated\";\n  ParamEvent2[\"EDITABLE_UPDATED\"] = \"param_editable_updated\";\n  ParamEvent2[\"RAW_INPUT_UPDATED\"] = \"raw_input_updated\";\n  ParamEvent2[\"VALUE_UPDATED\"] = \"param_value_updated\";\n  ParamEvent2[\"EXPRESSION_UPDATED\"] = \"param_expression_update\";\n  ParamEvent2[\"ERROR_UPDATED\"] = \"param_error_updated\";\n  ParamEvent2[\"DELETED\"] = \"param_deleted\";\n  return ParamEvent2;\n})(ParamEvent || {});\n","import { MathUtils } from \"three\";\nexport var ColorConversion = /* @__PURE__ */ ((ColorConversion2) => {\n  ColorConversion2[\"NONE\"] = \"no conversion\";\n  ColorConversion2[\"SRGB_TO_LINEAR\"] = \"sRGB -> linear\";\n  ColorConversion2[\"LINEAR_TO_SRGB\"] = \"linear -> sRGB\";\n  return ColorConversion2;\n})(ColorConversion || {});\nexport const COLOR_CONVERSIONS = [\n  \"no conversion\" /* NONE */,\n  \"sRGB -> linear\" /* SRGB_TO_LINEAR */,\n  \"linear -> sRGB\" /* LINEAR_TO_SRGB */\n];\nexport class CoreColor {\n  static setHSV(h, s, v, target) {\n    h = MathUtils.euclideanModulo(h, 1);\n    s = MathUtils.clamp(s, 0, 1);\n    v = MathUtils.clamp(v, 0, 1);\n    target.setHSL(h, s * v / ((h = (2 - s) * v) < 1 ? h : 2 - h), h * 0.5);\n  }\n}\n","import { ParamType } from \"../../poly/ParamType\";\nimport { ParamEvent } from \"../../poly/ParamEvent\";\nimport { CoreGraphNode } from \"../../../core/graph/CoreGraphNode\";\nimport { ColorConversion } from \"../../../core/Color\";\nimport { CoreType } from \"../../../core/Type\";\nimport { ArrayUtils } from \"../../../core/ArrayUtils\";\nimport { ObjectUtils } from \"../../../core/ObjectUtils\";\nimport isFunction from \"lodash-es/isFunction\";\nconst CALLBACK_OPTION = \"callback\";\nconst CALLBACK_STRING_OPTION = \"callbackString\";\nconst COMPUTE_ON_DIRTY = \"computeOnDirty\";\nconst COOK_OPTION = \"cook\";\nconst FILE_BROWSE_OPTION = \"fileBrowse\";\nconst FILE_BROWSE_EXTENSIONS = \"extensions\";\nconst EXPRESSION = \"expression\";\nconst FOR_ENTITIES = \"forEntities\";\nconst LABEL = \"label\";\nconst HIDE_LABEL = \"hideLabel\";\nconst LEVEL = \"level\";\nconst MENU = \"menu\";\nconst MENU_STRING = \"menuString\";\nconst ENTRIES = \"entries\";\nconst MULTILINE_OPTION = \"multiline\";\nconst LANGUAGE_OPTION = \"language\";\nconst NODE_SELECTION = \"nodeSelection\";\nconst NODE_SELECTION_CONTEXT = \"context\";\nconst NODE_SELECTION_TYPES = \"types\";\nconst OBJECT_MASK = \"objectMask\";\nconst DEPENDENT_ON_FOUND_NODE = \"dependentOnFoundNode\";\nconst DEPENDENT_ON_FOUND_PARAM = \"dependentOnFoundParam\";\nconst RANGE_OPTION = \"range\";\nconst RANGE_LOCKED_OPTION = \"rangeLocked\";\nconst STEP_OPTION = \"step\";\nconst SPARE_OPTION = \"spare\";\nconst TEXTURE_OPTION = \"texture\";\nconst ENV_OPTION = \"env\";\nconst HIDDEN_OPTION = \"hidden\";\nconst FIELD_OPTION = \"field\";\nconst VISIBLE_IF_OPTION = \"visibleIf\";\nconst COLOR_CONVERSION = \"conversion\";\nconst SEPARATOR_BEFORE_OPTION = \"separatorBefore\";\nconst SEPARATOR_AFTER_OPTION = \"separatorAfter\";\nconst JOIN_TO_PREVIOUS_PARAM = \"joinToPreviousParam\";\nexport const PARAM_OPTION_NAMES = {\n  CALLBACK_OPTION\n};\nconst EDITABLE = \"editable\";\nexport var StringParamLanguage = /* @__PURE__ */ ((StringParamLanguage2) => {\n  StringParamLanguage2[\"CSS\"] = \"css\";\n  StringParamLanguage2[\"GLSL\"] = \"glsl\";\n  StringParamLanguage2[\"HTML\"] = \"html\";\n  StringParamLanguage2[\"TYPESCRIPT\"] = \"typescript\";\n  StringParamLanguage2[\"JSON\"] = \"json\";\n  return StringParamLanguage2;\n})(StringParamLanguage || {});\nexport var FileType = /* @__PURE__ */ ((FileType2) => {\n  FileType2[\"AUDIO\"] = \"audio\";\n  FileType2[\"TEXTURE_IMAGE\"] = \"texture_image\";\n  FileType2[\"TEXTURE_VIDEO\"] = \"texture_video\";\n  FileType2[\"GEOMETRY\"] = \"geometry\";\n  FileType2[\"FONT\"] = \"font\";\n  FileType2[\"SVG\"] = \"svg\";\n  FileType2[\"JSON\"] = \"json\";\n  return FileType2;\n})(FileType || {});\nconst NON_OVERRIDABLE_OPTIONS = [EDITABLE];\nexport class OptionsController {\n  constructor(_param) {\n    this._param = _param;\n    this._programaticVisibleState = true;\n    this._callbackAllowed = false;\n    this._updateVisibilityAndRemoveDirtyBound = this.updateVisibilityAndRemoveDirty.bind(this);\n    this._ui_data_dependency_set = false;\n  }\n  dispose() {\n    var _a;\n    try {\n      this._options[CALLBACK_OPTION] = void 0;\n      this._options[CALLBACK_STRING_OPTION] = void 0;\n    } catch (err) {\n    }\n    (_a = this._visibility_graph_node) == null ? void 0 : _a.dispose();\n  }\n  set(options) {\n    if (CoreType.isString(options)) {\n      console.warn(\"options input invalid\", options, typeof options);\n    }\n    this._default_options = options;\n    this._options = ObjectUtils.cloneDeep(this._default_options);\n    this.postSetOptions();\n  }\n  copy(options_controller) {\n    this._default_options = ObjectUtils.cloneDeep(options_controller.default());\n    this._options = ObjectUtils.cloneDeep(options_controller.current());\n    this.postSetOptions();\n  }\n  setOption(optionName, value) {\n    if (!this._validateOption(optionName, value)) {\n      return;\n    }\n    this._options[optionName] = value;\n    if (this._param.components) {\n      for (let component of this._param.components) {\n        component.options.setOption(optionName, value);\n      }\n    }\n  }\n  _validateOption(optionName, value) {\n    if (optionName == CALLBACK_OPTION) {\n      return isFunction(value);\n    }\n    return true;\n  }\n  postSetOptions() {\n    this._handleComputeOnDirty();\n  }\n  param() {\n    return this._param;\n  }\n  node() {\n    return this._param.node;\n  }\n  default() {\n    return this._default_options;\n  }\n  current() {\n    return this._options;\n  }\n  hasOptionsOverridden() {\n    return !ObjectUtils.isEqual(this._options, this._default_options);\n  }\n  overriddenOptions() {\n    const overriden = {};\n    const optionNames = Object.keys(this._options);\n    const optionNamesToCheck = ArrayUtils.difference(optionNames, NON_OVERRIDABLE_OPTIONS);\n    for (let optionName of optionNamesToCheck) {\n      if (!ObjectUtils.isEqual(this._options[optionName], this._default_options[optionName])) {\n        const cloned_option = ObjectUtils.cloneDeep(this._options[optionName]);\n        Object.assign(overriden, { [optionName]: cloned_option });\n      }\n    }\n    return overriden;\n  }\n  overriddenOptionNames() {\n    return Object.keys(this.overriddenOptions());\n  }\n  computeOnDirty() {\n    return this._options[COMPUTE_ON_DIRTY] || false;\n  }\n  _handleComputeOnDirty() {\n    if (this.computeOnDirty()) {\n      if (!this._computeOnDirtyCallbackAdded) {\n        this.param().addPostDirtyHook(\"computeOnDirty\", this._computeParam.bind(this));\n        this._computeOnDirtyCallbackAdded = true;\n      }\n    }\n  }\n  async _computeParam() {\n    await this.param().compute();\n  }\n  hasCallback() {\n    return this._options[CALLBACK_OPTION] != null || this._options[CALLBACK_STRING_OPTION] != null;\n  }\n  allowCallback() {\n    this._callbackAllowed = true;\n  }\n  async executeCallback() {\n    if (!this._callbackAllowed) {\n      return;\n    }\n    if (!this.node()) {\n      return;\n    }\n    const callback = this.getCallback();\n    if (!callback) {\n      return;\n    }\n    if (!this.node().scene().loadingController.loaded()) {\n      return;\n    }\n    const parentParam = this.param().parentParam();\n    if (parentParam) {\n      parentParam.options.executeCallback();\n    } else {\n      await callback(this.node(), this.param());\n    }\n  }\n  getCallback() {\n    if (this.hasCallback()) {\n      return this._options[CALLBACK_OPTION] = this._options[CALLBACK_OPTION] || this.createCallbackFromString();\n    }\n  }\n  createCallbackFromString() {\n    const callbackString = this._options[CALLBACK_STRING_OPTION];\n    if (callbackString) {\n      const callbackFunction = new Function(\"node\", \"scene\", \"window\", \"location\", callbackString);\n      return () => {\n        callbackFunction(this.node(), this.node().scene(), null, null);\n      };\n    }\n  }\n  colorConversion() {\n    return this._options[COLOR_CONVERSION] || ColorConversion.NONE;\n  }\n  makesNodeDirtyWhenDirty() {\n    if (this.param().parentParam() != null) {\n      return false;\n    }\n    const cookOptions = this._options[COOK_OPTION];\n    if (cookOptions != null) {\n      return cookOptions;\n    }\n    return true;\n  }\n  fileBrowseOption() {\n    return this._options[FILE_BROWSE_OPTION];\n  }\n  fileBrowseAllowed() {\n    return this.fileBrowseOption() != null;\n  }\n  fileBrowseExtensions() {\n    const option = this.fileBrowseOption();\n    if (option) {\n      return option[FILE_BROWSE_EXTENSIONS];\n    } else {\n      return null;\n    }\n  }\n  separatorBefore() {\n    return this._options[SEPARATOR_BEFORE_OPTION];\n  }\n  separatorAfter() {\n    return this._options[SEPARATOR_AFTER_OPTION];\n  }\n  joinToPreviousParam() {\n    return this._options[JOIN_TO_PREVIOUS_PARAM];\n  }\n  setEditableState(state) {\n    const currentState = this._options[EDITABLE];\n    const param = this.param();\n    if (currentState != state) {\n      this._options[EDITABLE] = state;\n      param.emit(ParamEvent.EDITABLE_UPDATED);\n    }\n    if (param.components) {\n      for (let component of param.components) {\n        component.options.setEditableState(state);\n      }\n    }\n  }\n  editable() {\n    const state = this._options[EDITABLE];\n    if (state != null) {\n      return state;\n    }\n    return true;\n  }\n  isExpressionForEntities() {\n    const expr_option = this._options[EXPRESSION];\n    if (expr_option) {\n      return expr_option[FOR_ENTITIES] || false;\n    }\n    return false;\n  }\n  level() {\n    return this._options[LEVEL] || 0;\n  }\n  hasMenu() {\n    return this.menuOptions() != null || this.menuStringOptions() != null;\n  }\n  menuOptions() {\n    return this._options[MENU];\n  }\n  menuStringOptions() {\n    return this._options[MENU_STRING];\n  }\n  menuEntries() {\n    const options = this.menuOptions() || this.menuStringOptions();\n    if (options) {\n      return options[ENTRIES];\n    } else {\n      return [];\n    }\n  }\n  isMultiline() {\n    return this._options[MULTILINE_OPTION] === true;\n  }\n  language() {\n    return this._options[LANGUAGE_OPTION];\n  }\n  isCode() {\n    return this.language() != null;\n  }\n  nodeSelectionOptions() {\n    return this._options[NODE_SELECTION];\n  }\n  nodeSelectionContext() {\n    const options = this.nodeSelectionOptions();\n    if (options) {\n      return options[NODE_SELECTION_CONTEXT];\n    }\n  }\n  nodeSelectionTypes() {\n    const options = this.nodeSelectionOptions();\n    if (options) {\n      return options[NODE_SELECTION_TYPES];\n    }\n  }\n  objectMask() {\n    return this._options[OBJECT_MASK] == true;\n  }\n  dependentOnFoundNode() {\n    if (DEPENDENT_ON_FOUND_NODE in this._options) {\n      return this._options[DEPENDENT_ON_FOUND_NODE];\n    } else {\n      return true;\n    }\n  }\n  dependentOnFoundParam() {\n    if (DEPENDENT_ON_FOUND_PARAM in this._options) {\n      return this._options[DEPENDENT_ON_FOUND_PARAM];\n    } else {\n      return true;\n    }\n  }\n  isSelectingParam() {\n    return this.param().type() == ParamType.PARAM_PATH;\n  }\n  range() {\n    return this._options[RANGE_OPTION] || [0, 1];\n  }\n  step() {\n    return this._options[STEP_OPTION];\n  }\n  rangeLocked() {\n    return this._options[RANGE_LOCKED_OPTION] || [false, false];\n  }\n  ensureInRange(value) {\n    const range = this.range();\n    if (value >= range[0] && value <= range[1]) {\n      return value;\n    } else {\n      if (value < range[0]) {\n        return this.rangeLocked()[0] === true ? range[0] : value;\n      } else {\n        return this.rangeLocked()[1] === true ? range[1] : value;\n      }\n    }\n  }\n  isSpare() {\n    return this._options[SPARE_OPTION] || false;\n  }\n  textureOptions() {\n    return this._options[TEXTURE_OPTION];\n  }\n  textureAsEnv() {\n    const texture_options = this.textureOptions();\n    if (texture_options != null) {\n      return texture_options[ENV_OPTION] === true;\n    }\n    return false;\n  }\n  isHidden() {\n    return this._options[HIDDEN_OPTION] === true || this._programaticVisibleState === false;\n  }\n  isVisible() {\n    return !this.isHidden();\n  }\n  setVisibleState(state) {\n    this._options[HIDDEN_OPTION] = !state;\n    this.param().emit(ParamEvent.VISIBLE_UPDATED);\n  }\n  label() {\n    return this._options[LABEL];\n  }\n  isLabelHidden() {\n    const type = this.param().type();\n    switch (type) {\n      case ParamType.BUTTON: {\n        return true;\n      }\n      case ParamType.BOOLEAN: {\n        return this.isFieldHidden();\n      }\n      case ParamType.RAMP: {\n        return this._options[HIDE_LABEL] || false;\n      }\n      case ParamType.STRING: {\n        return this.isCode() && this._options[HIDE_LABEL] || false;\n      }\n    }\n    return false;\n  }\n  isFieldHidden() {\n    return this._options[FIELD_OPTION] === false;\n  }\n  uiDataDependsOnOtherParams() {\n    return VISIBLE_IF_OPTION in this._options;\n  }\n  visibilityPredecessors() {\n    const visibilityOptions = this._options[VISIBLE_IF_OPTION];\n    if (!visibilityOptions) {\n      return [];\n    }\n    let predecessorNames = [];\n    if (CoreType.isArray(visibilityOptions)) {\n      predecessorNames = ArrayUtils.uniq(visibilityOptions.map((options) => Object.keys(options)).flat());\n    } else {\n      predecessorNames = Object.keys(visibilityOptions);\n    }\n    const node = this.param().node;\n    const params = ArrayUtils.compact(predecessorNames.map((name) => {\n      const param = node.params.get(name);\n      if (param) {\n        return param;\n      } else {\n        console.error(`param ${name} not found as visibility condition for ${this.param().name()} in node ${this.param().node.type()}`);\n      }\n    }));\n    return params;\n  }\n  setUiDataDependency() {\n    if (this._ui_data_dependency_set) {\n      return;\n    }\n    this._ui_data_dependency_set = true;\n    const predecessors = this.visibilityPredecessors();\n    if (predecessors.length > 0) {\n      this._visibility_graph_node = new CoreGraphNode(this.param().scene(), \"param_visibility\");\n      for (let predecessor of predecessors) {\n        this._visibility_graph_node.addGraphInput(predecessor);\n      }\n      this._visibility_graph_node.addPostDirtyHook(\"_update_visibility_and_remove_dirty\", this._updateVisibilityAndRemoveDirtyBound);\n    }\n  }\n  updateVisibilityAndRemoveDirty() {\n    this.updateVisibility();\n    this.param().removeDirtyState();\n  }\n  async updateVisibility() {\n    const options = this._options[VISIBLE_IF_OPTION];\n    if (options) {\n      const node = this.param().node;\n      const params = this.visibilityPredecessors();\n      const promises = params.map((p) => {\n        if (p.isDirty()) {\n          return p.compute();\n        }\n      });\n      this._programaticVisibleState = false;\n      await Promise.all(promises);\n      if (CoreType.isArray(options)) {\n        for (let optionsSet of options) {\n          const optionSetParamNames = Object.keys(optionsSet);\n          const optionSetParams = ArrayUtils.compact(optionSetParamNames.map((paramName) => node.params.get(paramName)));\n          const satisfiedValues = optionSetParams.filter((param) => param.value == optionsSet[param.name()]);\n          if (satisfiedValues.length == optionSetParams.length) {\n            this._programaticVisibleState = true;\n          }\n        }\n      } else {\n        const satisfiedValues = params.filter((param) => param.value == options[param.name()]);\n        this._programaticVisibleState = satisfiedValues.length == params.length;\n      }\n      this.param().emit(ParamEvent.VISIBLE_UPDATED);\n    }\n  }\n}\n","export class EmitController {\n  constructor(param) {\n    this.param = param;\n    this._blockedEmit = false;\n    this._blockedParentEmit = false;\n    this._countByEventName = /* @__PURE__ */ new Map();\n  }\n  emitAllowed() {\n    if (this._blockedEmit === true) {\n      return false;\n    }\n    if (this.param.scene().loadingController.isLoading()) {\n      return false;\n    }\n    return this.param.scene().dispatchController.emitAllowed();\n  }\n  blockEmit() {\n    this._blockedEmit = true;\n    if (this.param.isMultiple() && this.param.components) {\n      for (let component of this.param.components) {\n        component.emitController.blockEmit();\n      }\n    }\n    return true;\n  }\n  unblockEmit() {\n    this._blockedEmit = false;\n    if (this.param.isMultiple() && this.param.components) {\n      for (let component of this.param.components) {\n        component.emitController.unblockEmit();\n      }\n    }\n    return true;\n  }\n  blockParentEmit() {\n    this._blockedParentEmit = true;\n    return true;\n  }\n  unblockParentEmit() {\n    this._blockedParentEmit = false;\n    return true;\n  }\n  incrementCount(eventName) {\n    const count = (this._countByEventName.get(eventName) || 0) + 1;\n    this._countByEventName.set(eventName, count);\n  }\n  eventsCount(eventName) {\n    return this._countByEventName.get(eventName) || 0;\n  }\n  emit(event) {\n    if (this.emitAllowed()) {\n      this.param.emit(event);\n      const parentParam = this.param.parentParam();\n      if (parentParam != null && this._blockedParentEmit !== true) {\n        parentParam.emit(event);\n      }\n    }\n  }\n}\n","export class ParamSerializer {\n  constructor(param) {\n    this.param = param;\n  }\n  toJSON() {\n    const data = {\n      name: this.param.name(),\n      type: this.param.type(),\n      raw_input: this.rawInput(),\n      value: this.value(),\n      value_pre_conversion: this.value_pre_conversion(),\n      expression: this.expression(),\n      graph_node_id: this.param.graphNodeId(),\n      error_message: this.error_message(),\n      is_visible: this.is_visible(),\n      editable: this.editable(),\n      components: void 0\n    };\n    if (this.param.isMultiple() && this.param.components) {\n      data[\"components\"] = this.param.components.map((component) => component.graphNodeId());\n    }\n    return data;\n  }\n  rawInput() {\n    return this.param.rawInputSerialized();\n  }\n  value() {\n    return this.param.valueSerialized();\n  }\n  value_pre_conversion() {\n    return this.param.valuePreConversionSerialized();\n  }\n  expression() {\n    var _a;\n    return this.param.hasExpression() ? (_a = this.param.expressionController) == null ? void 0 : _a.expression() : void 0;\n  }\n  error_message() {\n    return this.param.states.error.message();\n  }\n  is_visible() {\n    return this.param.options.isVisible();\n  }\n  editable() {\n    return this.param.options.editable();\n  }\n}\n","export class ParamTimeDependentState {\n  constructor(param) {\n    this.param = param;\n  }\n  active() {\n    const frame_graph_node_id = this.param.scene().timeController.graphNode.graphNodeId();\n    return this.param.graphPredecessorIds().includes(frame_graph_node_id);\n  }\n}\n","import { ParamEvent } from \"../../../poly/ParamEvent\";\nimport { Poly } from \"../../../Poly\";\nexport class ParamErrorState {\n  constructor(param) {\n    this.param = param;\n  }\n  set(message) {\n    if (this._message != message) {\n      this._message = message;\n      if (this._message) {\n        Poly.warn(this.param.path(), this._message);\n      }\n      this.param.emitController.emit(ParamEvent.ERROR_UPDATED);\n    }\n  }\n  message() {\n    return this._message;\n  }\n  clear() {\n    this.set(void 0);\n  }\n  active() {\n    return this._message != null;\n  }\n}\n","import { ParamTimeDependentState } from \"./states/TimeDependent\";\nimport { ParamErrorState } from \"./states/Error\";\nexport class ParamStatesController {\n  constructor(param) {\n    this.param = param;\n    this.timeDependent = new ParamTimeDependentState(this.param);\n    this.error = new ParamErrorState(this.param);\n  }\n}\n","import { CoreGraphNode } from \"../../core/graph/CoreGraphNode\";\nimport { CoreType } from \"../../core/Type\";\nexport class MethodDependency extends CoreGraphNode {\n  constructor(param, path_argument, decomposed_path) {\n    super(param.scene(), \"MethodDependency\");\n    this.param = param;\n    this.path_argument = path_argument;\n    this.decomposed_path = decomposed_path;\n    this._update_from_name_change_bound = this._update_from_name_change.bind(this);\n    var _a;\n    (_a = param.expressionController) == null ? void 0 : _a.registerMethodDependency(this);\n    this.addPostDirtyHook(\"_update_from_name_change\", this._update_from_name_change_bound);\n  }\n  _update_from_name_change(trigger) {\n    if (trigger && this.decomposed_path) {\n      const node = trigger;\n      this.decomposed_path.update_from_name_change(node);\n      const new_path = this.decomposed_path.to_path();\n      const literal = this.jsep_node;\n      if (literal) {\n        literal.value = `${literal.value}`.replace(`${this.path_argument}`, new_path);\n        literal.raw = literal.raw.replace(`${this.path_argument}`, new_path);\n      }\n      if (this.param.expressionController) {\n        this.param.expressionController.updateFromMethodDependencyNameChange();\n      }\n    }\n  }\n  reset() {\n    this.graphDisconnectPredecessors();\n  }\n  listen_for_name_changes() {\n    if (this.jsep_node && this.decomposed_path) {\n      for (let node_in_path of this.decomposed_path.named_nodes()) {\n        if (node_in_path) {\n          const node = node_in_path;\n          if (node.nameController) {\n            this.addGraphInput(node.nameController.graphNode());\n          }\n        }\n      }\n    }\n  }\n  set_jsep_node(jsep_node) {\n    this.jsep_node = jsep_node;\n  }\n  set_resolved_graph_node(node) {\n    this.resolved_graph_node = node;\n  }\n  set_unresolved_path(path) {\n    this.unresolved_path = path;\n  }\n  static create(param, index_or_path, node, decomposed_path) {\n    const is_index = CoreType.isNumber(index_or_path);\n    const instance = new MethodDependency(param, index_or_path, decomposed_path);\n    if (node) {\n      instance.set_resolved_graph_node(node);\n    } else {\n      if (!is_index) {\n        const path = index_or_path;\n        instance.set_unresolved_path(path);\n      }\n    }\n    return instance;\n  }\n}\n","import { CoreWalker } from \"../../core/Walker\";\nimport { CoreGraphNode } from \"../../core/graph/CoreGraphNode\";\nimport { OptionsController } from \"./utils/OptionsController\";\nimport { EmitController } from \"./utils/EmitController\";\nimport { ParamSerializer } from \"./utils/Serializer\";\nimport { ParamStatesController } from \"./utils/StatesController\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { ParamEvent } from \"../poly/ParamEvent\";\nimport { MethodDependency } from \"../expressions/MethodDependency\";\nimport { Poly } from \"../Poly\";\nconst TYPED_PARAM_DEFAULT_COMPONENT_NAMES = [];\nexport class TypedParam extends CoreGraphNode {\n  constructor(scene, node) {\n    super(scene, \"BaseParam\");\n    this._options = new OptionsController(this);\n    this._emitController = new EmitController(this);\n    this._isComputing = false;\n    this._node = node;\n    this._initializeParam();\n  }\n  get options() {\n    return this._options = this._options || new OptionsController(this);\n  }\n  get emitController() {\n    return this._emitController = this._emitController || new EmitController(this);\n  }\n  get expressionController() {\n    return this._expression_controller;\n  }\n  expressionParsedAsString() {\n    return false;\n  }\n  get serializer() {\n    return this._serializer = this._serializer || new ParamSerializer(this);\n  }\n  get states() {\n    return this._states = this._states || new ParamStatesController(this);\n  }\n  dispose() {\n    var _a, _b;\n    const predecessors = this.graphPredecessors();\n    for (let predecessor of predecessors) {\n      if (predecessor instanceof MethodDependency) {\n        predecessor.dispose();\n      }\n    }\n    const successors = this.graphSuccessors();\n    for (let successor of successors) {\n      if (successor instanceof TypedParam) {\n        const input = successor.rawInputSerialized();\n        successor.set(successor.defaultValue());\n        successor.set(input);\n      } else {\n        successor.setDirty();\n      }\n    }\n    this.scene().missingExpressionReferencesController.deregisterParam(this);\n    (_a = this._expression_controller) == null ? void 0 : _a.dispose();\n    super.dispose();\n    (_b = this._options) == null ? void 0 : _b.dispose();\n    this._node = void 0;\n    this._parent_param = void 0;\n    this._runOnDisposeCallbacks();\n  }\n  _initializeParam() {\n  }\n  postOptionsInitialize() {\n  }\n  static type() {\n    return ParamType.FLOAT;\n  }\n  type() {\n    return this.constructor.type();\n  }\n  isNumeric() {\n    return false;\n  }\n  setName(name) {\n    super.setName(name);\n  }\n  get value() {\n    return this._value;\n  }\n  copyValue(param) {\n    if (param.type() == this.type()) {\n      this._copyValue(param);\n    } else {\n      console.warn(`cannot copy value from ${param.type()} to ${this.type()}`);\n    }\n  }\n  _copyValue(param) {\n    throw \"abstract method param._copy_value\";\n  }\n  valuePreConversionSerialized() {\n    return void 0;\n  }\n  convert(rawVal) {\n    return null;\n  }\n  static areRawInputEqual(val1, val2) {\n    return false;\n  }\n  isRawInputEqual(other_raw_input) {\n    return this.constructor.areRawInputEqual(this._raw_input, other_raw_input);\n  }\n  static areValuesEqual(val1, val2) {\n    return false;\n  }\n  isValueEqual(other_val) {\n    return this.constructor.areValuesEqual(this.value, other_val);\n  }\n  _cloneRawInput(raw_input) {\n    return raw_input;\n  }\n  set(raw_input) {\n    this._raw_input = this._cloneRawInput(this._prefilterInvalidRawInput(raw_input));\n    this.emitController.emit(ParamEvent.RAW_INPUT_UPDATED);\n    this.processRawInput();\n  }\n  _prefilterInvalidRawInput(raw_input) {\n    return raw_input;\n  }\n  defaultValue() {\n    return this._default_value;\n  }\n  isDefault() {\n    return this._raw_input == this._default_value;\n  }\n  rawInput() {\n    return this._raw_input;\n  }\n  processRawInput() {\n  }\n  isComputing() {\n    return this._isComputing;\n  }\n  async compute() {\n    if (this.scene().loadingController.isLoading()) {\n      Poly.warn(`param attempt to compute ${this.path()} while scene is loading`);\n    }\n    if (this.isDirty()) {\n      if (!this._isComputing) {\n        this._isComputing = true;\n        await this.processComputation();\n        this._isComputing = false;\n        if (this._computeResolves) {\n          const resolves = [...this._computeResolves];\n          this._computeResolves = void 0;\n          for (let resolve of resolves) {\n            resolve();\n          }\n        }\n      } else {\n        return new Promise((resolve, reject) => {\n          this._computeResolves = this._computeResolves || [];\n          this._computeResolves.push(resolve);\n        });\n      }\n    }\n  }\n  async processComputation() {\n  }\n  setInitValue(init_value) {\n    this._default_value = this._cloneRawInput(this._prefilterInvalidRawInput(init_value));\n  }\n  _setupNodeDependencies(node) {\n    var _a, _b;\n    if (!node) {\n      if (this._node) {\n        (_a = this._node.params.params_node) == null ? void 0 : _a.removeGraphInput(this);\n      }\n    } else {\n      this.options.allowCallback();\n      if (!this.parentParam()) {\n        if (this.options.makesNodeDirtyWhenDirty()) {\n          (_b = node.params.params_node) == null ? void 0 : _b.addGraphInput(this, false);\n        } else {\n          this.dirtyController.addPostDirtyHook(\"run callback\", async () => {\n            await this.compute();\n            this.options.executeCallback();\n          });\n        }\n      }\n    }\n    if (this.components) {\n      for (let c of this.components) {\n        c._setupNodeDependencies(node);\n      }\n    }\n  }\n  get node() {\n    return this._node;\n  }\n  parent() {\n    return this.node;\n  }\n  set_parent_param(param) {\n    param.addGraphInput(this, false);\n    this._parent_param = param;\n  }\n  parentParam() {\n    return this._parent_param;\n  }\n  has_parent_param() {\n    return this._parent_param != null;\n  }\n  path() {\n    var _a;\n    return ((_a = this.node) == null ? void 0 : _a.path()) + \"/\" + this.name();\n  }\n  pathRelativeTo(node) {\n    if (!this._node) {\n      return this.name();\n    }\n    const nodeRelativePath = CoreWalker.relativePath(node, this._node);\n    if (nodeRelativePath.length > 0) {\n      return CoreWalker.sanitizePath(`${nodeRelativePath}${CoreWalker.SEPARATOR}${this.name()}`);\n    } else {\n      return this.name();\n    }\n  }\n  emit(eventName) {\n    if (this.emitController.emitAllowed()) {\n      this.emitController.incrementCount(eventName);\n      this.scene().dispatchController.dispatch(this, eventName);\n    }\n  }\n  get components() {\n    return this._components;\n  }\n  componentNames() {\n    return TYPED_PARAM_DEFAULT_COMPONENT_NAMES;\n  }\n  isMultiple() {\n    return this.componentNames().length > 0;\n  }\n  initComponents() {\n  }\n  hasExpression() {\n    return this.expressionController != null && this.expressionController.active();\n  }\n  toJSON() {\n    return this.serializer.toJSON();\n  }\n  onDispose(callback) {\n    this._onDisposeCallbacks = this._onDisposeCallbacks || /* @__PURE__ */ new Set();\n    this._onDisposeCallbacks.add(callback);\n  }\n  deregisterOnDispose(callback) {\n    if (this._onDisposeCallbacks) {\n      this._onDisposeCallbacks.delete(callback);\n    }\n  }\n  _runOnDisposeCallbacks() {\n    if (this._onDisposeCallbacks) {\n      this._onDisposeCallbacks.forEach((callback) => {\n        callback();\n      });\n      this._onDisposeCallbacks.clear();\n      this._onDisposeCallbacks = void 0;\n    }\n  }\n}\nexport class BaseParamClass extends TypedParam {\n  defaultValueSerialized() {\n    return \"BaseParamClass.defaultValueSerialized overriden\";\n  }\n  rawInputSerialized() {\n    return \"BaseParamClass.rawInputSerialized overriden\";\n  }\n  valueSerialized() {\n    return \"BaseParamClass.valueSerialized overriden\";\n  }\n}\n","/**\n * @implements {IHooks}\n */\nclass Hooks {\n\t/**\n\t * @callback HookCallback\n\t * @this {*|Jsep} this\n\t * @param {Jsep} env\n\t * @returns: void\n\t */\n\t/**\n\t * Adds the given callback to the list of callbacks for the given hook.\n\t *\n\t * The callback will be invoked when the hook it is registered for is run.\n\t *\n\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t *\n\t * @param {string|object} name The name of the hook, or an object of callbacks keyed by name\n\t * @param {HookCallback|boolean} callback The callback function which is given environment variables.\n\t * @param {?boolean} [first=false] Will add the hook to the top of the list (defaults to the bottom)\n\t * @public\n\t */\n\tadd(name, callback, first) {\n\t\tif (typeof arguments[0] != 'string') {\n\t\t\t// Multiple hook callbacks, keyed by name\n\t\t\tfor (let name in arguments[0]) {\n\t\t\t\tthis.add(name, arguments[0][name], arguments[1]);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t(Array.isArray(name) ? name : [name]).forEach(function (name) {\n\t\t\t\tthis[name] = this[name] || [];\n\n\t\t\t\tif (callback) {\n\t\t\t\t\tthis[name][first ? 'unshift' : 'push'](callback);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t}\n\n\t/**\n\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t *\n\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t *\n\t * @param {string} name The name of the hook.\n\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t * @public\n\t */\n\trun(name, env) {\n\t\tthis[name] = this[name] || [];\n\t\tthis[name].forEach(function (callback) {\n\t\t\tcallback.call(env && env.context ? env.context : env, env);\n\t\t});\n\t}\n}\n\n/**\n * @implements {IPlugins}\n */\nclass Plugins {\n\tconstructor(jsep) {\n\t\tthis.jsep = jsep;\n\t\tthis.registered = {};\n\t}\n\n\t/**\n\t * @callback PluginSetup\n\t * @this {Jsep} jsep\n\t * @returns: void\n\t */\n\t/**\n\t * Adds the given plugin(s) to the registry\n\t *\n\t * @param {object} plugins\n\t * @param {string} plugins.name The name of the plugin\n\t * @param {PluginSetup} plugins.init The init function\n\t * @public\n\t */\n\tregister(...plugins) {\n\t\tplugins.forEach((plugin) => {\n\t\t\tif (typeof plugin !== 'object' || !plugin.name || !plugin.init) {\n\t\t\t\tthrow new Error('Invalid JSEP plugin format');\n\t\t\t}\n\t\t\tif (this.registered[plugin.name]) {\n\t\t\t\t// already registered. Ignore.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tplugin.init(this.jsep);\n\t\t\tthis.registered[plugin.name] = plugin;\n\t\t});\n\t}\n}\n\n//     JavaScript Expression Parser (JSEP) 1.0.2\n\nclass Jsep {\n\t/**\n\t * @returns {string}\n\t */\n\tstatic get version() {\n\t\t// To be filled in by the template\n\t\treturn '1.0.2';\n\t}\n\n\t/**\n\t * @returns {string}\n\t */\n\tstatic toString() {\n\t\treturn 'JavaScript Expression Parser (JSEP) v' + Jsep.version;\n\t};\n\n\t// ==================== CONFIG ================================\n\t/**\n\t * @method addUnaryOp\n\t * @param {string} op_name The name of the unary op to add\n\t * @returns {Jsep}\n\t */\n\tstatic addUnaryOp(op_name) {\n\t\tJsep.max_unop_len = Math.max(op_name.length, Jsep.max_unop_len);\n\t\tJsep.unary_ops[op_name] = 1;\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method jsep.addBinaryOp\n\t * @param {string} op_name The name of the binary op to add\n\t * @param {number} precedence The precedence of the binary op (can be a float). Higher number = higher precedence\n\t * @returns {Jsep}\n\t */\n\tstatic addBinaryOp(op_name, precedence) {\n\t\tJsep.max_binop_len = Math.max(op_name.length, Jsep.max_binop_len);\n\t\tJsep.binary_ops[op_name] = precedence;\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method addIdentifierChar\n\t * @param {string} char The additional character to treat as a valid part of an identifier\n\t * @returns {Jsep}\n\t */\n\tstatic addIdentifierChar(char) {\n\t\tJsep.additional_identifier_chars.add(char);\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method addLiteral\n\t * @param {string} literal_name The name of the literal to add\n\t * @param {*} literal_value The value of the literal\n\t * @returns {Jsep}\n\t */\n\tstatic addLiteral(literal_name, literal_value) {\n\t\tJsep.literals[literal_name] = literal_value;\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeUnaryOp\n\t * @param {string} op_name The name of the unary op to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeUnaryOp(op_name) {\n\t\tdelete Jsep.unary_ops[op_name];\n\t\tif (op_name.length === Jsep.max_unop_len) {\n\t\t\tJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\n\t\t}\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllUnaryOps\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllUnaryOps() {\n\t\tJsep.unary_ops = {};\n\t\tJsep.max_unop_len = 0;\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeIdentifierChar\n\t * @param {string} char The additional character to stop treating as a valid part of an identifier\n\t * @returns {Jsep}\n\t */\n\tstatic removeIdentifierChar(char) {\n\t\tJsep.additional_identifier_chars.delete(char);\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeBinaryOp\n\t * @param {string} op_name The name of the binary op to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeBinaryOp(op_name) {\n\t\tdelete Jsep.binary_ops[op_name];\n\n\t\tif (op_name.length === Jsep.max_binop_len) {\n\t\t\tJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\t\t}\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllBinaryOps\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllBinaryOps() {\n\t\tJsep.binary_ops = {};\n\t\tJsep.max_binop_len = 0;\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeLiteral\n\t * @param {string} literal_name The name of the literal to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeLiteral(literal_name) {\n\t\tdelete Jsep.literals[literal_name];\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllLiterals\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllLiterals() {\n\t\tJsep.literals = {};\n\n\t\treturn Jsep;\n\t}\n\t// ==================== END CONFIG ============================\n\n\n\t/**\n\t * @returns {string}\n\t */\n\tget char() {\n\t\treturn this.expr.charAt(this.index);\n\t}\n\n\t/**\n\t * @returns {number}\n\t */\n\tget code() {\n\t\treturn this.expr.charCodeAt(this.index);\n\t};\n\n\n\t/**\n\t * @param {string} expr a string with the passed in express\n\t * @returns Jsep\n\t */\n\tconstructor(expr) {\n\t\t// `index` stores the character number we are currently at\n\t\t// All of the gobbles below will modify `index` as we move along\n\t\tthis.expr = expr;\n\t\tthis.index = 0;\n\t}\n\n\t/**\n\t * static top-level parser\n\t * @returns {jsep.Expression}\n\t */\n\tstatic parse(expr) {\n\t\treturn (new Jsep(expr)).parse();\n\t}\n\n\t/**\n\t * Get the longest key length of any object\n\t * @param {object} obj\n\t * @returns {number}\n\t */\n\tstatic getMaxKeyLen(obj) {\n\t\treturn Math.max(0, ...Object.keys(obj).map(k => k.length));\n\t}\n\n\t/**\n\t * `ch` is a character code in the next three functions\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isDecimalDigit(ch) {\n\t\treturn (ch >= 48 && ch <= 57); // 0...9\n\t}\n\n\t/**\n\t * Returns the precedence of a binary operator or `0` if it isn't a binary operator. Can be float.\n\t * @param {string} op_val\n\t * @returns {number}\n\t */\n\tstatic binaryPrecedence(op_val) {\n\t\treturn Jsep.binary_ops[op_val] || 0;\n\t}\n\n\t/**\n\t * Looks for start of identifier\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isIdentifierStart(ch) {\n\t\treturn  (ch >= 65 && ch <= 90) || // A...Z\n\t\t\t(ch >= 97 && ch <= 122) || // a...z\n\t\t\t(ch >= 128 && !Jsep.binary_ops[String.fromCharCode(ch)]) || // any non-ASCII that is not an operator\n\t\t\t(Jsep.additional_identifier_chars.has(String.fromCharCode(ch))); // additional characters\n\t}\n\n\t/**\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isIdentifierPart(ch) {\n\t\treturn Jsep.isIdentifierStart(ch) || Jsep.isDecimalDigit(ch);\n\t}\n\n\t/**\n\t * throw error at index of the expression\n\t * @param {string} message\n\t * @throws\n\t */\n\tthrowError(message) {\n\t\tconst error = new Error(message + ' at character ' + this.index);\n\t\terror.index = this.index;\n\t\terror.description = message;\n\t\tthrow error;\n\t}\n\n\t/**\n\t * Run a given hook\n\t * @param {string} name\n\t * @param {jsep.Expression|false} [node]\n\t * @returns {?jsep.Expression}\n\t */\n\trunHook(name, node) {\n\t\tif (Jsep.hooks[name]) {\n\t\t\tconst env = { context: this, node };\n\t\t\tJsep.hooks.run(name, env);\n\t\t\treturn env.node;\n\t\t}\n\t\treturn node;\n\t}\n\n\t/**\n\t * Runs a given hook until one returns a node\n\t * @param {string} name\n\t * @returns {?jsep.Expression}\n\t */\n\tsearchHook(name) {\n\t\tif (Jsep.hooks[name]) {\n\t\t\tconst env = { context: this };\n\t\t\tJsep.hooks[name].find(function (callback) {\n\t\t\t\tcallback.call(env.context, env);\n\t\t\t\treturn env.node;\n\t\t\t});\n\t\t\treturn env.node;\n\t\t}\n\t}\n\n\t/**\n\t * Push `index` up to the next non-space character\n\t */\n\tgobbleSpaces() {\n\t\tlet ch = this.code;\n\t\t// Whitespace\n\t\twhile (ch === Jsep.SPACE_CODE\n\t\t|| ch === Jsep.TAB_CODE\n\t\t|| ch === Jsep.LF_CODE\n\t\t|| ch === Jsep.CR_CODE) {\n\t\t\tch = this.expr.charCodeAt(++this.index);\n\t\t}\n\t\tthis.runHook('gobble-spaces');\n\t}\n\n\t/**\n\t * Top-level method to parse all expressions and returns compound or single node\n\t * @returns {jsep.Expression}\n\t */\n\tparse() {\n\t\tthis.runHook('before-all');\n\t\tconst nodes = this.gobbleExpressions();\n\n\t\t// If there's only one expression just try returning the expression\n\t\tconst node = nodes.length === 1\n\t\t  ? nodes[0]\n\t\t\t: {\n\t\t\t\ttype: Jsep.COMPOUND,\n\t\t\t\tbody: nodes\n\t\t\t};\n\t\treturn this.runHook('after-all', node);\n\t}\n\n\t/**\n\t * top-level parser (but can be reused within as well)\n\t * @param {number} [untilICode]\n\t * @returns {jsep.Expression[]}\n\t */\n\tgobbleExpressions(untilICode) {\n\t\tlet nodes = [], ch_i, node;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tch_i = this.code;\n\n\t\t\t// Expressions can be separated by semicolons, commas, or just inferred without any\n\t\t\t// separators\n\t\t\tif (ch_i === Jsep.SEMCOL_CODE || ch_i === Jsep.COMMA_CODE) {\n\t\t\t\tthis.index++; // ignore separators\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Try to gobble each expression individually\n\t\t\t\tif (node = this.gobbleExpression()) {\n\t\t\t\t\tnodes.push(node);\n\t\t\t\t\t// If we weren't able to find a binary expression and are out of room, then\n\t\t\t\t\t// the expression passed in probably has too much\n\t\t\t\t}\n\t\t\t\telse if (this.index < this.expr.length) {\n\t\t\t\t\tif (ch_i === untilICode) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tthis.throwError('Unexpected \"' + this.char + '\"');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nodes;\n\t}\n\n\t/**\n\t * The main parsing function.\n\t * @returns {?jsep.Expression}\n\t */\n\tgobbleExpression() {\n\t\tconst node = this.searchHook('gobble-expression') || this.gobbleBinaryExpression();\n\t\tthis.gobbleSpaces();\n\n\t\treturn this.runHook('after-expression', node);\n\t}\n\n\t/**\n\t * Search for the operation portion of the string (e.g. `+`, `===`)\n\t * Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\n\t * and move down from 3 to 2 to 1 character until a matching binary operation is found\n\t * then, return that binary operation\n\t * @returns {string|boolean}\n\t */\n\tgobbleBinaryOp() {\n\t\tthis.gobbleSpaces();\n\t\tlet to_check = this.expr.substr(this.index, Jsep.max_binop_len);\n\t\tlet tc_len = to_check.length;\n\n\t\twhile (tc_len > 0) {\n\t\t\t// Don't accept a binary op when it is an identifier.\n\t\t\t// Binary ops that start with a identifier-valid character must be followed\n\t\t\t// by a non identifier-part valid character\n\t\t\tif (Jsep.binary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t!Jsep.isIdentifierStart(this.code) ||\n\t\t\t\t(this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))\n\t\t\t)) {\n\t\t\t\tthis.index += tc_len;\n\t\t\t\treturn to_check;\n\t\t\t}\n\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * This function is responsible for gobbling an individual expression,\n\t * e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\n\t * @returns {?jsep.BinaryExpression}\n\t */\n\tgobbleBinaryExpression() {\n\t\tlet node, biop, prec, stack, biop_info, left, right, i, cur_biop;\n\n\t\t// First, try to get the leftmost thing\n\t\t// Then, check to see if there's a binary operator operating on that leftmost thing\n\t\t// Don't gobbleBinaryOp without a left-hand-side\n\t\tleft = this.gobbleToken();\n\t\tif (!left) {\n\t\t\treturn left;\n\t\t}\n\t\tbiop = this.gobbleBinaryOp();\n\n\t\t// If there wasn't a binary operator, just return the leftmost node\n\t\tif (!biop) {\n\t\t\treturn left;\n\t\t}\n\n\t\t// Otherwise, we need to start a stack to properly place the binary operations in their\n\t\t// precedence structure\n\t\tbiop_info = { value: biop, prec: Jsep.binaryPrecedence(biop)};\n\n\t\tright = this.gobbleToken();\n\n\t\tif (!right) {\n\t\t\tthis.throwError(\"Expected expression after \" + biop);\n\t\t}\n\n\t\tstack = [left, biop_info, right];\n\n\t\t// Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\n\t\twhile ((biop = this.gobbleBinaryOp())) {\n\t\t\tprec = Jsep.binaryPrecedence(biop);\n\n\t\t\tif (prec === 0) {\n\t\t\t\tthis.index -= biop.length;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbiop_info = { value: biop, prec };\n\n\t\t\tcur_biop = biop;\n\n\t\t\t// Reduce: make a binary expression from the three topmost entries.\n\t\t\twhile ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n\t\t\t\tright = stack.pop();\n\t\t\t\tbiop = stack.pop().value;\n\t\t\t\tleft = stack.pop();\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.BINARY_EXP,\n\t\t\t\t\toperator: biop,\n\t\t\t\t\tleft,\n\t\t\t\t\tright\n\t\t\t\t};\n\t\t\t\tstack.push(node);\n\t\t\t}\n\n\t\t\tnode = this.gobbleToken();\n\n\t\t\tif (!node) {\n\t\t\t\tthis.throwError(\"Expected expression after \" + cur_biop);\n\t\t\t}\n\n\t\t\tstack.push(biop_info, node);\n\t\t}\n\n\t\ti = stack.length - 1;\n\t\tnode = stack[i];\n\n\t\twhile (i > 1) {\n\t\t\tnode = {\n\t\t\t\ttype: Jsep.BINARY_EXP,\n\t\t\t\toperator: stack[i - 1].value,\n\t\t\t\tleft: stack[i - 2],\n\t\t\t\tright: node\n\t\t\t};\n\t\t\ti -= 2;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * An individual part of a binary expression:\n\t * e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\n\t * @returns {boolean|jsep.Expression}\n\t */\n\tgobbleToken() {\n\t\tlet ch, to_check, tc_len, node;\n\n\t\tthis.gobbleSpaces();\n\t\tnode = this.searchHook('gobble-token');\n\t\tif (node) {\n\t\t\treturn this.runHook('after-token', node);\n\t\t}\n\n\t\tch = this.code;\n\n\t\tif (Jsep.isDecimalDigit(ch) || ch === Jsep.PERIOD_CODE) {\n\t\t\t// Char code 46 is a dot `.` which can start off a numeric literal\n\t\t\treturn this.gobbleNumericLiteral();\n\t\t}\n\n\t\tif (ch === Jsep.SQUOTE_CODE || ch === Jsep.DQUOTE_CODE) {\n\t\t\t// Single or double quotes\n\t\t\tnode = this.gobbleStringLiteral();\n\t\t}\n\t\telse if (ch === Jsep.OBRACK_CODE) {\n\t\t\tnode = this.gobbleArray();\n\t\t}\n\t\telse {\n\t\t\tto_check = this.expr.substr(this.index, Jsep.max_unop_len);\n\t\t\ttc_len = to_check.length;\n\n\t\t\twhile (tc_len > 0) {\n\t\t\t\t// Don't accept an unary op when it is an identifier.\n\t\t\t\t// Unary ops that start with a identifier-valid character must be followed\n\t\t\t\t// by a non identifier-part valid character\n\t\t\t\tif (Jsep.unary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t\t!Jsep.isIdentifierStart(this.code) ||\n\t\t\t\t\t(this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))\n\t\t\t\t)) {\n\t\t\t\t\tthis.index += tc_len;\n\t\t\t\t\tconst argument = this.gobbleToken();\n\t\t\t\t\tif (!argument) {\n\t\t\t\t\t\tthis.throwError('missing unaryOp argument');\n\t\t\t\t\t}\n\t\t\t\t\treturn this.runHook('after-token', {\n\t\t\t\t\t\ttype: Jsep.UNARY_EXP,\n\t\t\t\t\t\toperator: to_check,\n\t\t\t\t\t\targument,\n\t\t\t\t\t\tprefix: true\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t\t}\n\n\t\t\tif (Jsep.isIdentifierStart(ch)) {\n\t\t\t\tnode = this.gobbleIdentifier();\n\t\t\t\tif (Jsep.literals.hasOwnProperty(node.name)) {\n\t\t\t\t\tnode = {\n\t\t\t\t\t\ttype: Jsep.LITERAL,\n\t\t\t\t\t\tvalue: Jsep.literals[node.name],\n\t\t\t\t\t\traw: node.name,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse if (node.name === Jsep.this_str) {\n\t\t\t\t\tnode = { type: Jsep.THIS_EXP };\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (ch === Jsep.OPAREN_CODE) { // open parenthesis\n\t\t\t\tnode = this.gobbleGroup();\n\t\t\t}\n\t\t}\n\n\t\tif (!node) {\n\t\t\treturn this.runHook('after-token', false);\n\t\t}\n\n\t\tnode = this.gobbleTokenProperty(node);\n\t\treturn this.runHook('after-token', node);\n\t}\n\n\t/**\n\t * Gobble properties of of identifiers/strings/arrays/groups.\n\t * e.g. `foo`, `bar.baz`, `foo['bar'].baz`\n\t * It also gobbles function calls:\n\t * e.g. `Math.acos(obj.angle)`\n\t * @param {jsep.Expression} node\n\t * @returns {jsep.Expression}\n\t */\n\tgobbleTokenProperty(node) {\n\t\tthis.gobbleSpaces();\n\n\t\tlet ch = this.code;\n\t\twhile (ch === Jsep.PERIOD_CODE || ch === Jsep.OBRACK_CODE || ch === Jsep.OPAREN_CODE) {\n\t\t\tthis.index++;\n\n\t\t\tif (ch === Jsep.PERIOD_CODE) {\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.MEMBER_EXP,\n\t\t\t\t\tcomputed: false,\n\t\t\t\t\tobject: node,\n\t\t\t\t\tproperty: this.gobbleIdentifier(),\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if (ch === Jsep.OBRACK_CODE) {\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.MEMBER_EXP,\n\t\t\t\t\tcomputed: true,\n\t\t\t\t\tobject: node,\n\t\t\t\t\tproperty: this.gobbleExpression()\n\t\t\t\t};\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tch = this.code;\n\t\t\t\tif (ch !== Jsep.CBRACK_CODE) {\n\t\t\t\t\tthis.throwError('Unclosed [');\n\t\t\t\t}\n\t\t\t\tthis.index++;\n\t\t\t}\n\t\t\telse if (ch === Jsep.OPAREN_CODE) {\n\t\t\t\t// A function call is being made; gobble all the arguments\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.CALL_EXP,\n\t\t\t\t\t'arguments': this.gobbleArguments(Jsep.CPAREN_CODE),\n\t\t\t\t\tcallee: node\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.gobbleSpaces();\n\t\t\tch = this.code;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\n\t * keep track of everything in the numeric literal and then calling `parseFloat` on that string\n\t * @returns {jsep.Literal}\n\t */\n\tgobbleNumericLiteral() {\n\t\tlet number = '', ch, chCode;\n\n\t\twhile (Jsep.isDecimalDigit(this.code)) {\n\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t}\n\n\t\tif (this.code === Jsep.PERIOD_CODE) { // can start with a decimal marker\n\t\t\tnumber += this.expr.charAt(this.index++);\n\n\t\t\twhile (Jsep.isDecimalDigit(this.code)) {\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\t\t}\n\n\t\tch = this.char;\n\n\t\tif (ch === 'e' || ch === 'E') { // exponent marker\n\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\tch = this.char;\n\n\t\t\tif (ch === '+' || ch === '-') { // exponent sign\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\n\t\t\twhile (Jsep.isDecimalDigit(this.code)) { // exponent itself\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\n\t\t\tif (!Jsep.isDecimalDigit(this.expr.charCodeAt(this.index - 1)) ) {\n\t\t\t\tthis.throwError('Expected exponent (' + number + this.char + ')');\n\t\t\t}\n\t\t}\n\n\t\tchCode = this.code;\n\n\t\t// Check to make sure this isn't a variable name that start with a number (123abc)\n\t\tif (Jsep.isIdentifierStart(chCode)) {\n\t\t\tthis.throwError('Variable names cannot start with a number (' +\n\t\t\t\tnumber + this.char + ')');\n\t\t}\n\t\telse if (chCode === Jsep.PERIOD_CODE || (number.length === 1 && number.charCodeAt(0) === Jsep.PERIOD_CODE)) {\n\t\t\tthis.throwError('Unexpected period');\n\t\t}\n\n\t\treturn {\n\t\t\ttype: Jsep.LITERAL,\n\t\t\tvalue: parseFloat(number),\n\t\t\traw: number\n\t\t};\n\t}\n\n\t/**\n\t * Parses a string literal, staring with single or double quotes with basic support for escape codes\n\t * e.g. `\"hello world\"`, `'this is\\nJSEP'`\n\t * @returns {jsep.Literal}\n\t */\n\tgobbleStringLiteral() {\n\t\tlet str = '';\n\t\tlet quote = this.expr.charAt(this.index++);\n\t\tlet closed = false;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tlet ch = this.expr.charAt(this.index++);\n\n\t\t\tif (ch === quote) {\n\t\t\t\tclosed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (ch === '\\\\') {\n\t\t\t\t// Check for all of the common escape codes\n\t\t\t\tch = this.expr.charAt(this.index++);\n\n\t\t\t\tswitch (ch) {\n\t\t\t\t\tcase 'n': str += '\\n'; break;\n\t\t\t\t\tcase 'r': str += '\\r'; break;\n\t\t\t\t\tcase 't': str += '\\t'; break;\n\t\t\t\t\tcase 'b': str += '\\b'; break;\n\t\t\t\t\tcase 'f': str += '\\f'; break;\n\t\t\t\t\tcase 'v': str += '\\x0B'; break;\n\t\t\t\t\tdefault : str += ch;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstr += ch;\n\t\t\t}\n\t\t}\n\n\t\tif (!closed) {\n\t\t\tthis.throwError('Unclosed quote after \"' + str + '\"');\n\t\t}\n\n\t\treturn {\n\t\t\ttype: Jsep.LITERAL,\n\t\t\tvalue: str,\n\t\t\traw: quote + str + quote\n\t\t};\n\t}\n\n\t/**\n\t * Gobbles only identifiers\n\t * e.g.: `foo`, `_value`, `$x1`\n\t * Also, this function checks if that identifier is a literal:\n\t * (e.g. `true`, `false`, `null`) or `this`\n\t * @returns {jsep.Identifier}\n\t */\n\tgobbleIdentifier() {\n\t\tlet ch = this.code, start = this.index;\n\n\t\tif (Jsep.isIdentifierStart(ch)) {\n\t\t\tthis.index++;\n\t\t}\n\t\telse {\n\t\t\tthis.throwError('Unexpected ' + this.char);\n\t\t}\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tch = this.code;\n\n\t\t\tif (Jsep.isIdentifierPart(ch)) {\n\t\t\t\tthis.index++;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\ttype: Jsep.IDENTIFIER,\n\t\t\tname: this.expr.slice(start, this.index),\n\t\t};\n\t}\n\n\t/**\n\t * Gobbles a list of arguments within the context of a function call\n\t * or array literal. This function also assumes that the opening character\n\t * `(` or `[` has already been gobbled, and gobbles expressions and commas\n\t * until the terminator character `)` or `]` is encountered.\n\t * e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\n\t * @param {number} termination\n\t * @returns {jsep.Expression[]}\n\t */\n\tgobbleArguments(termination) {\n\t\tconst args = [];\n\t\tlet closed = false;\n\t\tlet separator_count = 0;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tthis.gobbleSpaces();\n\t\t\tlet ch_i = this.code;\n\n\t\t\tif (ch_i === termination) { // done parsing\n\t\t\t\tclosed = true;\n\t\t\t\tthis.index++;\n\n\t\t\t\tif (termination === Jsep.CPAREN_CODE && separator_count && separator_count >= args.length){\n\t\t\t\t\tthis.throwError('Unexpected token ' + String.fromCharCode(termination));\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (ch_i === Jsep.COMMA_CODE) { // between expressions\n\t\t\t\tthis.index++;\n\t\t\t\tseparator_count++;\n\n\t\t\t\tif (separator_count !== args.length) { // missing argument\n\t\t\t\t\tif (termination === Jsep.CPAREN_CODE) {\n\t\t\t\t\t\tthis.throwError('Unexpected token ,');\n\t\t\t\t\t}\n\t\t\t\t\telse if (termination === Jsep.CBRACK_CODE) {\n\t\t\t\t\t\tfor (let arg = args.length; arg < separator_count; arg++) {\n\t\t\t\t\t\t\targs.push(null);\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\telse if (args.length !== separator_count && separator_count !== 0) {\n\t\t\t\t// NOTE: `&& separator_count !== 0` allows for either all commas, or all spaces as arguments\n\t\t\t\tthis.throwError('Expected comma');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst node = this.gobbleExpression();\n\n\t\t\t\tif (!node || node.type === Jsep.COMPOUND) {\n\t\t\t\t\tthis.throwError('Expected comma');\n\t\t\t\t}\n\n\t\t\t\targs.push(node);\n\t\t\t}\n\t\t}\n\n\t\tif (!closed) {\n\t\t\tthis.throwError('Expected ' + String.fromCharCode(termination));\n\t\t}\n\n\t\treturn args;\n\t}\n\n\t/**\n\t * Responsible for parsing a group of things within parentheses `()`\n\t * that have no identifier in front (so not a function call)\n\t * This function assumes that it needs to gobble the opening parenthesis\n\t * and then tries to gobble everything within that parenthesis, assuming\n\t * that the next thing it should see is the close parenthesis. If not,\n\t * then the expression probably doesn't have a `)`\n\t * @returns {boolean|jsep.Expression}\n\t */\n\tgobbleGroup() {\n\t\tthis.index++;\n\t\tlet nodes = this.gobbleExpressions(Jsep.CPAREN_CODE);\n\t\tif (this.code === Jsep.CPAREN_CODE) {\n\t\t\tthis.index++;\n\t\t\tif (nodes.length === 1) {\n\t\t\t\treturn nodes[0];\n\t\t\t}\n\t\t\telse if (!nodes.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn {\n\t\t\t\t\ttype: Jsep.SEQUENCE_EXP,\n\t\t\t\t\texpressions: nodes,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.throwError('Unclosed (');\n\t\t}\n\t}\n\n\t/**\n\t * Responsible for parsing Array literals `[1, 2, 3]`\n\t * This function assumes that it needs to gobble the opening bracket\n\t * and then tries to gobble the expressions as arguments.\n\t * @returns {jsep.ArrayExpression}\n\t */\n\tgobbleArray() {\n\t\tthis.index++;\n\n\t\treturn {\n\t\t\ttype: Jsep.ARRAY_EXP,\n\t\t\telements: this.gobbleArguments(Jsep.CBRACK_CODE)\n\t\t};\n\t}\n}\n\n// Static fields:\nconst hooks = new Hooks();\nObject.assign(Jsep, {\n\thooks,\n\tplugins: new Plugins(Jsep),\n\n\t// Node Types\n\t// ----------\n\t// This is the full set of types that any JSEP node can be.\n\t// Store them here to save space when minified\n\tCOMPOUND:        'Compound',\n\tSEQUENCE_EXP:    'SequenceExpression',\n\tIDENTIFIER:      'Identifier',\n\tMEMBER_EXP:      'MemberExpression',\n\tLITERAL:         'Literal',\n\tTHIS_EXP:        'ThisExpression',\n\tCALL_EXP:        'CallExpression',\n\tUNARY_EXP:       'UnaryExpression',\n\tBINARY_EXP:      'BinaryExpression',\n\tARRAY_EXP:       'ArrayExpression',\n\n\tTAB_CODE:    9,\n\tLF_CODE:     10,\n\tCR_CODE:     13,\n\tSPACE_CODE:  32,\n\tPERIOD_CODE: 46, // '.'\n\tCOMMA_CODE:  44, // ','\n\tSQUOTE_CODE: 39, // single quote\n\tDQUOTE_CODE: 34, // double quotes\n\tOPAREN_CODE: 40, // (\n\tCPAREN_CODE: 41, // )\n\tOBRACK_CODE: 91, // [\n\tCBRACK_CODE: 93, // ]\n\tQUMARK_CODE: 63, // ?\n\tSEMCOL_CODE: 59, // ;\n\tCOLON_CODE:  58, // :\n\n\n\t// Operations\n\t// ----------\n\t// Use a quickly-accessible map to store all of the unary operators\n\t// Values are set to `1` (it really doesn't matter)\n\tunary_ops: {\n\t\t'-': 1,\n\t\t'!': 1,\n\t\t'~': 1,\n\t\t'+': 1\n\t},\n\n\t// Also use a map for the binary operations but set their values to their\n\t// binary precedence for quick reference (higher number = higher precedence)\n\t// see [Order of operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)\n\tbinary_ops: {\n\t\t'||': 1, '&&': 2, '|': 3, '^': 4, '&': 5,\n\t\t'==': 6, '!=': 6, '===': 6, '!==': 6,\n\t\t'<': 7, '>': 7, '<=': 7, '>=': 7,\n\t\t'<<': 8, '>>': 8, '>>>': 8,\n\t\t'+': 9, '-': 9,\n\t\t'*': 10, '/': 10, '%': 10\n\t},\n\n\t// Additional valid identifier chars, apart from a-z, A-Z and 0-9 (except on the starting char)\n\tadditional_identifier_chars: new Set(['$', '_']),\n\n\t// Literals\n\t// ----------\n\t// Store the values to return for the various literals we may encounter\n\tliterals: {\n\t\t'true': true,\n\t\t'false': false,\n\t\t'null': null\n\t},\n\n\t// Except for `this`, which is special. This could be changed to something like `'self'` as well\n\tthis_str: 'this',\n});\nJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\nJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\n// Backward Compatibility:\nconst jsep = expr => (new Jsep(expr)).parse();\nconst staticMethods = Object.getOwnPropertyNames(Jsep);\nstaticMethods\n\t.forEach((m) => {\n\t\tif (jsep[m] === undefined && m !== 'prototype') {\n\t\t\tjsep[m] = Jsep[m];\n\t\t}\n\t});\njsep.Jsep = Jsep; // allows for const { Jsep } = require('jsep');\n\nconst CONDITIONAL_EXP = 'ConditionalExpression';\n\nvar ternary = {\n\tname: 'ternary',\n\n\tinit(jsep) {\n\t\t// Ternary expression: test ? consequent : alternate\n\t\tjsep.hooks.add('after-expression', function gobbleTernary(env) {\n\t\t\tif (env.node && this.code === jsep.QUMARK_CODE) {\n\t\t\t\tthis.index++;\n\t\t\t\tconst test = env.node;\n\t\t\t\tconst consequent = this.gobbleExpression();\n\n\t\t\t\tif (!consequent) {\n\t\t\t\t\tthis.throwError('Expected expression');\n\t\t\t\t}\n\n\t\t\t\tthis.gobbleSpaces();\n\n\t\t\t\tif (this.code === jsep.COLON_CODE) {\n\t\t\t\t\tthis.index++;\n\t\t\t\t\tconst alternate = this.gobbleExpression();\n\n\t\t\t\t\tif (!alternate) {\n\t\t\t\t\t\tthis.throwError('Expected expression');\n\t\t\t\t\t}\n\t\t\t\t\tenv.node = {\n\t\t\t\t\t\ttype: CONDITIONAL_EXP,\n\t\t\t\t\t\ttest,\n\t\t\t\t\t\tconsequent,\n\t\t\t\t\t\talternate,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t// if binary operator is custom-added (i.e. object plugin), then correct it to a ternary node:\n\t\t\t\telse if (consequent.operator === ':') {\n\t\t\t\t\tenv.node = {\n\t\t\t\t\t\ttype: CONDITIONAL_EXP,\n\t\t\t\t\t\ttest,\n\t\t\t\t\t\tconsequent: consequent.left,\n\t\t\t\t\t\talternate: consequent.right,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.throwError('Expected :');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n};\n\n// Add default plugins:\n\njsep.plugins.register(ternary);\n\nexport { Jsep, jsep as default };\n","import jsep from \"jsep\";\nimport { CoreType } from \"../../../core/Type\";\njsep.addUnaryOp(\"@\");\nlet precedence = 10;\njsep.addBinaryOp(\"**\", precedence);\nconst JSEP_IDENTIFIER = \"Identifier\";\nconst JSEP_LITERAL = \"Literal\";\nconst JSEP_CALL_EXPRESSION = \"CallExpression\";\nconst STRING_EXPRESSION_SEPARATOR = \"`\";\nexport class ParsedTree {\n  constructor() {\n  }\n  parseExpression(string) {\n    try {\n      this.reset();\n      this.node = jsep(string);\n    } catch (e) {\n      const message = `could not parse the expression '${string}' (error: ${e})`;\n      this.error_message = message;\n    }\n  }\n  parseExpressionForStringParam(string) {\n    try {\n      this.reset();\n      const elements = ParsedTree.stringValueElements(string);\n      const nodes = [];\n      for (let i = 0; i < elements.length; i++) {\n        const element = elements[i];\n        let node;\n        if (i % 2 == 1) {\n          node = jsep(element);\n        } else {\n          const sanitizedElement = element.replace(/\\'/g, \"\\\\'\");\n          node = {\n            type: JSEP_LITERAL,\n            value: `'${sanitizedElement}'`,\n            raw: `'${sanitizedElement}'`\n          };\n        }\n        nodes.push(node);\n      }\n      this.node = {\n        type: JSEP_CALL_EXPRESSION,\n        arguments: nodes,\n        callee: {\n          type: JSEP_IDENTIFIER,\n          name: \"strConcat\"\n        }\n      };\n    } catch (e) {\n      const message = `could not parse the expression '${string}' (error: ${e})`;\n      this.error_message = message;\n    }\n  }\n  static stringValueElements(v) {\n    if (v != null) {\n      if (CoreType.isString(v)) {\n        return v.split(STRING_EXPRESSION_SEPARATOR);\n      } else {\n        return [];\n      }\n    } else {\n      return [];\n    }\n  }\n  reset() {\n    this.node = void 0;\n    this.error_message = void 0;\n  }\n}\n","import { CoreType } from \"../../../core/Type\";\nexport const VARIABLE_PREFIX = \"$\";\nexport class BaseTraverser {\n  constructor(param) {\n    this.param = param;\n    this._set_error_from_error_bound = this._set_error_from_error.bind(this);\n  }\n  clear_error() {\n    this._error_message = void 0;\n  }\n  set_error(message) {\n    this._error_message = this._error_message || message;\n  }\n  _set_error_from_error(error) {\n    if (CoreType.isString(error)) {\n      this._error_message = error;\n    } else {\n      this._error_message = error.message;\n    }\n  }\n  is_errored() {\n    return this._error_message != null;\n  }\n  error_message() {\n    return this._error_message;\n  }\n  reset() {\n    this._error_message = void 0;\n  }\n  traverse_node(node) {\n    const method_name = `traverse_${node.type}`;\n    const method = this[method_name];\n    if (method) {\n      return this[method_name](node);\n    } else {\n      this.set_error(`expression unknown node type: ${node.type}`);\n    }\n  }\n  traverse_BinaryExpression(node) {\n    return `${this.traverse_node(node.left)} ${node.operator} ${this.traverse_node(node.right)}`;\n  }\n  traverse_MemberExpression(node) {\n    return `${this.traverse_node(node.object)}.${this.traverse_node(node.property)}`;\n  }\n  traverse_ConditionalExpression(node) {\n    return `(${this.traverse_node(node.test)}) ? (${this.traverse_node(node.consequent)}) : (${this.traverse_node(node.alternate)})`;\n  }\n  traverse_Compound(node) {\n    const args = node.body;\n    let traversed_args = [];\n    for (let i = 0; i < args.length; i++) {\n      const arg_node = args[i];\n      if (arg_node.type == \"Identifier\") {\n        if (arg_node.name[0] == VARIABLE_PREFIX) {\n          traversed_args.push(\"`${\" + this.traverse_node(arg_node) + \"}`\");\n        } else {\n          traversed_args.push(`'${arg_node.name}'`);\n        }\n      } else {\n        traversed_args.push(\"`${\" + this.traverse_node(arg_node) + \"}`\");\n      }\n    }\n    return traversed_args.join(\" + \");\n  }\n  traverse_Literal(node) {\n    return `${node.raw}`;\n  }\n}\n","const VAR_CORE_GEOMETRY = `coreGeometry`;\nexport class AttributeRequirementsController {\n  constructor() {\n  }\n  reset() {\n    if (this._attributeNames) {\n      this._attributeNames.clear();\n    }\n  }\n  assignAttributesLines() {\n    if (this._attributeNames) {\n      const lines = [];\n      for (let attribName of this._attributeNames) {\n        lines.push(AttributeRequirementsController.assignAttributeLine(attribName));\n      }\n      return lines.join(\";\\n\");\n    } else {\n      return \"\";\n    }\n  }\n  assignArraysLines() {\n    if (this._attributeNames) {\n      const lines = [];\n      if (this._attributeNames.size > 0) {\n        const coreGeoLine = `const ${VAR_CORE_GEOMETRY} = entities[0].coreGeometry();`;\n        lines.push(coreGeoLine);\n      }\n      for (let attribName of this._attributeNames) {\n        lines.push(AttributeRequirementsController.assignItemSizeLine(attribName));\n        lines.push(AttributeRequirementsController.assignArrayLine(attribName));\n      }\n      return lines.join(\";\\n\");\n    } else {\n      return \"\";\n    }\n  }\n  attributePresenceCheckLine() {\n    if (this._attributeNames) {\n      const varNames = [];\n      for (let attribName of this._attributeNames) {\n        const varName = AttributeRequirementsController._varAttribute(attribName);\n        varNames.push(varName);\n      }\n      if (varNames.length > 0) {\n        return varNames.join(\" && \");\n      }\n    }\n    return \"true\";\n  }\n  add(attribName) {\n    this._attributeNames = this._attributeNames || /* @__PURE__ */ new Set();\n    this._attributeNames.add(attribName);\n  }\n  static assignAttributeLine(attribName) {\n    const varAttribute = this._varAttribute(attribName);\n    return `const ${varAttribute} = getEntitiesAttribute(entities,'${attribName}')`;\n  }\n  static assignItemSizeLine(attribName) {\n    const varAttribute = this._varAttribute(attribName);\n    const varAttributeSize = this._varAttribSize(attribName);\n    return `const ${varAttributeSize} = ${varAttribute}.itemSize`;\n  }\n  static assignArrayLine(attribName) {\n    const varAttribute = this._varAttribute(attribName);\n    const varArray = this._varArray(attribName);\n    const isIndexedCondition = `${VAR_CORE_GEOMETRY}.isAttribIndexed('${attribName}')`;\n    const indexedArray = `entities.map(e=>e.indexedAttribValue('${attribName}'))`;\n    const nonIndexedArray = `${varAttribute}.array`;\n    return `const ${varArray} = ${isIndexedCondition} ? ${indexedArray} : ${nonIndexedArray}`;\n  }\n  static _varAttribute(attribName) {\n    return `attrib_${attribName}`;\n  }\n  static _varAttribSize(attribName) {\n    return `attrib_size_${attribName}`;\n  }\n  static _varArray(attribName) {\n    return `array_${attribName}`;\n  }\n  varAttributeSize(attribName) {\n    return AttributeRequirementsController._varAttribSize(attribName);\n  }\n  varArray(attribName) {\n    return AttributeRequirementsController._varArray(attribName);\n  }\n}\n","import { LiteralConstructsController } from \"../LiteralConstructsController\";\nimport { Attribute, CoreAttribute } from \"../../../core/geometry/Attribute\";\nimport { BaseTraverser } from \"./_Base\";\nimport { AttributeRequirementsController } from \"../AttributeRequirementsController\";\nimport { CoreMath } from \"../../../core/math/_Module\";\nimport { CoreString } from \"../../../core/String\";\nimport { Poly } from \"../../Poly\";\nimport { CoreType } from \"../../../core/Type\";\nconst NATIVE_MATH_METHODS = [\n  \"abs\",\n  \"acos\",\n  \"acosh\",\n  \"asin\",\n  \"asinh\",\n  \"atan\",\n  \"atan2\",\n  \"atanh\",\n  \"ceil\",\n  \"cos\",\n  \"cosh\",\n  \"exp\",\n  \"expm1\",\n  \"floor\",\n  \"log\",\n  \"log1p\",\n  \"log2\",\n  \"log10\",\n  \"max\",\n  \"min\",\n  \"pow\",\n  \"round\",\n  \"sign\",\n  \"sin\",\n  \"sinh\",\n  \"sqrt\",\n  \"tan\",\n  \"tanh\"\n];\nconst NATIVE_ES6_MATH_METHODS = [\"cbrt\", \"hypot\", \"log10\", \"trunc\"];\nconst NATIVE_MATH_METHODS_RENAMED = {\n  math_random: \"random\"\n};\nconst CORE_MATH_METHODS = [\"fit\", \"fit01\", \"fract\", \"deg2rad\", \"rad2deg\", \"rand\", \"clamp\"];\nimport { Easing } from \"../../../core/math/Easing\";\nconst EASING_METHODS = Object.keys(Easing);\nconst CORE_STRING_METHODS = [\"precision\"];\nconst NATIVE_MATH_CONSTANTS = [\"E\", \"LN2\", \"LN10\", \"LOG10E\", \"LOG2E\", \"PI\", \"SQRT1_2\", \"SQRT2\"];\nconst DIRECT_EXPRESSION_FUNCTIONS = {};\nNATIVE_MATH_METHODS.forEach((name) => {\n  DIRECT_EXPRESSION_FUNCTIONS[name] = `Math.${name}`;\n});\nNATIVE_ES6_MATH_METHODS.forEach((name) => {\n  DIRECT_EXPRESSION_FUNCTIONS[name] = `Math.${name}`;\n});\nObject.keys(NATIVE_MATH_METHODS_RENAMED).forEach((name) => {\n  const remaped = NATIVE_MATH_METHODS_RENAMED[name];\n  DIRECT_EXPRESSION_FUNCTIONS[name] = `Math.${remaped}`;\n});\nCORE_MATH_METHODS.forEach((name) => {\n  DIRECT_EXPRESSION_FUNCTIONS[name] = `Core.Math.${name}`;\n});\nEASING_METHODS.forEach((name) => {\n  DIRECT_EXPRESSION_FUNCTIONS[name] = `Core.Math.Easing.${name}`;\n});\nCORE_STRING_METHODS.forEach((name) => {\n  DIRECT_EXPRESSION_FUNCTIONS[name] = `Core.String.${name}`;\n});\nconst LITERAL_CONSTRUCT = {\n  if: LiteralConstructsController.if\n};\nconst GLOBAL_CONSTANTS = {};\nNATIVE_MATH_CONSTANTS.forEach((name) => {\n  GLOBAL_CONSTANTS[name] = `Math.${name}`;\n});\nconst QUOTE = \"'\";\nconst ARGUMENTS_SEPARATOR = \", \";\nconst ATTRIBUTE_PREFIX = \"@\";\nimport { VARIABLE_PREFIX } from \"./_Base\";\nimport { CorePoint } from \"../../../core/geometry/Point\";\nconst PROPERTY_OFFSETS = {\n  x: 0,\n  y: 1,\n  z: 2,\n  w: 3,\n  r: 0,\n  g: 1,\n  b: 2\n};\nconst Core = {\n  Math: CoreMath,\n  String: CoreString\n};\nexport class FunctionGenerator extends BaseTraverser {\n  constructor(param) {\n    super(param);\n    this.param = param;\n    this._attribute_requirements_controller = new AttributeRequirementsController();\n    this.methods = [];\n    this.method_index = -1;\n    this.methodDependencies = [];\n    this.immutableDependencies = [];\n  }\n  parseTree(parsedTree) {\n    this.reset();\n    if (parsedTree.error_message == null) {\n      try {\n        this._attribute_requirements_controller = new AttributeRequirementsController();\n        if (parsedTree.node) {\n          const function_main_string = this.traverse_node(parsedTree.node);\n          if (function_main_string && !this.is_errored()) {\n            this.function_main_string = function_main_string;\n          }\n        } else {\n          console.warn(\"no parsedTree.node\");\n        }\n      } catch (e) {\n        console.warn(`error in expression for param ${this.param.path()}`);\n        console.warn(e);\n      }\n      if (this.function_main_string) {\n        try {\n          const body = this._functionBody();\n          this.function = new Function(\"CorePoint\", \"Core\", \"CoreType\", \"param\", \"methods\", \"_set_error_from_error\", `\n\t\t\t\t\ttry {\n\t\t\t\t\t\t${body}\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t_set_error_from_error(e)\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}`);\n        } catch (e) {\n          console.warn(e);\n          this.set_error(\"cannot generate function\");\n        }\n      } else {\n        this.set_error(\"cannot generate function body\");\n      }\n    } else {\n      this.set_error(\"cannot parse expression\");\n    }\n  }\n  reset() {\n    super.reset();\n    this.function_main_string = void 0;\n    this.methods = [];\n    this.method_index = -1;\n    this.function = void 0;\n    this.methodDependencies = [];\n    this.immutableDependencies = [];\n  }\n  _functionBody() {\n    if (this.param.options.isExpressionForEntities()) {\n      return `\n\t\t\tconst entities = param.expressionController.entities();\n\t\t\tfunction getEntitiesAttribute(entities, attribName){\n\t\t\t\tconst firstEntity = entities[0];\n\t\t\t\tif(firstEntity instanceof CorePoint){\n\t\t\t\t\treturn firstEntity.geometry().attributes[attribName];\n\t\t\t\t} else {\n\t\t\t\t\treturn entities.map(e=>e.attribValue(attribName));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction getCorePointAttribValue(entity, attribName, array, attributeSize, propertyOffset){\n\t\t\t\treturn array[entity.index()*attributeSize+propertyOffset];\n\t\t\t}\n\t\t\tfunction getCoreObjectAttribValue(entity, attribName, array, attributeSize, propertyOffset){\n\t\t\t\tconst value = entity.attribValue(attribName);\n\t\t\t\tif(CoreType.isArray(value)){\n\t\t\t\t\treturn value[propertyOffset]\n\t\t\t\t} else {\n\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(entities){\n\t\t\t\treturn new Promise( async (resolve, reject)=>{\n\t\t\t\t\tlet entity;\n\t\t\t\t\tconst entityCallback = param.expressionController.entityCallback();\n\t\t\t\t\t// assign_attributes_lines\n\t\t\t\t\t${this._attribute_requirements_controller.assignAttributesLines()}\n\t\t\t\t\t// check if attributes are present\n\t\t\t\t\tif( ${this._attribute_requirements_controller.attributePresenceCheckLine()} ){\n\t\t\t\t\t\t// assign function\n\t\t\t\t\t\tconst getEntityAttribValue = (entities[0] instanceof CorePoint) ? getCorePointAttribValue : getCoreObjectAttribValue;\n\t\t\t\t\t\t// assign_arrays_lines\n\t\t\t\t\t\t${this._attribute_requirements_controller.assignArraysLines()}\n\t\t\t\t\t\tfor(let index=0; index < entities.length; index++){\n\t\t\t\t\t\t\tentity = entities[index];\n\t\t\t\t\t\t\tresult = ${this.function_main_string};\n\t\t\t\t\t\t\tentityCallback(entity, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst error = new Error('attribute not found')\n\t\t\t\t\t\t_set_error_from_error(error)\n\t\t\t\t\t\treject(error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn []`;\n    } else {\n      return `\n\t\t\treturn new Promise( async (resolve, reject)=>{\n\t\t\t\ttry {\n\t\t\t\t\tconst value = ${this.function_main_string}\n\t\t\t\t\tresolve(value)\n\t\t\t\t} catch(e) {\n\t\t\t\t\t_set_error_from_error(e)\n\t\t\t\t\treject()\n\t\t\t\t}\n\t\t\t})\n\t\t\t`;\n    }\n  }\n  evalAllowed() {\n    return this.function != null;\n  }\n  evalFunction() {\n    if (this.function) {\n      this.clear_error();\n      const result = this.function(CorePoint, Core, CoreType, this.param, this.methods, this._set_error_from_error_bound);\n      return result;\n    }\n  }\n  traverse_CallExpression(node) {\n    const methodArguments = node.arguments.map((arg) => {\n      return this.traverse_node(arg);\n    });\n    const callee = node.callee;\n    const method_name = callee.name;\n    if (method_name) {\n      const literal_contruct = LITERAL_CONSTRUCT[method_name];\n      if (literal_contruct) {\n        return literal_contruct(methodArguments);\n      }\n      const arguments_joined = `${methodArguments.join(ARGUMENTS_SEPARATOR)}`;\n      const direct_function_name = DIRECT_EXPRESSION_FUNCTIONS[method_name];\n      if (direct_function_name) {\n        return `${direct_function_name}(${arguments_joined})`;\n      }\n      const expressionRegister = Poly.expressionsRegister;\n      const indirect_method = expressionRegister.getMethod(method_name);\n      if (indirect_method) {\n        const pathNode = node.arguments[0];\n        const functionString = `return ${methodArguments[0]}`;\n        let pathArgumentFunction;\n        let pathArgument;\n        try {\n          pathArgumentFunction = new Function(functionString);\n          pathArgument = pathArgumentFunction();\n        } catch {\n        }\n        this._createMethodAndDependencies(method_name, pathArgument, pathNode);\n        return `(await methods[${this.method_index}].processArguments([${arguments_joined}]))`;\n      } else {\n        const available_methods = expressionRegister.availableMethods().join(\", \");\n        const message = `method not found (${method_name}), available methods are: ${available_methods}`;\n        Poly.warn(message);\n      }\n    }\n    this.set_error(`unknown method: ${method_name}`);\n  }\n  traverse_BinaryExpression(node) {\n    return `(${this.traverse_node(node.left)} ${node.operator} ${this.traverse_node(node.right)})`;\n  }\n  traverse_UnaryExpression(node) {\n    if (node.operator === ATTRIBUTE_PREFIX) {\n      let argument = node.argument;\n      let attributeName;\n      let property;\n      switch (argument.type) {\n        case \"Identifier\": {\n          const argument_identifier = argument;\n          attributeName = argument_identifier.name;\n          break;\n        }\n        case \"MemberExpression\": {\n          const argument_member_expression = argument;\n          const attrib_node = argument_member_expression.object;\n          const property_node = argument_member_expression.property;\n          attributeName = attrib_node.name;\n          property = property_node.name;\n          break;\n        }\n      }\n      if (attributeName) {\n        attributeName = CoreAttribute.remapName(attributeName);\n        if (attributeName == Attribute.POINT_INDEX || attributeName == Attribute.OBJECT_INDEX) {\n          return \"((entity != null) ? entity.index() : 0)\";\n        } else {\n          const var_attribute_size = this._attribute_requirements_controller.varAttributeSize(attributeName);\n          const var_array = this._attribute_requirements_controller.varArray(attributeName);\n          this._attribute_requirements_controller.add(attributeName);\n          let propertyOffset = property ? PROPERTY_OFFSETS[property] : 0;\n          if (propertyOffset == null) {\n            propertyOffset = 0;\n          }\n          return `getEntityAttribValue(entity, '${attributeName}', ${var_array}, ${var_attribute_size}, ${propertyOffset})`;\n        }\n      } else {\n        console.warn(\"attribute not found\");\n        return \"\";\n      }\n    } else {\n      return `${node.operator}${this.traverse_node(node.argument)}`;\n    }\n  }\n  traverse_Identifier(node) {\n    const identifier_first_char = node.name[0];\n    if (identifier_first_char == VARIABLE_PREFIX) {\n      const identifier_name_without_dollar_sign = node.name.substring(1);\n      const direct_constant_name = GLOBAL_CONSTANTS[identifier_name_without_dollar_sign];\n      if (direct_constant_name) {\n        return direct_constant_name;\n      }\n      const method_name = `traverse_Identifier_${identifier_name_without_dollar_sign}`;\n      const method = this[method_name];\n      if (method) {\n        return this[method_name]();\n      } else {\n        this.set_error(`identifier unknown: ${node.name}`);\n      }\n    } else {\n      return node.name;\n    }\n  }\n  traverse_Identifier_F() {\n    this.immutableDependencies.push(this.param.scene().timeController.graphNode);\n    return `param.scene().timeController.frame()`;\n  }\n  traverse_Identifier_T() {\n    this.immutableDependencies.push(this.param.scene().timeController.graphNode);\n    return `param.scene().timeController.time()`;\n  }\n  traverse_Identifier_OS() {\n    const nameNode = this.param.node.nameController.graphNode();\n    this.param.addGraphInput(nameNode);\n    return `param.node.name()`;\n  }\n  traverse_Identifier_CH() {\n    return `${QUOTE}${this.param.name()}${QUOTE}`;\n  }\n  traverse_Identifier_CEX() {\n    return this._method_centroid(\"x\");\n  }\n  traverse_Identifier_CEY() {\n    return this._method_centroid(\"y\");\n  }\n  traverse_Identifier_CEZ() {\n    return this._method_centroid(\"z\");\n  }\n  _method_centroid(component) {\n    const method_arguments = [0, `${QUOTE}${component}${QUOTE}`];\n    const arguments_joined = method_arguments.join(ARGUMENTS_SEPARATOR);\n    this._createMethodAndDependencies(\"centroid\", 0);\n    return `(await methods[${this.method_index}].processArguments([${arguments_joined}]))`;\n  }\n  _createMethodAndDependencies(methodName, pathArgument, pathNode) {\n    const expressionRegister = Poly.expressionsRegister;\n    const methodConstructor = expressionRegister.getMethod(methodName);\n    if (!methodConstructor) {\n      const availableMethods = expressionRegister.availableMethods();\n      const message = `method not found (${methodName}), available methods are: ${availableMethods.join(\", \")}`;\n      this.set_error(message);\n      Poly.warn(message);\n      return;\n    }\n    const method = new methodConstructor(this.param);\n    this.method_index += 1;\n    this.methods[this.method_index] = method;\n    if (method.requireDependency() && pathArgument != null) {\n      const methodDependency = method.findDependency(pathArgument);\n      if (methodDependency) {\n        if (pathNode) {\n          methodDependency.set_jsep_node(pathNode);\n        }\n        this.methodDependencies.push(methodDependency);\n      } else {\n        if (pathNode && CoreType.isString(pathArgument)) {\n          this.param.scene().missingExpressionReferencesController.register(this.param, pathArgument);\n        }\n      }\n    }\n  }\n}\n","export class LiteralConstructsController {\n  static if(args) {\n    const condition = args[0];\n    const val_true = args[1];\n    const val_false = args[2];\n    return `(${condition}) ? (${val_true}) : (${val_false})`;\n  }\n}\n","const ARGUMENTS_SEPARATOR = \", \";\nimport { BaseTraverser } from \"./_Base\";\nexport class ExpressionStringGenerator extends BaseTraverser {\n  constructor(param) {\n    super(param);\n    this.param = param;\n  }\n  parse_tree(parsed_tree) {\n    if (parsed_tree.error_message == null && parsed_tree.node) {\n      try {\n        return this.traverse_node(parsed_tree.node);\n      } catch (e) {\n        this.set_error(\"could not traverse tree\");\n      }\n    } else {\n      this.set_error(\"cannot parse tree\");\n    }\n  }\n  traverse_CallExpression(node) {\n    const method_arguments = node.arguments.map((arg) => {\n      return this.traverse_node(arg);\n    });\n    const arguments_joined = `${method_arguments.join(ARGUMENTS_SEPARATOR)}`;\n    const method_name = node.callee.name;\n    return `${method_name}(${arguments_joined})`;\n  }\n  traverse_UnaryExpression(node) {\n    return `${node.operator}${this.traverse_node(node.argument)}`;\n  }\n  traverse_Identifier(node) {\n    return `${node.name}`;\n  }\n}\n","export class DependenciesController {\n  constructor(param) {\n    this.param = param;\n    this._cyclicGraphDetected = false;\n    this.methodDependencies = [];\n  }\n  set_error(message) {\n    this.error_message = this.error_message || message;\n  }\n  reset() {\n    this.param.graphDisconnectPredecessors();\n    this.methodDependencies.forEach((methodDependency) => {\n      methodDependency.reset();\n    });\n    this.methodDependencies = [];\n  }\n  update(functionGenerator) {\n    this._cyclicGraphDetected = false;\n    this._connectImmutableDependencies(functionGenerator);\n    this.methodDependencies = functionGenerator.methodDependencies;\n    this._handleMethodDependencies();\n    this._listenForNameChanges();\n  }\n  _connectImmutableDependencies(function_generator) {\n    function_generator.immutableDependencies.forEach((dependency) => {\n      if (this._cyclicGraphDetected == false) {\n        if (this.param.addGraphInput(dependency) == false) {\n          this._cyclicGraphDetected = true;\n          this.set_error(\"cannot create expression, infinite graph detected\");\n          this.reset();\n          return;\n        }\n      }\n    });\n  }\n  _handleMethodDependencies() {\n    this.methodDependencies.forEach((methodDependency) => {\n      if (this._cyclicGraphDetected == false) {\n        this._handleMethodDependency(methodDependency);\n      }\n    });\n  }\n  _handleMethodDependency(method_dependency) {\n    const node_simple = method_dependency.resolved_graph_node;\n    if (node_simple) {\n      if (!this.param.addGraphInput(node_simple)) {\n        this._cyclicGraphDetected = true;\n        this.set_error(\"cannot create expression, infinite graph detected\");\n        this.reset();\n        return;\n      }\n    }\n  }\n  _listenForNameChanges() {\n    this.methodDependencies.forEach((methodDependency) => {\n      methodDependency.listen_for_name_changes();\n    });\n  }\n}\n","import { ParsedTree } from \"./traversers/ParsedTree\";\nimport { FunctionGenerator } from \"./traversers/FunctionGenerator\";\nimport { ExpressionStringGenerator } from \"./traversers/ExpressionStringGenerator\";\nimport { DependenciesController } from \"./DependenciesController\";\nexport class ExpressionManager {\n  constructor(param) {\n    this.param = param;\n    this._parseStarted = false;\n    this.parsedTree = new ParsedTree();\n    this._functionGenerator = new FunctionGenerator(this.param);\n    this.dependenciesController = new DependenciesController(this.param);\n  }\n  parseExpression(expression) {\n    if (this._parseStarted) {\n      throw new Error(`parse in progress for param ${this.param.path()}`);\n    }\n    this._parseStarted = true;\n    this.parsedTree = this.parsedTree || new ParsedTree();\n    this.reset();\n    if (this.param.expressionParsedAsString()) {\n      this.parsedTree.parseExpressionForStringParam(expression);\n    } else {\n      this.parsedTree.parseExpression(expression);\n    }\n    this._functionGenerator.parseTree(this.parsedTree);\n    if (this._functionGenerator.error_message() == null) {\n      this.dependenciesController.update(this._functionGenerator);\n      if (this.dependenciesController.error_message) {\n        this.param.states.error.set(this.dependenciesController.error_message);\n      } else {\n        this._parseStarted = false;\n      }\n    }\n  }\n  async computeFunction() {\n    if (this._computeAllowed()) {\n      try {\n        const newValue = await this._functionGenerator.evalFunction();\n        return newValue;\n      } catch (e) {\n      }\n    } else {\n    }\n  }\n  reset() {\n    this._parseStarted = false;\n    this.dependenciesController.reset();\n    this._functionGenerator.reset();\n  }\n  is_errored() {\n    return this._functionGenerator.is_errored();\n  }\n  error_message() {\n    return this._functionGenerator.error_message();\n  }\n  _computeAllowed() {\n    return this._functionGenerator.evalAllowed();\n  }\n  updateFromMethodDependencyNameChange() {\n    this._expressionStringGenerator = this._expressionStringGenerator || new ExpressionStringGenerator(this.param);\n    const new_expression_string = this._expressionStringGenerator.parse_tree(this.parsedTree);\n    if (new_expression_string) {\n      this.param.set(new_expression_string);\n    } else {\n      console.warn(\"failed to regenerate expression\");\n    }\n  }\n}\n","import { ExpressionManager } from \"../../expressions/ExpressionManager\";\nexport class ExpressionController {\n  constructor(param) {\n    this.param = param;\n  }\n  dispose() {\n    this.param.scene().expressionsController.deregisterParam(this.param);\n    this._resetMethodDependencies();\n  }\n  _resetMethodDependencies() {\n    var _a, _b;\n    (_a = this._method_dependencies_by_graph_node_id) == null ? void 0 : _a.forEach((method_dependency) => {\n      method_dependency.dispose();\n    });\n    (_b = this._method_dependencies_by_graph_node_id) == null ? void 0 : _b.clear();\n  }\n  registerMethodDependency(method_dependency) {\n    this._method_dependencies_by_graph_node_id = this._method_dependencies_by_graph_node_id || /* @__PURE__ */ new Map();\n    this._method_dependencies_by_graph_node_id.set(method_dependency.graphNodeId(), method_dependency);\n  }\n  active() {\n    return this._expression != null;\n  }\n  expression() {\n    return this._expression;\n  }\n  is_errored() {\n    if (this._manager) {\n      return this._manager.is_errored();\n    }\n    return false;\n  }\n  error_message() {\n    if (this._manager) {\n      return this._manager.error_message();\n    }\n    return null;\n  }\n  requires_entities() {\n    return this.param.options.isExpressionForEntities();\n  }\n  set_expression(expression, set_dirty = true) {\n    var _a;\n    this.param.scene().missingExpressionReferencesController.deregisterParam(this.param);\n    this.param.scene().expressionsController.deregisterParam(this.param);\n    if (this._expression != expression) {\n      this._resetMethodDependencies();\n      this._expression = expression;\n      if (this._expression) {\n        this._manager = this._manager || new ExpressionManager(this.param);\n        this._manager.parseExpression(this._expression);\n      } else {\n        (_a = this._manager) == null ? void 0 : _a.reset();\n      }\n      if (set_dirty) {\n        this.param.setDirty();\n      }\n    }\n  }\n  updateFromMethodDependencyNameChange() {\n    if (this._manager && this.active()) {\n      this._manager.updateFromMethodDependencyNameChange();\n    }\n  }\n  computeExpression() {\n    if (this._manager && this.active()) {\n      return this._manager.computeFunction();\n    }\n  }\n  async computeExpressionForEntities(entities, callback) {\n    var _a, _b;\n    this._setEntities(entities, callback);\n    await this.computeExpression();\n    if ((_a = this._manager) == null ? void 0 : _a.error_message()) {\n      this.param.node.states.error.set(`expression evalution error: ${(_b = this._manager) == null ? void 0 : _b.error_message()}`);\n    }\n    this._resetEntities();\n  }\n  computeExpressionForPoints(entities, callback) {\n    return this.computeExpressionForEntities(entities, callback);\n  }\n  computeExpressionForObjects(entities, callback) {\n    return this.computeExpressionForEntities(entities, callback);\n  }\n  computeExpressionForCoreGroup(entity, callback) {\n    return this.computeExpressionForEntities([entity], callback);\n  }\n  entities() {\n    return this._entities;\n  }\n  entityCallback() {\n    return this._entityCallback;\n  }\n  _setEntities(entities, callback) {\n    this._entities = entities;\n    this._entityCallback = callback;\n  }\n  _resetEntities() {\n    this._entities = void 0;\n    this._entityCallback = void 0;\n  }\n}\n","import { TypedParam } from \"./_Base\";\nimport { ExpressionController } from \"./utils/ExpressionController\";\nimport { ParamEvent } from \"../poly/ParamEvent\";\nimport { CoreType } from \"../../core/Type\";\nexport class TypedNumericParam extends TypedParam {\n  isNumeric() {\n    return true;\n  }\n  isDefault() {\n    return this._raw_input == this._default_value;\n  }\n  _prefilterInvalidRawInput(raw_input) {\n    if (CoreType.isArray(raw_input)) {\n      return raw_input[0];\n    } else {\n      return raw_input;\n    }\n  }\n  processRawInput() {\n    this.states.error.clear();\n    const converted = this.convert(this._raw_input);\n    if (converted != null) {\n      if (this._expression_controller) {\n        this._expression_controller.set_expression(void 0, false);\n        this.emitController.emit(ParamEvent.EXPRESSION_UPDATED);\n      }\n      if (converted != this._value) {\n        this._update_value(converted);\n        this.setSuccessorsDirty(this);\n      }\n    } else {\n      if (CoreType.isString(this._raw_input)) {\n        this._expression_controller = this._expression_controller || new ExpressionController(this);\n        if (this._raw_input != this._expression_controller.expression()) {\n          this._expression_controller.set_expression(this._raw_input);\n          this.emitController.emit(ParamEvent.EXPRESSION_UPDATED);\n        }\n      } else {\n        this.states.error.set(`param input is invalid (${this.path()})`);\n      }\n    }\n  }\n  async processComputation() {\n    var _a;\n    if (((_a = this.expressionController) == null ? void 0 : _a.active()) && !this.expressionController.requires_entities()) {\n      const expression_result = await this.expressionController.computeExpression();\n      if (this.expressionController.is_errored()) {\n        this.states.error.set(`expression error: \"${this.expressionController.expression()}\" (${this.expressionController.error_message()})`);\n      } else {\n        const converted = this.convert(expression_result);\n        if (converted != null) {\n          if (this.states.error.active()) {\n            this.states.error.clear();\n          }\n          this._update_value(converted);\n        } else {\n          this.states.error.set(`expression returns an invalid type (${expression_result}) (${this.expressionController.expression()})`);\n        }\n      }\n    }\n  }\n  _update_value(new_value) {\n    this._value = new_value;\n    const parentParam = this.parentParam();\n    if (parentParam) {\n      parentParam.setValueFromComponents();\n    }\n    this.options.executeCallback();\n    this.emitController.emit(ParamEvent.VALUE_UPDATED);\n    this.removeDirtyState();\n  }\n}\n","import { TypedNumericParam } from \"./_Numeric\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { CoreString } from \"../../core/String\";\nimport { CoreType } from \"../../core/Type\";\nexport class FloatParam extends TypedNumericParam {\n  static type() {\n    return ParamType.FLOAT;\n  }\n  defaultValueSerialized() {\n    return this._default_value;\n  }\n  rawInputSerialized() {\n    return this._raw_input;\n  }\n  valueSerialized() {\n    return this.value;\n  }\n  _copyValue(param) {\n    this.set(param.valueSerialized());\n  }\n  _prefilterInvalidRawInput(raw_input) {\n    if (CoreType.isArray(raw_input)) {\n      return raw_input[0];\n    }\n    if (CoreType.isString(raw_input) && CoreString.isNumber(raw_input)) {\n      const num = parseFloat(raw_input);\n      if (num != null) {\n        const converted = this.convert(num);\n        if (converted != null) {\n          return converted;\n        }\n      }\n    }\n    if (CoreType.isNumber(raw_input)) {\n      const converted = this.convert(raw_input);\n      if (converted != null) {\n        return converted;\n      }\n    }\n    return raw_input;\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return raw_input1 == raw_input2;\n  }\n  static areValuesEqual(val1, val2) {\n    return val1 == val2;\n  }\n  static convert(raw_val) {\n    if (CoreType.isNumber(raw_val)) {\n      return raw_val;\n    } else {\n      if (CoreType.isBoolean(raw_val)) {\n        return raw_val ? 1 : 0;\n      } else {\n        if (CoreString.isNumber(raw_val)) {\n          const parsed = parseFloat(raw_val);\n          if (CoreType.isNumber(parsed)) {\n            return parsed;\n          }\n        }\n      }\n      return null;\n    }\n  }\n  convert(raw_val) {\n    const result = FloatParam.convert(raw_val);\n    if (result != null) {\n      return this.options.ensureInRange(result);\n    } else {\n      return result;\n    }\n  }\n}\n","import { TypedParam } from \"./_Base\";\nimport { FloatParam } from \"./Float\";\nimport { ParamEvent } from \"../poly/ParamEvent\";\nimport { CoreType } from \"../../core/Type\";\nexport class TypedMultipleParam extends TypedParam {\n  constructor() {\n    super(...arguments);\n    this._components_contructor = FloatParam;\n  }\n  get components() {\n    return this._components;\n  }\n  isNumeric() {\n    return true;\n  }\n  isDefault() {\n    for (let c of this.components) {\n      if (!c.isDefault()) {\n        return false;\n      }\n    }\n    return true;\n  }\n  rawInput() {\n    return this._components.map((c) => c.rawInput());\n  }\n  rawInputSerialized() {\n    return this._components.map((c) => c.rawInputSerialized());\n  }\n  _copyValue(param) {\n    for (let i = 0; i < this.components.length; i++) {\n      const component = this.components[i];\n      const src_component = param.components[i];\n      component.copyValue(src_component);\n    }\n  }\n  initComponents() {\n    if (this._components != null) {\n      return;\n    }\n    let index = 0;\n    this._components = new Array(this.componentNames().length);\n    for (let componentName of this.componentNames()) {\n      const component = new this._components_contructor(this.scene(), this.node);\n      let default_val;\n      if (CoreType.isArray(this._default_value)) {\n        default_val = this._default_value[index];\n      } else {\n        default_val = this._default_value[componentName];\n      }\n      component.options.copy(this.options);\n      component.setInitValue(default_val);\n      component.setName(`${this.name()}${componentName}`);\n      component.set_parent_param(this);\n      this._components[index] = component;\n      index++;\n    }\n  }\n  async processComputation() {\n    await this.compute_components();\n    this.setValueFromComponents();\n  }\n  hasExpression() {\n    var _a;\n    for (let c of this.components) {\n      if ((_a = c.expressionController) == null ? void 0 : _a.active()) {\n        return true;\n      }\n    }\n    return false;\n  }\n  async compute_components() {\n    const components = this.components;\n    const promises = [];\n    for (let c of components) {\n      if (c.isDirty()) {\n        promises.push(c.compute());\n      }\n    }\n    await Promise.all(promises);\n    this.removeDirtyState();\n  }\n  _prefilterInvalidRawInput(raw_input) {\n    if (!CoreType.isArray(raw_input)) {\n      const number_or_string = raw_input;\n      const raw_input_wrapped_in_array = this.componentNames().map(() => number_or_string);\n      return raw_input_wrapped_in_array;\n    } else {\n      return raw_input;\n    }\n  }\n  processRawInput() {\n    const cooker = this.scene().cooker;\n    cooker.block();\n    const components = this.components;\n    for (let c of components) {\n      c.emitController.blockParentEmit();\n    }\n    const value = this._raw_input;\n    let prev_value = 0;\n    if (CoreType.isArray(value)) {\n      for (let i = 0; i < components.length; i++) {\n        let component_value = value[i];\n        if (component_value == null) {\n          component_value = prev_value;\n        }\n        components[i].set(component_value);\n        prev_value = component_value;\n      }\n    } else {\n      for (let i = 0; i < components.length; i++) {\n        const component_name = this.componentNames()[i];\n        let component_value = value[component_name];\n        if (component_value == null) {\n          component_value = prev_value;\n        }\n        components[i].set(component_value);\n        prev_value = component_value;\n      }\n    }\n    cooker.unblock();\n    for (let i = 0; i < components.length; i++) {\n      components[i].emitController.unblockParentEmit();\n    }\n    this.emitController.emit(ParamEvent.VALUE_UPDATED);\n  }\n}\n","import { TypedMultipleParam } from \"./_Multiple\";\nimport { Color } from \"three\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { ColorConversion } from \"../../core/Color\";\nimport { TypeAssert } from \"../poly/Assert\";\nimport { CoreType } from \"../../core/Type\";\nconst COMPONENT_NAMES_COLOR = [\"r\", \"g\", \"b\"];\nconst tmp = [0, 0, 0];\nexport class ColorParam extends TypedMultipleParam {\n  constructor() {\n    super(...arguments);\n    this._value = new Color();\n    this._valuePreConversion = new Color();\n    this._valueSerializedDirty = false;\n    this._valueSerialized = [0, 0, 0];\n    this._valuePreConversionSerialized = [0, 0, 0];\n    this._copiedValue = [0, 0, 0];\n  }\n  static type() {\n    return ParamType.COLOR;\n  }\n  componentNames() {\n    return COMPONENT_NAMES_COLOR;\n  }\n  defaultValueSerialized() {\n    if (CoreType.isArray(this._default_value)) {\n      return this._default_value;\n    } else {\n      return this._default_value.toArray();\n    }\n  }\n  _prefilterInvalidRawInput(rawInput) {\n    if (rawInput instanceof Color) {\n      rawInput.toArray(tmp);\n      return tmp;\n    }\n    return super._prefilterInvalidRawInput(rawInput);\n  }\n  valueSerialized() {\n    this._updateValueSerializedIfRequired();\n    return this._valueSerialized;\n  }\n  valuePreConversionSerialized() {\n    this._updateValueSerializedIfRequired();\n    return this._valuePreConversionSerialized;\n  }\n  _copyValue(param) {\n    param.value.toArray(this._copiedValue);\n    this.set(this._copiedValue);\n  }\n  _cloneRawInput(raw_input) {\n    if (raw_input instanceof Color) {\n      return raw_input.clone();\n    } else {\n      const new_array = [raw_input[0], raw_input[1], raw_input[2]];\n      if (new_array[0] == null) {\n        new_array[0] = new_array[0] || 0;\n      }\n      if (new_array[1] == null) {\n        new_array[1] = new_array[1] || new_array[0];\n      }\n      if (new_array[2] == null) {\n        new_array[2] = new_array[2] || new_array[1];\n      }\n      return new_array;\n    }\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    if (raw_input1 instanceof Color) {\n      if (raw_input2 instanceof Color) {\n        return raw_input1.equals(raw_input2);\n      } else {\n        return raw_input1.r == raw_input2[0] && raw_input1.g == raw_input2[1] && raw_input1.b == raw_input2[2];\n      }\n    } else {\n      if (raw_input2 instanceof Color) {\n        return raw_input1[0] == raw_input2.r && raw_input1[1] == raw_input2.g && raw_input1[2] == raw_input2.b;\n      } else {\n        return raw_input1[0] == raw_input2[0] && raw_input1[1] == raw_input2[1] && raw_input1[2] == raw_input2[2];\n      }\n    }\n  }\n  static areValuesEqual(val1, val2) {\n    return val1.equals(val2);\n  }\n  initComponents() {\n    super.initComponents();\n    this.r = this.components[0];\n    this.g = this.components[1];\n    this.b = this.components[2];\n    this._valueSerializedDirty = true;\n  }\n  postOptionsInitialize() {\n    this.setValueFromComponents();\n  }\n  _updateValueSerializedIfRequired() {\n    if (!this._valueSerializedDirty) {\n      return;\n    }\n    this._valueSerialized[0] = this._value.r;\n    this._valueSerialized[1] = this._value.g;\n    this._valueSerialized[2] = this._value.b;\n    this._valuePreConversionSerialized[0] = this._valuePreConversion.r;\n    this._valuePreConversionSerialized[1] = this._valuePreConversion.g;\n    this._valuePreConversionSerialized[2] = this._valuePreConversion.b;\n  }\n  valuePreConversion() {\n    return this._valuePreConversion;\n  }\n  setValueFromComponents() {\n    this._valuePreConversion.r = this.r.value;\n    this._valuePreConversion.g = this.g.value;\n    this._valuePreConversion.b = this.b.value;\n    this._value.copy(this._valuePreConversion);\n    this._applyColorConversion();\n    this._valueSerializedDirty = true;\n  }\n  _applyColorConversion() {\n    const conversion = this.options.colorConversion();\n    switch (conversion) {\n      case ColorConversion.NONE: {\n        return;\n      }\n      case ColorConversion.SRGB_TO_LINEAR: {\n        this._value.convertSRGBToLinear();\n        return;\n      }\n      case ColorConversion.LINEAR_TO_SRGB: {\n        this._value.convertLinearToSRGB();\n        return;\n      }\n    }\n    TypeAssert.unreachable(conversion);\n  }\n}\n","import { TypedNumericParam } from \"./_Numeric\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { CoreString } from \"../../core/String\";\nimport { CoreType } from \"../../core/Type\";\nexport class IntegerParam extends TypedNumericParam {\n  static type() {\n    return ParamType.INTEGER;\n  }\n  defaultValueSerialized() {\n    return this._default_value;\n  }\n  rawInputSerialized() {\n    return this._raw_input;\n  }\n  valueSerialized() {\n    return this.value;\n  }\n  _copyValue(param) {\n    this.set(param.valueSerialized());\n  }\n  _prefilterInvalidRawInput(raw_input) {\n    if (CoreType.isArray(raw_input)) {\n      return raw_input[0];\n    }\n    if (CoreType.isString(raw_input) && CoreString.isNumber(raw_input)) {\n      const num = parseInt(raw_input);\n      if (num != null) {\n        const converted = this.convert(num);\n        if (converted != null) {\n          return converted;\n        }\n      }\n    }\n    if (CoreType.isNumber(raw_input)) {\n      const converted = this.convert(raw_input);\n      if (converted != null) {\n        return converted;\n      }\n    }\n    return raw_input;\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return raw_input1 == raw_input2;\n  }\n  static areValuesEqual(val1, val2) {\n    return val1 == val2;\n  }\n  static convert(raw_val) {\n    if (CoreType.isNumber(raw_val)) {\n      return Math.round(raw_val);\n    } else {\n      if (CoreType.isBoolean(raw_val)) {\n        return raw_val ? 1 : 0;\n      } else {\n        if (CoreString.isNumber(raw_val)) {\n          const parsed = parseInt(raw_val);\n          if (CoreType.isNumber(parsed)) {\n            return parsed;\n          }\n        }\n      }\n      return null;\n    }\n  }\n  convert(raw_val) {\n    const result = IntegerParam.convert(raw_val);\n    if (result != null) {\n      return this.options.ensureInRange(result);\n    } else {\n      return result;\n    }\n  }\n}\n","import { CoreWalker } from \"./Walker\";\nexport class DecomposedPath {\n  constructor() {\n    this._index = -1;\n    this._path_elements = [];\n    this._named_nodes = [];\n    this._graph_node_ids = [];\n    this._node_element_by_graph_node_id = /* @__PURE__ */ new Map();\n  }\n  reset() {\n    this._index = -1;\n    this._path_elements = [];\n    this._named_nodes = [];\n    this._graph_node_ids = [];\n    this._node_element_by_graph_node_id.clear();\n  }\n  add_node(name, node) {\n    this._index += 1;\n    if (name == node.name()) {\n      this._named_nodes[this._index] = node;\n    }\n    this._graph_node_ids[this._index] = node.graphNodeId();\n    this._node_element_by_graph_node_id.set(node.graphNodeId(), name);\n  }\n  add_path_element(path_element) {\n    this._index += 1;\n    this._path_elements[this._index] = path_element;\n  }\n  named_graph_nodes() {\n    return this._named_nodes;\n  }\n  named_nodes() {\n    const nodes = [];\n    for (let graph_node of this._named_nodes) {\n      if (graph_node) {\n        const node = graph_node;\n        if (node.nameController) {\n          nodes.push(node);\n        }\n      }\n    }\n    return nodes;\n  }\n  update_from_name_change(node) {\n    const named_graph_node_ids = this._named_nodes.map((n) => n == null ? void 0 : n.graphNodeId());\n    if (named_graph_node_ids.includes(node.graphNodeId())) {\n      this._node_element_by_graph_node_id.set(node.graphNodeId(), node.name());\n    }\n  }\n  to_path() {\n    const elements = new Array(this._index);\n    for (let i = 0; i <= this._index; i++) {\n      const node = this._named_nodes[i];\n      if (node) {\n        const node_name = this._node_element_by_graph_node_id.get(node.graphNodeId());\n        if (node_name) {\n          elements[i] = node_name;\n        }\n      } else {\n        const path_element = this._path_elements[i];\n        if (path_element) {\n          elements[i] = path_element;\n        }\n      }\n    }\n    let joined_path = elements.join(CoreWalker.SEPARATOR);\n    const first_char = joined_path[0];\n    if (first_char) {\n      if (!CoreWalker.NON_LETTER_PREFIXES.includes(first_char)) {\n        joined_path = `${CoreWalker.SEPARATOR}${joined_path}`;\n      }\n    }\n    return joined_path;\n  }\n}\n","import { ParsedTree } from \"./../expressions/traversers/ParsedTree\";\nimport { ParamEvent } from \"./../poly/ParamEvent\";\nimport { TypedParam } from \"./_Base\";\nimport { ExpressionController } from \"./utils/ExpressionController\";\nexport class TypedStringParam extends TypedParam {\n  expressionParsedAsString() {\n    return true;\n  }\n  processRawInput() {\n    this.states.error.clear();\n    if (ParsedTree.stringValueElements(this._raw_input).length >= 3) {\n      this._expression_controller = this._expression_controller || new ExpressionController(this);\n      if (this._raw_input != this._expression_controller.expression()) {\n        this._expression_controller.set_expression(this._raw_input);\n        this.setDirty();\n        this.emitController.emit(ParamEvent.EXPRESSION_UPDATED);\n      }\n    } else {\n      this.processRawInputWithoutExpression();\n    }\n  }\n  async processComputation() {\n    var _a;\n    if (((_a = this.expressionController) == null ? void 0 : _a.active()) && !this.expressionController.requires_entities()) {\n      const expressionResult = await this.expressionController.computeExpression();\n      if (this.expressionController.is_errored()) {\n        this.states.error.set(`expression error: ${this.expressionController.error_message()}`);\n      } else {\n        const converted = this.convert(expressionResult);\n        if (converted != null) {\n          this._assignValue(converted);\n          this.emitController.emit(ParamEvent.VALUE_UPDATED);\n          this.options.executeCallback();\n        } else {\n          this.states.error.set(`expression returns an invalid type (${expressionResult})`);\n        }\n        this.removeDirtyState();\n      }\n    }\n  }\n}\n","import { ParamEvent } from \"./../poly/ParamEvent\";\nimport { DecomposedPath } from \"../../core/DecomposedPath\";\nimport { TypedStringParam } from \"./_BaseString\";\nexport class TypedPathParam extends TypedStringParam {\n  constructor() {\n    super(...arguments);\n    this.decomposedPath = new DecomposedPath();\n  }\n  dispose() {\n    this.scene().referencesController.resetReferenceFromParam(this);\n    super.dispose();\n  }\n  _handleReferences(node, path) {\n    this.scene().referencesController.setNamedNodesFromParam(this);\n    if (node) {\n      this.scene().referencesController.setReferenceFromParam(this, node);\n      this.scene().missingExpressionReferencesController.deregisterParam(this);\n    } else {\n      this.scene().missingExpressionReferencesController.register(this, path);\n    }\n  }\n  async processComputation() {\n    var _a;\n    if (((_a = this.expressionController) == null ? void 0 : _a.active()) && !this.expressionController.requires_entities()) {\n      await super.processComputation();\n    } else {\n      this._findTarget();\n    }\n  }\n  _setValuePathAndFindTarget(path) {\n    this._value.setPath(path);\n    this._findTarget();\n    this.setDirty();\n    this.emitController.emit(ParamEvent.VALUE_UPDATED);\n  }\n}\n","import { CoreType } from \"./../../core/Type\";\nimport { TypedPathParam } from \"./_BasePath\";\nimport { CoreWalker, TypedParamPathParamValue } from \"../../core/Walker\";\nimport { ParamType } from \"../poly/ParamType\";\nconst tmpConvertedValue = new TypedParamPathParamValue();\nexport class ParamPathParam extends TypedPathParam {\n  constructor() {\n    super(...arguments);\n    this._onResolvedParamDisposeBound = this._onResolvedParamDispose.bind(this);\n  }\n  static type() {\n    return ParamType.PARAM_PATH;\n  }\n  _initializeParam() {\n    this._value = new TypedParamPathParamValue();\n  }\n  defaultValueSerialized() {\n    return this._default_value;\n  }\n  rawInputSerialized() {\n    return `${this._raw_input}`;\n  }\n  valueSerialized() {\n    return `${this.value}`;\n  }\n  _copyValue(param) {\n    this.set(param.valueSerialized());\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return raw_input1 == raw_input2;\n  }\n  static areValuesEqual(val1, val2) {\n    return val1 == val2;\n  }\n  isDefault() {\n    return this._raw_input == this._default_value;\n  }\n  setParam(param) {\n    this.set(param.path());\n  }\n  processRawInputWithoutExpression() {\n    if (this._value.path() != this._raw_input) {\n      this._setValuePathAndFindTarget(this._raw_input);\n    }\n  }\n  _assignValue(value) {\n    const path = CoreType.isString(value) ? value : value.path();\n    if (this._value.path() != path) {\n      this._setValuePathAndFindTarget(path);\n    }\n  }\n  convert(rawVal) {\n    if (CoreType.isString(rawVal)) {\n      tmpConvertedValue.setPath(rawVal);\n      return tmpConvertedValue;\n    } else {\n      return null;\n    }\n  }\n  _findTarget() {\n    if (!this.node) {\n      return;\n    }\n    const path = this._value.path();\n    let param = null;\n    const pathNonEmpty = path != null && path !== \"\";\n    this.scene().referencesController.resetReferenceFromParam(this);\n    this.decomposedPath.reset();\n    if (pathNonEmpty) {\n      param = CoreWalker.findParam(this.node, path, this.decomposedPath);\n    }\n    const currentFoundEntity = this._value.param();\n    const newlyFoundEntity = param;\n    if (newlyFoundEntity) {\n      if (newlyFoundEntity.graphNodeId() == this.graphNodeId()) {\n        this.states.error.set(`param cannot refer to itself`);\n        return;\n      }\n    }\n    this._handleReferences(param, path);\n    if ((currentFoundEntity == null ? void 0 : currentFoundEntity.graphNodeId()) !== (newlyFoundEntity == null ? void 0 : newlyFoundEntity.graphNodeId())) {\n      const dependentOnFoundParam = this.options.dependentOnFoundParam();\n      const previouslyFoundParam = this._value.param();\n      if (previouslyFoundParam) {\n        if (dependentOnFoundParam) {\n          this.removeGraphInput(previouslyFoundParam);\n        } else {\n        }\n        previouslyFoundParam.deregisterOnDispose(this._onResolvedParamDisposeBound);\n      }\n      if (param) {\n        this._assignFoundParam(param);\n      } else {\n        this._value.setParam(null);\n      }\n      this.options.executeCallback();\n    }\n    this.removeDirtyState();\n  }\n  _assignFoundParam(param) {\n    const dependentOnFoundParam = this.options.dependentOnFoundParam();\n    this._value.setParam(param);\n    if (dependentOnFoundParam) {\n      this.addGraphInput(param);\n    }\n    param.onDispose(this._onResolvedParamDisposeBound);\n  }\n  notifyPathRebuildRequired(param) {\n    this.decomposedPath.update_from_name_change(param);\n    const new_path = this.decomposedPath.to_path();\n    this.set(new_path);\n  }\n  notifyTargetParamOwnerParamsUpdated(node) {\n    this.setDirty();\n  }\n  async _onResolvedParamDispose() {\n    this.setDirty();\n    await this.compute();\n  }\n}\n","import { CoreType } from \"./../../core/Type\";\nimport { TypedPathParam } from \"./_BasePath\";\nimport { CoreWalker } from \"../../core/Walker\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { TypedNodePathParamValue } from \"../../core/Walker\";\nconst tmpConvertedValue = new TypedNodePathParamValue();\nexport class NodePathParam extends TypedPathParam {\n  static type() {\n    return ParamType.NODE_PATH;\n  }\n  _initializeParam() {\n    this._value = new TypedNodePathParamValue();\n  }\n  defaultValueSerialized() {\n    return this._default_value;\n  }\n  rawInputSerialized() {\n    return `${this._raw_input}`;\n  }\n  valueSerialized() {\n    return `${this.value}`;\n  }\n  _copyValue(param) {\n    this.set(param.valueSerialized());\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return raw_input1 == raw_input2;\n  }\n  static areValuesEqual(val1, val2) {\n    return val1 == val2;\n  }\n  isDefault() {\n    return this._raw_input == this._default_value;\n  }\n  setNode(node, options) {\n    if ((options == null ? void 0 : options.relative) == true) {\n      const path = CoreWalker.relativePath(this.node, node);\n      this.set(path);\n    } else {\n      this.set(node.path());\n    }\n  }\n  processRawInputWithoutExpression() {\n    if (this._value.path() != this._raw_input) {\n      this._setValuePathAndFindTarget(this._raw_input);\n    }\n  }\n  _assignValue(value) {\n    const path = CoreType.isString(value) ? value : value.path();\n    if (this._value.path() != path) {\n      this._setValuePathAndFindTarget(path);\n    }\n  }\n  convert(rawVal) {\n    if (CoreType.isString(rawVal)) {\n      tmpConvertedValue.setPath(rawVal);\n      return tmpConvertedValue;\n    } else {\n      return null;\n    }\n  }\n  _findTarget() {\n    if (!this.node) {\n      return;\n    }\n    const path = this._value.path();\n    let node = null;\n    const pathNonEmpty = path != null && path !== \"\";\n    this.scene().referencesController.resetReferenceFromParam(this);\n    this.decomposedPath.reset();\n    if (pathNonEmpty) {\n      node = CoreWalker.findNode(this.node, path, this.decomposedPath);\n    }\n    const currentFoundEntity = this._value.node();\n    const newlyFoundEntity = node;\n    if (newlyFoundEntity) {\n      if (newlyFoundEntity.graphNodeId() == this.node.graphNodeId()) {\n        this.states.error.set(`param cannot refer to its own node`);\n        return;\n      }\n    }\n    this._handleReferences(node, path);\n    if ((currentFoundEntity == null ? void 0 : currentFoundEntity.graphNodeId()) !== (newlyFoundEntity == null ? void 0 : newlyFoundEntity.graphNodeId())) {\n      const dependentOnFoundNode = this.options.dependentOnFoundNode();\n      const previouslyFoundNode = this._value.node();\n      if (previouslyFoundNode) {\n        if (dependentOnFoundNode) {\n          this.removeGraphInput(previouslyFoundNode);\n        } else {\n        }\n      }\n      if (node) {\n        this._assignFoundNode(node);\n      } else {\n        this._value.setNode(null);\n      }\n      this.options.executeCallback();\n    }\n    if (pathNonEmpty && !node && this.scene().loadingController.loaded()) {\n      if (pathNonEmpty) {\n        this.states.error.set(`no node found at path '${path}'`);\n      }\n    }\n    this.removeDirtyState();\n  }\n  _assignFoundNode(node) {\n    const dependentOnFoundNode = this.options.dependentOnFoundNode();\n    if (this._isNodeExpectedContext(node)) {\n      if (this._isNodeExpectedType(node)) {\n        this.states.error.clear();\n        this._value.setNode(node);\n        if (dependentOnFoundNode) {\n          this.addGraphInput(node);\n        }\n      } else {\n        this.states.error.set(`node type is ${node.type()} but the params expects one of ${(this._expectedNodeTypes() || []).join(\", \")}`);\n      }\n    } else {\n      this.states.error.set(`node context is ${node.context()} but the params expects a ${this._expectedContext()}`);\n    }\n  }\n  _expectedContext() {\n    return this.options.nodeSelectionContext();\n  }\n  _isNodeExpectedContext(node) {\n    const expectedContext = this._expectedContext();\n    if (expectedContext == null) {\n      return true;\n    }\n    return expectedContext == node.context();\n  }\n  _expectedNodeTypes() {\n    return this.options.nodeSelectionTypes();\n  }\n  _isNodeExpectedType(node) {\n    const expected_types = this._expectedNodeTypes();\n    if (expected_types == null) {\n      return true;\n    }\n    return expected_types == null ? void 0 : expected_types.includes(node.type());\n  }\n  notifyPathRebuildRequired(node) {\n    this.decomposedPath.update_from_name_change(node);\n    const newPath = this.decomposedPath.to_path();\n    this.set(newPath);\n  }\n  notifyTargetParamOwnerParamsUpdated(node) {\n    this.setDirty();\n  }\n}\n","import { CubicInterpolant } from \"three\";\nimport { MathUtils } from \"three\";\nimport { ArrayUtils } from \"../../../core/ArrayUtils\";\nexport class RampPoint {\n  constructor(_position = 0, _value = 0) {\n    this._position = _position;\n    this._value = _value;\n  }\n  toJSON() {\n    return {\n      position: this._position,\n      value: this._value\n    };\n  }\n  position() {\n    return this._position;\n  }\n  value() {\n    return this._value;\n  }\n  copy(point) {\n    this._position = point.position();\n    this._value = point.value();\n  }\n  clone() {\n    const point = new RampPoint();\n    point.copy(this);\n    return point;\n  }\n  isEqual(other_point) {\n    return this._position == other_point.position() && this._value == other_point.value();\n  }\n  isEqualJSON(json) {\n    return this._position == json.position && this._value == json.value;\n  }\n  fromJSON(json) {\n    this._position = json.position;\n    this._value = json.value;\n  }\n  static areEqualJSON(json1, json2) {\n    return json1.position == json2.position && json1.value == json2.value;\n  }\n  static fromJSON(json) {\n    return new RampPoint(json.position, json.value);\n  }\n}\nexport var RampInterpolation = /* @__PURE__ */ ((RampInterpolation2) => {\n  RampInterpolation2[\"CUBIC\"] = \"cubic\";\n  return RampInterpolation2;\n})(RampInterpolation || {});\nexport const RAMP_INTERPOLATIONS = [\"cubic\" /* CUBIC */];\nexport class RampValue {\n  constructor(_interpolation = \"cubic\" /* CUBIC */, _points = []) {\n    this._interpolation = _interpolation;\n    this._points = _points;\n    this._uuid = MathUtils.generateUUID();\n  }\n  uuid() {\n    return this._uuid;\n  }\n  interpolation() {\n    return this._interpolation;\n  }\n  points() {\n    return this._points;\n  }\n  static createInterpolantFromValues(positions, values) {\n    const valuesCount = 1;\n    const interpolatedValues = new Float32Array(valuesCount);\n    return new CubicInterpolant(positions, values, valuesCount, interpolatedValues);\n  }\n  createInterpolant() {\n    return RampValue.createInterpolant(this);\n  }\n  static createInterpolant(rampValue) {\n    const points = rampValue.points();\n    const sortedPoints = ArrayUtils.sortBy(points, (point) => point.position());\n    const positions = new Float32Array(sortedPoints.length);\n    const values = new Float32Array(sortedPoints.length);\n    let i = 0;\n    for (let sortedPoint of sortedPoints) {\n      positions[i] = sortedPoint.position();\n      values[i] = sortedPoint.value();\n      i++;\n    }\n    return this.createInterpolantFromValues(positions, values);\n  }\n  static fromJSON(json) {\n    const points = [];\n    for (let jsonPoint of json.points) {\n      points.push(RampPoint.fromJSON(jsonPoint));\n    }\n    let interpolation = json.interpolation;\n    if (interpolation == null || interpolation == \"\") {\n      interpolation = \"cubic\" /* CUBIC */;\n    }\n    return new RampValue(interpolation, points);\n  }\n  toJSON() {\n    return {\n      interpolation: this._interpolation,\n      points: this._points.map((p) => p.toJSON())\n    };\n  }\n  clone() {\n    const ramp = new RampValue();\n    ramp.copy(this);\n    return ramp;\n  }\n  copy(ramp) {\n    this._interpolation = ramp.interpolation();\n    const newPointsCount = ramp.points().length;\n    const currentPointsCount = this._points.length;\n    if (currentPointsCount > newPointsCount) {\n      const pointsCountToRemove = currentPointsCount - newPointsCount;\n      const spliceStart = currentPointsCount - pointsCountToRemove;\n      this._points.splice(spliceStart, pointsCountToRemove);\n    }\n    let index = 0;\n    for (let point of ramp.points()) {\n      const currentPoint = this._points[index];\n      if (currentPoint) {\n        currentPoint.copy(point);\n      } else {\n        this._points.push(point.clone());\n      }\n      index += 1;\n    }\n  }\n  isEqual(other_ramp_value) {\n    if (this._interpolation != other_ramp_value.interpolation()) {\n      return false;\n    }\n    const other_points = other_ramp_value.points();\n    if (this._points.length != other_points.length) {\n      return false;\n    }\n    let index = 0;\n    for (let point of this._points) {\n      const other_point = other_points[index];\n      if (!point.isEqual(other_point)) {\n        return false;\n      }\n      index += 1;\n    }\n    return true;\n  }\n  isEqualJSON(json) {\n    if (this._interpolation != json.interpolation) {\n      return false;\n    }\n    if (this._points.length != json.points.length) {\n      return false;\n    }\n    let index = 0;\n    for (let point of this._points) {\n      const other_point = json.points[index];\n      if (!point.isEqualJSON(other_point)) {\n        return false;\n      }\n      index += 1;\n    }\n    return true;\n  }\n  static are_json_equal(json1, json2) {\n    if (json1.interpolation != json2.interpolation) {\n      return false;\n    }\n    if (json1.points.length != json2.points.length) {\n      return false;\n    }\n    let index = 0;\n    for (let point1 of json1.points) {\n      const point2 = json2.points[index];\n      if (!RampPoint.areEqualJSON(point1, point2)) {\n        return false;\n      }\n      index += 1;\n    }\n    return true;\n  }\n  fromJSON(json) {\n    this._interpolation = json.interpolation;\n    const newPointsCount = json.points.length;\n    const currentPointsCount = this._points.length;\n    if (currentPointsCount > newPointsCount) {\n      const pointsCountToRemove = currentPointsCount - newPointsCount;\n      const spliceStart = currentPointsCount - pointsCountToRemove;\n      this._points.splice(spliceStart, pointsCountToRemove);\n    }\n    let index = 0;\n    for (let json_point of json.points) {\n      const currentPoint = this._points[index];\n      if (currentPoint) {\n        currentPoint.fromJSON(json_point);\n      } else {\n        this._points.push(RampPoint.fromJSON(json_point));\n      }\n      index += 1;\n    }\n  }\n}\n","import { RGBAFormat, FloatType } from \"three\";\nimport { DataTexture } from \"three\";\nimport { TypedParam } from \"./_Base\";\nimport { RampValue, RampPoint, RampInterpolation } from \"./ramp/RampValue\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { ParamEvent } from \"../poly/ParamEvent\";\nconst STRIDE = 4;\nconst TEXTURE_WIDTH = 1024;\nconst TEXTURE_HEIGHT = 1;\nconst TEXTURE_SIZE = TEXTURE_WIDTH * TEXTURE_HEIGHT;\nconst TEXTURE_BYTES_MULT = 1;\nconst _RampParam = class extends TypedParam {\n  constructor() {\n    super(...arguments);\n    this._textureData = new Float32Array(STRIDE * TEXTURE_SIZE);\n    this._rampTexture = new DataTexture(this._textureData, TEXTURE_WIDTH, TEXTURE_HEIGHT, RGBAFormat, FloatType);\n  }\n  static type() {\n    return ParamType.RAMP;\n  }\n  defaultValueSerialized() {\n    if (this._default_value instanceof RampValue) {\n      return this._default_value.toJSON();\n    } else {\n      return this._default_value;\n    }\n  }\n  _cloneRawInput(raw_input) {\n    if (raw_input instanceof RampValue) {\n      return raw_input.clone();\n    } else {\n      return RampValue.fromJSON(raw_input).toJSON();\n    }\n  }\n  rawInputSerialized() {\n    if (this._raw_input instanceof RampValue) {\n      return this._raw_input.toJSON();\n    } else {\n      return RampValue.fromJSON(this._raw_input).toJSON();\n    }\n  }\n  valueSerialized() {\n    return this.value.toJSON();\n  }\n  _copyValue(param) {\n    this.set(param.valueSerialized());\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    if (raw_input1 instanceof RampValue) {\n      if (raw_input2 instanceof RampValue) {\n        return raw_input1.isEqual(raw_input2);\n      } else {\n        return raw_input1.isEqualJSON(raw_input2);\n      }\n    } else {\n      if (raw_input2 instanceof RampValue) {\n        return raw_input2.isEqualJSON(raw_input1);\n      } else {\n        return RampValue.are_json_equal(raw_input1, raw_input2);\n      }\n    }\n  }\n  static areValuesEqual(val1, val2) {\n    return val1.isEqual(val2);\n  }\n  isDefault() {\n    if (this._default_value instanceof RampValue) {\n      return this.value.isEqual(this._default_value);\n    } else {\n      return this.value.isEqualJSON(this._default_value);\n    }\n  }\n  processRawInput() {\n    if (this._raw_input instanceof RampValue) {\n      if (!this._value) {\n        this._value = this._raw_input;\n      } else {\n        this._value.copy(this._raw_input);\n      }\n    } else {\n      if (!this._value) {\n        this._value = RampValue.fromJSON(this._raw_input);\n      } else {\n        this._value.fromJSON(this._raw_input);\n      }\n    }\n    this._resetRampInterpolant();\n    this._updateRampTexture();\n    this.options.executeCallback();\n    this.emitController.emit(ParamEvent.VALUE_UPDATED);\n    this.setSuccessorsDirty(this);\n  }\n  hasExpression() {\n    return false;\n  }\n  _resetRampInterpolant() {\n    this._rampInterpolant = void 0;\n  }\n  rampTexture() {\n    return this._rampTexture;\n  }\n  _updateRampTexture() {\n    this._updateRampTextureData();\n    this.rampTexture().needsUpdate = true;\n  }\n  _updateRampTextureData() {\n    let stride = 0;\n    let position = 0;\n    let value = 0;\n    for (var i = 0; i < TEXTURE_SIZE; i++) {\n      stride = i * STRIDE;\n      position = i / TEXTURE_WIDTH;\n      value = this.valueAtPosition(position);\n      this._textureData[stride + 0] = value * TEXTURE_BYTES_MULT;\n      this._textureData[stride + 1] = 0;\n      this._textureData[stride + 2] = 0;\n    }\n  }\n  interpolant() {\n    return this._rampInterpolant = this._rampInterpolant || this._createInterpolant();\n  }\n  _createInterpolant() {\n    return this.value.createInterpolant();\n  }\n  valueAtPosition(position) {\n    return this.interpolant().evaluate(position)[0];\n  }\n};\nexport let RampParam = _RampParam;\nRampParam.DEFAULT_VALUE = new RampValue(RampInterpolation.CUBIC, [new RampPoint(0, 0), new RampPoint(1, 1)]);\nRampParam.DEFAULT_VALUE_JSON = _RampParam.DEFAULT_VALUE.toJSON();\n","import { TypedMultipleParam } from \"./_Multiple\";\nimport { Vector2 } from \"three\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { CoreType } from \"../../core/Type\";\nconst COMPONENT_NAMES_VECTOR2 = [\"x\", \"y\"];\nconst tmp = [0, 0];\nexport class Vector2Param extends TypedMultipleParam {\n  constructor() {\n    super(...arguments);\n    this._value = new Vector2();\n    this._copied_value = [0, 0];\n  }\n  static type() {\n    return ParamType.VECTOR2;\n  }\n  componentNames() {\n    return COMPONENT_NAMES_VECTOR2;\n  }\n  defaultValueSerialized() {\n    if (CoreType.isArray(this._default_value)) {\n      return this._default_value;\n    } else {\n      return this._default_value.toArray();\n    }\n  }\n  _prefilterInvalidRawInput(rawInput) {\n    if (rawInput instanceof Vector2) {\n      rawInput.toArray(tmp);\n      return tmp;\n    }\n    return super._prefilterInvalidRawInput(rawInput);\n  }\n  valueSerialized() {\n    return this.value.toArray();\n  }\n  _copyValue(param) {\n    param.value.toArray(this._copied_value);\n    this.set(this._copied_value);\n  }\n  _cloneRawInput(raw_input) {\n    if (raw_input instanceof Vector2) {\n      return raw_input.clone();\n    } else {\n      const new_array = [raw_input[0], raw_input[1]];\n      if (new_array[0] == null) {\n        new_array[0] = new_array[0] || 0;\n      }\n      if (new_array[1] == null) {\n        new_array[1] = new_array[1] || new_array[0];\n      }\n      return new_array;\n    }\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    if (raw_input1 instanceof Vector2) {\n      if (raw_input2 instanceof Vector2) {\n        return raw_input1.equals(raw_input2);\n      } else {\n        return raw_input1.x == raw_input2[0] && raw_input1.y == raw_input2[1];\n      }\n    } else {\n      if (raw_input2 instanceof Vector2) {\n        return raw_input1[0] == raw_input2.x && raw_input1[1] == raw_input2.y;\n      } else {\n        return raw_input1[0] == raw_input2[0] && raw_input1[1] == raw_input2[1];\n      }\n    }\n  }\n  static areValuesEqual(val1, val2) {\n    return val1.equals(val2);\n  }\n  initComponents() {\n    super.initComponents();\n    this.x = this.components[0];\n    this.y = this.components[1];\n  }\n  setValueFromComponents() {\n    this._value.x = this.x.value;\n    this._value.y = this.y.value;\n  }\n}\n","import { TypedMultipleParam } from \"./_Multiple\";\nimport { Vector3 } from \"three\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { CoreType } from \"../../core/Type\";\nconst COMPONENT_NAMES_VECTOR3 = [\"x\", \"y\", \"z\"];\nconst tmp = [0, 0, 0];\nexport class Vector3Param extends TypedMultipleParam {\n  constructor() {\n    super(...arguments);\n    this._value = new Vector3();\n    this._copied_value = [0, 0, 0];\n  }\n  static type() {\n    return ParamType.VECTOR3;\n  }\n  componentNames() {\n    return COMPONENT_NAMES_VECTOR3;\n  }\n  defaultValueSerialized() {\n    if (CoreType.isArray(this._default_value)) {\n      return this._default_value;\n    } else {\n      return this._default_value.toArray();\n    }\n  }\n  _prefilterInvalidRawInput(rawInput) {\n    if (rawInput instanceof Vector3) {\n      rawInput.toArray(tmp);\n      return tmp;\n    }\n    return super._prefilterInvalidRawInput(rawInput);\n  }\n  valueSerialized() {\n    return this.value.toArray();\n  }\n  _copyValue(param) {\n    param.value.toArray(this._copied_value);\n    this.set(this._copied_value);\n  }\n  _cloneRawInput(raw_input) {\n    if (raw_input instanceof Vector3) {\n      return raw_input.clone();\n    } else {\n      const new_array = [raw_input[0], raw_input[1], raw_input[2]];\n      if (new_array[0] == null) {\n        new_array[0] = new_array[0] || 0;\n      }\n      if (new_array[1] == null) {\n        new_array[1] = new_array[1] || new_array[0];\n      }\n      if (new_array[2] == null) {\n        new_array[2] = new_array[2] || new_array[1];\n      }\n      return new_array;\n    }\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    if (raw_input1 instanceof Vector3) {\n      if (raw_input2 instanceof Vector3) {\n        return raw_input1.equals(raw_input2);\n      } else {\n        return raw_input1.x == raw_input2[0] && raw_input1.y == raw_input2[1] && raw_input1.z == raw_input2[2];\n      }\n    } else {\n      if (raw_input2 instanceof Vector3) {\n        return raw_input1[0] == raw_input2.x && raw_input1[1] == raw_input2.y && raw_input1[2] == raw_input2.z;\n      } else {\n        return raw_input1[0] == raw_input2[0] && raw_input1[1] == raw_input2[1] && raw_input1[2] == raw_input2[2];\n      }\n    }\n  }\n  static areValuesEqual(val1, val2) {\n    return val1.equals(val2);\n  }\n  initComponents() {\n    super.initComponents();\n    this.x = this.components[0];\n    this.y = this.components[1];\n    this.z = this.components[2];\n  }\n  setValueFromComponents() {\n    this._value.x = this.x.value;\n    this._value.y = this.y.value;\n    this._value.z = this.z.value;\n  }\n}\n","import { TypedMultipleParam } from \"./_Multiple\";\nimport { Vector4 } from \"three\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { CoreType } from \"../../core/Type\";\nconst COMPONENT_NAMES_VECTOR4 = [\"x\", \"y\", \"z\", \"w\"];\nconst tmp = [0, 0, 0, 0];\nexport class Vector4Param extends TypedMultipleParam {\n  constructor() {\n    super(...arguments);\n    this._value = new Vector4();\n    this._copied_value = [0, 0, 0, 0];\n  }\n  static type() {\n    return ParamType.VECTOR4;\n  }\n  componentNames() {\n    return COMPONENT_NAMES_VECTOR4;\n  }\n  defaultValueSerialized() {\n    if (CoreType.isArray(this._default_value)) {\n      return this._default_value;\n    } else {\n      return this._default_value.toArray();\n    }\n  }\n  _prefilterInvalidRawInput(rawInput) {\n    if (rawInput instanceof Vector4) {\n      rawInput.toArray(tmp);\n      return tmp;\n    }\n    return super._prefilterInvalidRawInput(rawInput);\n  }\n  valueSerialized() {\n    return this.value.toArray();\n  }\n  _copyValue(param) {\n    param.value.toArray(this._copied_value);\n    this.set(this._copied_value);\n  }\n  _cloneRawInput(raw_input) {\n    if (raw_input instanceof Vector4) {\n      return raw_input.clone();\n    } else {\n      const new_array = [raw_input[0], raw_input[1], raw_input[2], raw_input[3]];\n      if (new_array[0] == null) {\n        new_array[0] = new_array[0] || 0;\n      }\n      if (new_array[1] == null) {\n        new_array[1] = new_array[1] || new_array[0];\n      }\n      if (new_array[2] == null) {\n        new_array[2] = new_array[2] || new_array[1];\n      }\n      if (new_array[3] == null) {\n        new_array[3] = new_array[3] || new_array[2];\n      }\n      return new_array;\n    }\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    if (raw_input1 instanceof Vector4) {\n      if (raw_input2 instanceof Vector4) {\n        return raw_input1.equals(raw_input2);\n      } else {\n        return raw_input1.x == raw_input2[0] && raw_input1.y == raw_input2[1] && raw_input1.z == raw_input2[2] && raw_input1.w == raw_input2[3];\n      }\n    } else {\n      if (raw_input2 instanceof Vector4) {\n        return raw_input1[0] == raw_input2.x && raw_input1[1] == raw_input2.y && raw_input1[2] == raw_input2.z && raw_input1[3] == raw_input2.w;\n      } else {\n        return raw_input1[0] == raw_input2[0] && raw_input1[1] == raw_input2[1] && raw_input1[2] == raw_input2[2] && raw_input1[3] == raw_input2[3];\n      }\n    }\n  }\n  static areValuesEqual(val1, val2) {\n    return val1.equals(val2);\n  }\n  initComponents() {\n    super.initComponents();\n    this.x = this.components[0];\n    this.y = this.components[1];\n    this.z = this.components[2];\n    this.w = this.components[3];\n  }\n  setValueFromComponents() {\n    this._value.x = this.x.value;\n    this._value.y = this.y.value;\n    this._value.z = this.z.value;\n    this._value.w = this.w.value;\n  }\n}\n","import { BooleanParam } from \"../Boolean\";\nimport { ButtonParam } from \"../Button\";\nimport { ColorParam } from \"../Color\";\nimport { FloatParam } from \"../Float\";\nimport { FolderParam } from \"../Folder\";\nimport { IntegerParam } from \"../Integer\";\nimport { ParamPathParam } from \"../ParamPath\";\nimport { NodePathParam } from \"../NodePath\";\nimport { RampParam } from \"../Ramp\";\nimport { StringParam } from \"../String\";\nimport { Vector2Param } from \"../Vector2\";\nimport { Vector3Param } from \"../Vector3\";\nimport { Vector4Param } from \"../Vector4\";\nimport { ParamType } from \"../../poly/ParamType\";\nexport const ParamConstructorByType = {\n  [ParamType.BOOLEAN]: BooleanParam,\n  [ParamType.BUTTON]: ButtonParam,\n  [ParamType.COLOR]: ColorParam,\n  [ParamType.FLOAT]: FloatParam,\n  [ParamType.FOLDER]: FolderParam,\n  [ParamType.INTEGER]: IntegerParam,\n  [ParamType.PARAM_PATH]: ParamPathParam,\n  [ParamType.NODE_PATH]: NodePathParam,\n  [ParamType.RAMP]: RampParam,\n  [ParamType.STRING]: StringParam,\n  [ParamType.VECTOR2]: Vector2Param,\n  [ParamType.VECTOR3]: Vector3Param,\n  [ParamType.VECTOR4]: Vector4Param\n};\n","import { TypedNumericParam } from \"./_Numeric\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { CoreString } from \"../../core/String\";\nimport { CoreType } from \"../../core/Type\";\nexport class BooleanParam extends TypedNumericParam {\n  static type() {\n    return ParamType.BOOLEAN;\n  }\n  defaultValueSerialized() {\n    if (CoreType.isString(this._default_value)) {\n      return this._default_value;\n    } else {\n      return this.convert(this._default_value) || false;\n    }\n  }\n  rawInputSerialized() {\n    return this._raw_input;\n  }\n  valueSerialized() {\n    return this.value;\n  }\n  _copyValue(param) {\n    this.set(param.value);\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return raw_input1 == raw_input2;\n  }\n  static areValuesEqual(val1, val2) {\n    return val1 == val2;\n  }\n  convert(raw_val) {\n    if (CoreType.isBoolean(raw_val)) {\n      return raw_val;\n    } else {\n      if (CoreType.isNumber(raw_val)) {\n        return raw_val >= 1;\n      } else {\n        if (CoreType.isString(raw_val)) {\n          if (CoreString.isBoolean(raw_val)) {\n            return CoreString.toBoolean(raw_val);\n          } else {\n            if (CoreString.isNumber(raw_val)) {\n              const parsed = parseFloat(raw_val);\n              return parsed >= 1;\n            }\n          }\n        }\n      }\n    }\n    return null;\n  }\n}\n","import { TypedParam } from \"./_Base\";\nimport { ParamType } from \"../poly/ParamType\";\nexport class ButtonParam extends TypedParam {\n  static type() {\n    return ParamType.BUTTON;\n  }\n  defaultValueSerialized() {\n    return this._default_value;\n  }\n  rawInputSerialized() {\n    return this._raw_input;\n  }\n  valueSerialized() {\n    return this.value;\n  }\n  _copyValue(param) {\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return true;\n  }\n  static areValuesEqual(val1, val2) {\n    return true;\n  }\n  async pressButton() {\n    if (this.node.isDirty() || this.node.cookController.isCooking()) {\n      await this.node.compute();\n    }\n    this.options.executeCallback();\n  }\n}\n","import { TypedParam } from \"./_Base\";\nimport { ParamType } from \"../poly/ParamType\";\nexport class FolderParam extends TypedParam {\n  static type() {\n    return ParamType.FOLDER;\n  }\n  defaultValueSerialized() {\n    return this._default_value;\n  }\n  rawInputSerialized() {\n    return this._raw_input;\n  }\n  valueSerialized() {\n    return this.value;\n  }\n  _copyValue(param) {\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return true;\n  }\n  static areValuesEqual(val1, val2) {\n    return true;\n  }\n}\n","import { ParamEvent } from \"./../poly/ParamEvent\";\nimport { ParamType } from \"../poly/ParamType\";\nimport { CoreType } from \"../../core/Type\";\nimport { TypedStringParam } from \"./_BaseString\";\nexport class StringParam extends TypedStringParam {\n  static type() {\n    return ParamType.STRING;\n  }\n  defaultValueSerialized() {\n    return this._default_value;\n  }\n  _cloneRawInput(raw_input) {\n    return `${raw_input}`;\n  }\n  rawInputSerialized() {\n    return `${this._raw_input}`;\n  }\n  valueSerialized() {\n    return `${this.value}`;\n  }\n  _copyValue(param) {\n    this.set(param.value);\n  }\n  static areRawInputEqual(raw_input1, raw_input2) {\n    return raw_input1 == raw_input2;\n  }\n  static areValuesEqual(val1, val2) {\n    return val1 == val2;\n  }\n  isDefault() {\n    return this._raw_input == this._default_value;\n  }\n  convert(rawVal) {\n    if (CoreType.isString(rawVal)) {\n      return rawVal;\n    }\n    return `${rawVal}`;\n  }\n  rawInput() {\n    return this._raw_input;\n  }\n  _assignValue(value) {\n    this._value = value;\n  }\n  processRawInputWithoutExpression() {\n    if (this._raw_input != this._value) {\n      this._assignValue(this._raw_input);\n      this.removeDirtyState();\n      this.setSuccessorsDirty(this);\n      this.emitController.emit(ParamEvent.VALUE_UPDATED);\n      this.options.executeCallback();\n      if (this._expression_controller) {\n        this._expression_controller.set_expression(void 0, false);\n        this.emitController.emit(ParamEvent.EXPRESSION_UPDATED);\n      }\n    }\n  }\n}\n","import { CoreGraphNode } from \"../../../../core/graph/CoreGraphNode\";\nimport { ParamType } from \"../../../poly/ParamType\";\nimport { ParamConstructorByType } from \"../../../params/types/ParamConstructorByType\";\nimport { NodeEvent } from \"../../../poly/NodeEvent\";\nimport { Poly } from \"../../../Poly\";\nconst NODE_SIMPLE_NAME = \"params\";\nexport class ParamsController {\n  constructor(node) {\n    this.node = node;\n    this._param_create_mode = false;\n    this._params_created = false;\n    this._params_by_name = {};\n    this._params_list = [];\n    this._param_names = [];\n    this._non_spare_params = [];\n    this._spare_params = [];\n    this._non_spare_param_names = [];\n    this._spare_param_names = [];\n    this._params_added_since_last_params_eval = false;\n    this._promises = [];\n  }\n  dispose() {\n    if (this._params_node) {\n      this._params_node.dispose();\n    }\n    for (let param of this.all) {\n      param.dispose();\n    }\n    this._post_create_params_hook_names = void 0;\n    this._post_create_params_hooks = void 0;\n    this._on_scene_load_hooks = void 0;\n    this._on_scene_load_hook_names = void 0;\n  }\n  initDependencyNode() {\n    if (!this._params_node) {\n      this._params_node = new CoreGraphNode(this.node.scene(), NODE_SIMPLE_NAME);\n      this.node.addGraphInput(this._params_node, false);\n    }\n  }\n  init() {\n    this.initDependencyNode();\n    this._param_create_mode = true;\n    this._initFromParamsConfig();\n    this.node.createParams();\n    this._postCreateParams();\n  }\n  _postCreateParams() {\n    this._updateCaches();\n    this._initParamAccessors();\n    this._param_create_mode = false;\n    this._params_created = true;\n    this._runPostCreateParamsHooks();\n  }\n  postCreateSpareParams() {\n    this._updateCaches();\n    this._initParamAccessors();\n    this.node.scene().referencesController.notifyParamsUpdated(this.node);\n    this.node.emit(NodeEvent.PARAMS_UPDATED);\n  }\n  updateParams(options) {\n    let has_created_a_param = false;\n    let has_deleted_a_param = false;\n    const addedParams = [];\n    if (options.namesToDelete) {\n      for (let param_name of options.namesToDelete) {\n        if (this.has(param_name)) {\n          this._deleteParam(param_name);\n          has_deleted_a_param = true;\n        }\n      }\n    }\n    if (options.toAdd) {\n      for (let param_data of options.toAdd) {\n        const param = this.addParam(param_data.type, param_data.name, param_data.initValue, param_data.options);\n        if (param) {\n          if (param_data.rawInput != null) {\n            param.set(param_data.rawInput);\n          }\n          has_created_a_param = true;\n          addedParams.push(param);\n        }\n      }\n    }\n    if (has_deleted_a_param || has_created_a_param) {\n      this.postCreateSpareParams();\n    }\n    for (let param of addedParams) {\n      this.node.scene().missingExpressionReferencesController.checkForMissingParamReferences(param);\n    }\n  }\n  _initFromParamsConfig() {\n    var _a;\n    const paramsConfig = this.node.paramsConfig;\n    let init_values_used = false;\n    if (paramsConfig) {\n      const paramsInitValueOverrides = (_a = this.node.createOptions) == null ? void 0 : _a.paramsInitValueOverrides;\n      for (let name of Object.keys(paramsConfig)) {\n        const config = paramsConfig[name];\n        let init_value;\n        if (paramsInitValueOverrides) {\n          init_value = paramsInitValueOverrides[name];\n          init_values_used = true;\n        }\n        this.addParam(config.type, name, config.init_value, config.options, init_value);\n      }\n    }\n    if (init_values_used) {\n      this.node.setDirty();\n    }\n    if (this.node.createOptions) {\n      this.node.createOptions.paramsInitValueOverrides = void 0;\n    }\n  }\n  _initParamAccessors() {\n    let current_names_in_accessor = Object.getOwnPropertyNames(this.node.pv);\n    this._removeUnneededAccessors(current_names_in_accessor);\n    current_names_in_accessor = Object.getOwnPropertyNames(this.node.pv);\n    for (let param of this.all) {\n      const is_spare = param.options.isSpare();\n      const param_not_yet_in_accessors = !current_names_in_accessor.includes(param.name());\n      if (param_not_yet_in_accessors || is_spare) {\n        Object.defineProperty(this.node.pv, param.name(), {\n          get: () => {\n            return param.value;\n          },\n          configurable: is_spare\n        });\n        Object.defineProperty(this.node.p, param.name(), {\n          get: () => {\n            return param;\n          },\n          configurable: is_spare\n        });\n      }\n    }\n  }\n  _removeUnneededAccessors(current_names_in_accessor) {\n    const current_param_names = this._param_names;\n    const names_to_remove = [];\n    for (let current_name_in_accessor of current_names_in_accessor) {\n      if (!current_param_names.includes(current_name_in_accessor)) {\n        names_to_remove.push(current_name_in_accessor);\n      }\n    }\n    for (let name_to_remove of names_to_remove) {\n      Object.defineProperty(this.node.pv, name_to_remove, {\n        get: () => {\n          return void 0;\n        },\n        configurable: true\n      });\n      Object.defineProperty(this.node.p, name_to_remove, {\n        get: () => {\n          return void 0;\n        },\n        configurable: true\n      });\n    }\n  }\n  get params_node() {\n    return this._params_node;\n  }\n  get all() {\n    return this._params_list;\n  }\n  get non_spare() {\n    return this._non_spare_params;\n  }\n  get spare() {\n    return this._spare_params;\n  }\n  get names() {\n    return this._param_names;\n  }\n  get non_spare_names() {\n    return this._non_spare_param_names;\n  }\n  get spare_names() {\n    return this._spare_param_names;\n  }\n  set_with_type(param_name, value, type) {\n    const param = this.paramWithType(param_name, type);\n    if (param) {\n      param.set(value);\n    } else {\n      Poly.warn(`param ${param_name} not found with type ${type}`);\n    }\n  }\n  set_float(param_name, value) {\n    this.set_with_type(param_name, value, ParamType.FLOAT);\n  }\n  set_vector3(param_name, value) {\n    this.set_with_type(param_name, value, ParamType.VECTOR3);\n  }\n  has_param(param_name) {\n    return this._params_by_name[param_name] != null;\n  }\n  has(param_name) {\n    return this.has_param(param_name);\n  }\n  get(param_name) {\n    return this.param(param_name);\n  }\n  paramWithType(param_name, type) {\n    const param = this.param(param_name);\n    if (param && param.type() == type) {\n      return param;\n    }\n  }\n  getFloat(param_name) {\n    return this.paramWithType(param_name, ParamType.FLOAT);\n  }\n  value(param_name) {\n    var _a;\n    return (_a = this.param(param_name)) == null ? void 0 : _a.value;\n  }\n  valueWithType(param_name, type) {\n    var _a;\n    return (_a = this.paramWithType(param_name, type)) == null ? void 0 : _a.value;\n  }\n  boolean(paramName) {\n    return this.valueWithType(paramName, ParamType.BOOLEAN);\n  }\n  float(paramName) {\n    return this.valueWithType(paramName, ParamType.FLOAT);\n  }\n  integer(paramName) {\n    return this.valueWithType(paramName, ParamType.INTEGER);\n  }\n  string(paramName) {\n    return this.valueWithType(paramName, ParamType.STRING);\n  }\n  vector2(paramName) {\n    return this.valueWithType(paramName, ParamType.VECTOR2);\n  }\n  vector3(paramName) {\n    return this.valueWithType(paramName, ParamType.VECTOR3);\n  }\n  color(paramName) {\n    return this.valueWithType(paramName, ParamType.COLOR);\n  }\n  param(paramName) {\n    const p = this._params_by_name[paramName];\n    if (p != null) {\n      return p;\n    } else {\n      Poly.warn(`tried to access param '${paramName}' in node ${this.node.path()}, but existing params are: ${this.names} on node ${this.node.path()}`);\n      return null;\n    }\n  }\n  _deleteParam(param_name) {\n    const param = this._params_by_name[param_name];\n    if (param) {\n      if (this._params_node) {\n        this._params_node.removeGraphInput(this._params_by_name[param_name]);\n      }\n      param._setupNodeDependencies(null);\n      delete this._params_by_name[param_name];\n      if (param.isMultiple() && param.components) {\n        for (let component of param.components) {\n          const child_name = component.name();\n          delete this._params_by_name[child_name];\n        }\n      }\n      param.dispose();\n    } else {\n      throw new Error(`param '${param_name}' does not exist on node ${this.node.path()}`);\n    }\n  }\n  addParam(type, paramName, defaultValue, options = {}, initData) {\n    const isSpare = options[\"spare\"] || false;\n    if (this._param_create_mode === false && !isSpare) {\n      Poly.warn(`node ${this.node.path()} (${this.node.type()}) param '${paramName}' cannot be created outside of createParams`);\n    }\n    if (this.node.scene() == null) {\n      Poly.warn(`node ${this.node.path()} (${this.node.type()}) has no scene assigned`);\n    }\n    const constructor = ParamConstructorByType[type];\n    if (constructor != null) {\n      const existing_param = this._params_by_name[paramName];\n      if (existing_param) {\n        if (isSpare) {\n          if (existing_param.type() != type) {\n            this._deleteParam(existing_param.name());\n          }\n        } else {\n          Poly.warn(`a param named ${paramName} already exists`, this.node);\n        }\n      }\n      const param = new constructor(this.node.scene(), this.node);\n      param.options.set(options);\n      param.setName(paramName);\n      param.setInitValue(defaultValue);\n      param.initComponents();\n      if (initData == null) {\n        param.set(defaultValue);\n      } else {\n        if (param.options.isExpressionForEntities()) {\n          param.set(defaultValue);\n        }\n        if (initData.raw_input != null) {\n          param.set(initData.raw_input);\n        } else {\n          if (initData.simple_data != null) {\n            param.set(initData.simple_data);\n          } else {\n            if (initData.complex_data != null) {\n              const raw_input = initData.complex_data.raw_input;\n              if (raw_input) {\n                param.set(raw_input);\n              } else {\n                param.set(defaultValue);\n              }\n              const overriden_options = initData.complex_data.overriden_options;\n              if (overriden_options != null) {\n                const keys = Object.keys(overriden_options);\n                for (let key of keys) {\n                  param.options.setOption(key, overriden_options[key]);\n                }\n              }\n            }\n          }\n        }\n      }\n      param.postOptionsInitialize();\n      param._setupNodeDependencies(this.node);\n      this._params_by_name[param.name()] = param;\n      if (param.isMultiple() && param.components) {\n        for (let component of param.components) {\n          this._params_by_name[component.name()] = component;\n        }\n      }\n      this._params_added_since_last_params_eval = true;\n      return param;\n    }\n  }\n  _updateCaches() {\n    this._params_list = Object.values(this._params_by_name);\n    this._param_names = Object.keys(this._params_by_name);\n    this._non_spare_params = Object.values(this._params_by_name).filter((p) => !p.options.isSpare());\n    this._spare_params = Object.values(this._params_by_name).filter((p) => p.options.isSpare());\n    this._non_spare_param_names = Object.values(this._params_by_name).filter((p) => !p.options.isSpare()).map((p) => p.name());\n    this._spare_param_names = Object.values(this._params_by_name).filter((p) => p.options.isSpare()).map((p) => p.name());\n  }\n  async _evalParam(param) {\n    if (param.isDirty()) {\n      await param.compute();\n      if (param.states.error.active()) {\n        this.node.states.error.set(`param '${param.name()}' error: ${param.states.error.message()}`);\n      }\n    }\n  }\n  async evalParams(params) {\n    let dirtyParamsCount = 0;\n    for (let param of params) {\n      if (param.isDirty()) {\n        dirtyParamsCount += 1;\n      }\n    }\n    this._promises.length = dirtyParamsCount;\n    let i = 0;\n    for (let param of params) {\n      if (param.isDirty()) {\n        this._promises[i] = this._evalParam(param);\n        i += 1;\n      }\n    }\n    await Promise.all(this._promises);\n    if (this.node.states.error.active()) {\n      this.node._setContainer(null);\n    }\n  }\n  paramsEvalRequired() {\n    return this._params_node != null && (this._params_node.isDirty() || this._params_added_since_last_params_eval);\n  }\n  async evalAll() {\n    var _a;\n    if (this.paramsEvalRequired()) {\n      await this.evalParams(this._params_list);\n      (_a = this._params_node) == null ? void 0 : _a.removeDirtyState();\n      this._params_added_since_last_params_eval = false;\n    }\n  }\n  onParamsCreated(hook_name, hook) {\n    if (this._params_created) {\n      hook();\n    } else {\n      if (this._post_create_params_hook_names && this._post_create_params_hook_names.includes(hook_name)) {\n        Poly.error(`hook name ${hook_name} already exists`);\n        return;\n      }\n      this._post_create_params_hook_names = this._post_create_params_hook_names || [];\n      this._post_create_params_hook_names.push(hook_name);\n      this._post_create_params_hooks = this._post_create_params_hooks || [];\n      this._post_create_params_hooks.push(hook);\n    }\n  }\n  addOnSceneLoadHook(param_name, method) {\n    this._on_scene_load_hook_names = this._on_scene_load_hook_names || [];\n    this._on_scene_load_hooks = this._on_scene_load_hooks || [];\n    if (!this._on_scene_load_hook_names.includes(param_name)) {\n      this._on_scene_load_hook_names.push(param_name);\n      this._on_scene_load_hooks.push(method);\n    } else {\n      Poly.warn(`hook with name ${param_name} already exists`, this.node);\n    }\n  }\n  _runPostCreateParamsHooks() {\n    if (this._post_create_params_hooks) {\n      for (let hook of this._post_create_params_hooks) {\n        hook();\n      }\n    }\n  }\n  runOnSceneLoadHooks() {\n    if (this._on_scene_load_hooks) {\n      for (let hook of this._on_scene_load_hooks) {\n        hook();\n      }\n    }\n  }\n}\n","export class ParamsValueAccessor {\n  constructor() {\n  }\n}\n","import { EventDispatcher } from \"three\";\nexport const NODE_CONNECTION_TRIGGERED_EVENT_NAME = \"triggered\";\nexport const NODE_CONNECTION_TRIGGERED_EVENT = { type: NODE_CONNECTION_TRIGGERED_EVENT_NAME };\nconst _TypedNodeConnection = class {\n  constructor(_node_src, _node_dest, _output_index = 0, _input_index = 0) {\n    this._node_src = _node_src;\n    this._node_dest = _node_dest;\n    this._output_index = _output_index;\n    this._input_index = _input_index;\n    if (this._output_index == null) {\n      throw \"bad output index\";\n    }\n    if (this._input_index == null) {\n      throw \"bad input index\";\n    }\n    this._id = _TypedNodeConnection._next_id++;\n    if (this._node_src.io.connections && this._node_dest.io.connections) {\n      this._node_src.io.connections.addOutputConnection(this);\n      this._node_dest.io.connections.addInputConnection(this);\n    }\n  }\n  get id() {\n    return this._id;\n  }\n  get node_src() {\n    return this._node_src;\n  }\n  get node_dest() {\n    return this._node_dest;\n  }\n  get output_index() {\n    return this._output_index;\n  }\n  get input_index() {\n    return this._input_index;\n  }\n  src_connection_point() {\n    const node_src = this._node_src;\n    const output_index = this._output_index;\n    return node_src.io.outputs.namedOutputConnectionPoints()[output_index];\n  }\n  dest_connection_point() {\n    const node_dest = this._node_dest;\n    const input_index = this._input_index;\n    return node_dest.io.inputs.namedInputConnectionPoints()[input_index];\n  }\n  disconnect(options = {}) {\n    if (this._node_src.io.connections && this._node_dest.io.connections) {\n      this._node_src.io.connections.removeOutputConnection(this);\n      this._node_dest.io.connections.removeInputConnection(this);\n    }\n    if (options.setInput === true) {\n      this._node_dest.io.inputs.setInput(this._input_index, null, void 0, {\n        ignoreLockedState: options.ignoreLockedState\n      });\n    }\n  }\n  _eventDispatcher() {\n    return this.__eventDispatcher;\n  }\n  eventDispatcher() {\n    return this.__eventDispatcher = this.__eventDispatcher || new EventDispatcher();\n  }\n};\nexport let TypedNodeConnection = _TypedNodeConnection;\nTypedNodeConnection._next_id = 0;\n","import { InputCloneMode } from \"../../../../poly/InputCloneMode\";\nimport { TypeAssert } from \"../../../../poly/Assert\";\nimport { NodeEvent } from \"../../../../poly/NodeEvent\";\nimport { CoreType } from \"../../../../../core/Type\";\nexport class ClonedStatesController {\n  constructor(inputs_controller) {\n    this.inputs_controller = inputs_controller;\n    this._cloneRequiredStates = [];\n    this._overridden = false;\n    this.node = inputs_controller.node;\n  }\n  initInputsClonedState(states) {\n    if (CoreType.isArray(states)) {\n      this._clonedStates = states;\n    } else {\n      this._clonedState = states;\n    }\n    this._updateCloneRequiredState();\n  }\n  overrideClonedStateAllowed() {\n    if (this._clonedStates) {\n      for (let state of this._clonedStates) {\n        if (state == InputCloneMode.FROM_NODE) {\n          return true;\n        }\n      }\n    }\n    if (this._clonedState) {\n      return this._clonedState == InputCloneMode.FROM_NODE;\n    }\n    return false;\n  }\n  cloneRequiredState(index) {\n    const result = this._cloneRequiredStates[index];\n    return result;\n  }\n  cloneRequiredStates() {\n    return this._cloneRequiredStates;\n  }\n  _getCloneRequiredState(index) {\n    const states = this._clonedStates;\n    if (states) {\n      const state = states[index];\n      if (state != null) {\n        return this._cloneRequiredFromState(state);\n      }\n    }\n    if (this._clonedState) {\n      return this._cloneRequiredFromState(this._clonedState);\n    }\n    return true;\n  }\n  _cloneRequiredFromState(state) {\n    switch (state) {\n      case InputCloneMode.ALWAYS:\n        return true;\n      case InputCloneMode.NEVER:\n        return false;\n      case InputCloneMode.FROM_NODE:\n        return !this._overridden;\n    }\n    return TypeAssert.unreachable(state);\n  }\n  overrideClonedState(state) {\n    this._overridden = state;\n    this._updateCloneRequiredState();\n    this.node.emit(NodeEvent.OVERRIDE_CLONABLE_STATE_UPDATE);\n    this.node.setDirty();\n  }\n  overriden() {\n    return this._overridden;\n  }\n  _updateCloneRequiredState() {\n    if (this._clonedStates) {\n      const states = [];\n      for (let i = 0; i < this._clonedStates.length; i++) {\n        states[i] = this._getCloneRequiredState(i);\n      }\n      this._cloneRequiredStates = states;\n    } else {\n      if (this._clonedState) {\n        const max_inputs = this.inputs_controller.maxInputsCount();\n        const states = [];\n        for (let i = 0; i < max_inputs; i++) {\n          states[i] = this._getCloneRequiredState(i);\n        }\n        this._cloneRequiredStates = states;\n      }\n    }\n  }\n}\n","import { TypedNodeConnection } from \"./NodeConnection\";\nimport { CoreGraphNode } from \"../../../../core/graph/CoreGraphNode\";\nimport { NodeEvent } from \"../../../poly/NodeEvent\";\nimport { ClonedStatesController } from \"./utils/ClonedStatesController\";\nimport { CoreType } from \"../../../../core/Type\";\nimport { ArrayUtils } from \"../../../../core/ArrayUtils\";\nconst MAX_INPUTS_COUNT_UNSET = 0;\nexport class NodeInputsController {\n  constructor(node) {\n    this.node = node;\n    this._graphNodeInputs = [];\n    this._inputs = [];\n    this._has_named_inputs = false;\n    this._minInputsCount = 0;\n    this._maxInputsCount = MAX_INPUTS_COUNT_UNSET;\n    this._maxInputsCountOnInput = MAX_INPUTS_COUNT_UNSET;\n    this._depends_on_inputs = true;\n  }\n  dispose() {\n    if (this._graphNode) {\n      this._graphNode.dispose();\n    }\n    for (let graph_node of this._graphNodeInputs) {\n      if (graph_node) {\n        graph_node.dispose();\n      }\n    }\n    this._on_update_hooks = void 0;\n    this._on_update_hook_names = void 0;\n  }\n  setDependsOnInputs(depends_on_inputs) {\n    this._depends_on_inputs = depends_on_inputs;\n  }\n  setMinCount(minInputsCount) {\n    this._minInputsCount = minInputsCount;\n  }\n  minCount() {\n    return this._minInputsCount;\n  }\n  setMaxCount(maxInputsCount) {\n    if (this._maxInputsCount == MAX_INPUTS_COUNT_UNSET) {\n      this._maxInputsCountOnInput = maxInputsCount;\n    }\n    this._maxInputsCount = maxInputsCount;\n    this._initGraphNodeInputs();\n  }\n  namedInputConnectionPointsByName(name) {\n    if (this._named_input_connection_points) {\n      for (let connection_point of this._named_input_connection_points) {\n        if (connection_point && connection_point.name() == name) {\n          return connection_point;\n        }\n      }\n    }\n  }\n  setNamedInputConnectionPoints(newConnectionPoints) {\n    var _a;\n    this._has_named_inputs = true;\n    const connectionPointsToKeep = ((_a = this._named_input_connection_points) == null ? void 0 : _a.filter((cp) => cp == null ? void 0 : cp.inNodeDefinition())) || [];\n    const allNewConnectionPoints = ArrayUtils.shallowClone(connectionPointsToKeep);\n    const currentNames = /* @__PURE__ */ new Set();\n    for (let connectionPointToKeep of connectionPointsToKeep) {\n      if (connectionPointToKeep) {\n        currentNames.add(connectionPointToKeep.name());\n      }\n    }\n    for (let newConnectionPoint of newConnectionPoints) {\n      if (newConnectionPoint) {\n        if (!currentNames.has(newConnectionPoint.name())) {\n          currentNames.add(newConnectionPoint.name());\n          allNewConnectionPoints.push(newConnectionPoint);\n        }\n      }\n    }\n    const connections = this.node.io.connections.inputConnections();\n    if (connections) {\n      for (let connection of connections) {\n        if (connection) {\n          if (connection.input_index >= allNewConnectionPoints.length) {\n            connection.disconnect({ setInput: true, ignoreLockedState: true });\n          }\n        }\n      }\n    }\n    this._named_input_connection_points = allNewConnectionPoints;\n    this.setMinCount(0);\n    this.setMaxCount(this._named_input_connection_points.length);\n    this._initGraphNodeInputs();\n    this.node.emit(NodeEvent.NAMED_INPUTS_UPDATED);\n  }\n  hasNamedInputs() {\n    return this._has_named_inputs;\n  }\n  namedInputConnectionPoints() {\n    return this._named_input_connection_points || [];\n  }\n  _initGraphNodeInputs() {\n    for (let i = 0; i < this._maxInputsCount; i++) {\n      this._graphNodeInputs[i] = this._graphNodeInputs[i] || this._createGraphNodeInput(i);\n    }\n  }\n  _createGraphNodeInput(index) {\n    const graph_input_node = new CoreGraphNode(this.node.scene(), `input_${index}`);\n    if (!this._graphNode) {\n      this._graphNode = new CoreGraphNode(this.node.scene(), \"inputs\");\n      this.node.addGraphInput(this._graphNode, false);\n    }\n    this._graphNode.addGraphInput(graph_input_node, false);\n    return graph_input_node;\n  }\n  maxInputsCount() {\n    return this._maxInputsCount || 0;\n  }\n  maxInputsCountOverriden() {\n    return this._maxInputsCount != this._maxInputsCountOnInput;\n  }\n  inputGraphNode(input_index) {\n    return this._graphNodeInputs[input_index];\n  }\n  setCount(min, max) {\n    if (max == null) {\n      max = min;\n    }\n    this.setMinCount(min);\n    this.setMaxCount(max);\n    this._initConnectionControllerInputs();\n  }\n  _initConnectionControllerInputs() {\n    this.node.io.connections.initInputs();\n  }\n  isGraphNodeDirty() {\n    var _a;\n    return ((_a = this._graphNode) == null ? void 0 : _a.isDirty()) || false;\n  }\n  _isAnyInputDirty() {\n    for (let input of this._inputs) {\n      if (input && input.isDirty()) {\n        return true;\n      }\n    }\n    return false;\n  }\n  containersWithoutEvaluation() {\n    const containers = [];\n    for (let i = 0; i < this._inputs.length; i++) {\n      const inputNode = this._inputs[i];\n      let container = void 0;\n      if (inputNode) {\n        container = inputNode.containerController.containerUnlessBypassed();\n      }\n      containers.push(container);\n    }\n    return containers;\n  }\n  _existingInputIndices() {\n    const existing_input_indices = [];\n    if (this._maxInputsCount > 0) {\n      for (let i = 0; i < this._inputs.length; i++) {\n        if (this._inputs[i]) {\n          existing_input_indices.push(i);\n        }\n      }\n    }\n    return existing_input_indices;\n  }\n  async evalRequiredInputs() {\n    var _a;\n    let containers = [];\n    if (this._maxInputsCount > 0) {\n      const existing_input_indices = this._existingInputIndices();\n      if (existing_input_indices.length < this._minInputsCount) {\n        this.node.states.error.set(\"inputs are missing\");\n      } else {\n        if (existing_input_indices.length > 0) {\n          const promises = [];\n          let input;\n          for (let i = 0; i < this._inputs.length; i++) {\n            input = this._inputs[i];\n            if (input) {\n              promises.push(this.evalRequiredInput(i));\n            }\n          }\n          containers = await Promise.all(promises);\n          if (!this._isAnyInputDirty()) {\n            (_a = this._graphNode) == null ? void 0 : _a.removeDirtyState();\n          }\n        }\n      }\n    }\n    return containers;\n  }\n  async evalRequiredInput(inputIndex) {\n    let container = void 0;\n    const inputNode = this.input(inputIndex);\n    if (inputNode) {\n      container = await inputNode.compute();\n      this._graphNodeInputs[inputIndex].removeDirtyState();\n    }\n    if (container && container.coreContent()) {\n    } else {\n      if (inputNode) {\n        const inputErrorMessage = inputNode.states.error.message();\n        if (inputErrorMessage) {\n          this.node.states.error.set(`input ${inputIndex} is invalid (error: ${inputErrorMessage})`);\n        }\n      }\n    }\n    return container;\n  }\n  getNamedInputIndex(name) {\n    var _a;\n    if (this._named_input_connection_points) {\n      for (let i = 0; i < this._named_input_connection_points.length; i++) {\n        if (((_a = this._named_input_connection_points[i]) == null ? void 0 : _a.name()) == name) {\n          return i;\n        }\n      }\n    }\n    return -1;\n  }\n  getInputIndex(input_index_or_name) {\n    if (CoreType.isString(input_index_or_name)) {\n      if (this.hasNamedInputs()) {\n        return this.getNamedInputIndex(input_index_or_name);\n      } else {\n        throw new Error(`node ${this.node.path()} has no named inputs`);\n      }\n    } else {\n      return input_index_or_name;\n    }\n  }\n  setInput(inputIndexOrName, node, outputIndexOrName, options) {\n    const ignoreLockedState = (options == null ? void 0 : options.ignoreLockedState) || false;\n    if (ignoreLockedState == false && this.node.insideALockedParent()) {\n      const lockedParent = this.node.lockedParent();\n      console.warn(`node '${this.node.path()}' cannot have its inputs changed, since it is inside '${lockedParent ? lockedParent.path() : \"\"}', which is locked`);\n      return;\n    }\n    if (outputIndexOrName == null) {\n      outputIndexOrName = 0;\n    }\n    const noExceptionOnInvalidInput = (options == null ? void 0 : options.noExceptionOnInvalidInput) || false;\n    const inputIndex = this.getInputIndex(inputIndexOrName) || 0;\n    if (inputIndex < 0) {\n      const message = `invalid input (${inputIndexOrName}) for node ${this.node.path()}`;\n      if (!noExceptionOnInvalidInput) {\n        console.warn(message);\n        throw new Error(message);\n      } else {\n        return;\n      }\n    }\n    let outputIndex = 0;\n    if (node) {\n      if (node.io.outputs.hasNamedOutputs()) {\n        outputIndex = node.io.outputs.getOutputIndex(outputIndexOrName);\n        if (outputIndex == null || outputIndex < 0) {\n          const connection_points = node.io.outputs.namedOutputConnectionPoints();\n          const names = connection_points.map((cp) => cp.name());\n          console.warn(`node ${node.path()} does not have an output named ${outputIndexOrName}. inputs are: ${names.join(\", \")}`);\n          return;\n        }\n      }\n    }\n    const graphInputNode = this._graphNodeInputs[inputIndex];\n    if (graphInputNode == null) {\n      const message = `no input at index ${inputIndex} (name: ${inputIndexOrName}) for node '${this.node.name()}' at path '${this.node.path()}'`;\n      console.warn(message);\n      throw new Error(message);\n    }\n    if (node && this.node.parent() != node.parent()) {\n      return;\n    }\n    const oldInputNode = this._inputs[inputIndex];\n    let oldOutputIndex = null;\n    let oldConnection = void 0;\n    if (this.node.io.connections) {\n      oldConnection = this.node.io.connections.inputConnection(inputIndex);\n    }\n    if (oldConnection) {\n      oldOutputIndex = oldConnection.output_index;\n    }\n    if (node !== oldInputNode || outputIndex != oldOutputIndex) {\n      if (oldInputNode != null) {\n        if (this._depends_on_inputs) {\n          graphInputNode.removeGraphInput(oldInputNode);\n        }\n      }\n      if (node != null) {\n        const connectionResult = graphInputNode.addGraphInput(node);\n        if (connectionResult) {\n          if (!this._depends_on_inputs) {\n            graphInputNode.removeGraphInput(node);\n          }\n          if (oldConnection) {\n            oldConnection.disconnect({ setInput: false });\n          }\n          this._inputs[inputIndex] = node;\n          new TypedNodeConnection(node, this.node, outputIndex, inputIndex);\n        } else {\n          console.warn(`cannot connect ${node.path()} to ${this.node.path()}`);\n        }\n      } else {\n        this._inputs[inputIndex] = null;\n        if (oldConnection) {\n          oldConnection.disconnect({ setInput: false });\n        }\n      }\n      this._run_on_set_input_hooks();\n      graphInputNode.setSuccessorsDirty();\n      this.node.emit(NodeEvent.INPUTS_UPDATED);\n    }\n  }\n  input(input_index) {\n    return this._inputs[input_index];\n  }\n  named_input(input_name) {\n    if (this.hasNamedInputs()) {\n      const input_index = this.getInputIndex(input_name);\n      return this._inputs[input_index];\n    } else {\n      return null;\n    }\n  }\n  named_input_connection_point(input_name) {\n    if (this.hasNamedInputs() && this._named_input_connection_points) {\n      const input_index = this.getInputIndex(input_name);\n      return this._named_input_connection_points[input_index];\n    }\n  }\n  has_named_input(name) {\n    return this.getNamedInputIndex(name) >= 0;\n  }\n  hasInput(input_index) {\n    return this._inputs[input_index] != null;\n  }\n  inputs() {\n    return this._inputs;\n  }\n  initInputsClonedState(states) {\n    if (!this._clonedStatesController) {\n      this._clonedStatesController = new ClonedStatesController(this);\n      this._clonedStatesController.initInputsClonedState(states);\n    }\n  }\n  overrideClonedStateAllowed() {\n    var _a;\n    return ((_a = this._clonedStatesController) == null ? void 0 : _a.overrideClonedStateAllowed()) || false;\n  }\n  overrideClonedState(state) {\n    var _a;\n    (_a = this._clonedStatesController) == null ? void 0 : _a.overrideClonedState(state);\n  }\n  clonedStateOverriden() {\n    var _a;\n    return ((_a = this._clonedStatesController) == null ? void 0 : _a.overriden()) || false;\n  }\n  cloneRequired(index) {\n    var _a;\n    const state = (_a = this._clonedStatesController) == null ? void 0 : _a.cloneRequiredState(index);\n    if (state != null) {\n      return state;\n    }\n    return true;\n  }\n  cloneRequiredStates() {\n    var _a;\n    const states = (_a = this._clonedStatesController) == null ? void 0 : _a.cloneRequiredStates();\n    if (states != null) {\n      return states;\n    }\n    return true;\n  }\n  add_on_set_input_hook(name, hook) {\n    this._on_update_hooks = this._on_update_hooks || [];\n    this._on_update_hook_names = this._on_update_hook_names || [];\n    if (!this._on_update_hook_names.includes(name)) {\n      this._on_update_hooks.push(hook);\n      this._on_update_hook_names.push(name);\n    } else {\n      console.warn(`hook with name ${name} already exists`, this.node);\n    }\n  }\n  _run_on_set_input_hooks() {\n    if (this._on_update_hooks) {\n      for (let hook of this._on_update_hooks) {\n        hook();\n      }\n    }\n  }\n}\n","import { NodeEvent } from \"../../../poly/NodeEvent\";\nimport { CoreType } from \"../../../../core/Type\";\nimport { ArrayUtils } from \"../../../../core/ArrayUtils\";\nexport class OutputsController {\n  constructor(node) {\n    this.node = node;\n    this._has_outputs = false;\n    this._has_named_outputs = false;\n    this._onPlayingStateChangeBound = this._onPlayingStateChange.bind(this);\n    this._outputIndexCache = /* @__PURE__ */ new Map();\n    this.node.scene().timeController.onPlayingStateChange(this._onPlayingStateChangeBound);\n  }\n  _onPlayingStateChange() {\n    this._clearCache();\n  }\n  _clearCache() {\n    this._outputIndexCache.clear();\n  }\n  dispose() {\n    this.node.scene().timeController.removeOnPlayingStateChange(this._onPlayingStateChangeBound);\n    if (this._named_output_connection_points) {\n      this._named_output_connection_points.splice(0, this._named_output_connection_points.length);\n    }\n  }\n  setHasOneOutput() {\n    this._has_outputs = true;\n  }\n  setHasNoOutput() {\n    this._has_outputs = false;\n  }\n  hasOutputs() {\n    return this._has_outputs;\n  }\n  hasNamedOutputs() {\n    return this._has_named_outputs;\n  }\n  hasNamedOutput(name) {\n    return this.getNamedOutputIndex(name) >= 0;\n  }\n  namedOutputConnectionPoints() {\n    return this._named_output_connection_points || [];\n  }\n  namedOutputConnection(index) {\n    if (this._named_output_connection_points) {\n      return this._named_output_connection_points[index];\n    }\n  }\n  getNamedOutputIndex(name) {\n    if (this._named_output_connection_points) {\n      let i = 0;\n      for (let connectionPoint of this._named_output_connection_points) {\n        if (connectionPoint && connectionPoint.name() == name) {\n          return i;\n        }\n        i++;\n      }\n    }\n    return -1;\n  }\n  getOutputIndex(output_index_or_name) {\n    let currentCache = this._outputIndexCache.get(output_index_or_name);\n    if (currentCache == null) {\n      currentCache = this._getOutputIndex(output_index_or_name);\n      this._outputIndexCache.set(output_index_or_name, currentCache);\n    }\n    return currentCache;\n  }\n  _getOutputIndex(output_index_or_name) {\n    if (output_index_or_name != null) {\n      if (CoreType.isString(output_index_or_name)) {\n        if (this.hasNamedOutputs()) {\n          return this.getNamedOutputIndex(output_index_or_name);\n        } else {\n          console.warn(`node ${this.node.path()} has no named outputs`);\n          return -1;\n        }\n      } else {\n        return output_index_or_name;\n      }\n    }\n    return -1;\n  }\n  namedOutputConnectionPointsByName(name) {\n    if (this._named_output_connection_points) {\n      for (let connection_point of this._named_output_connection_points) {\n        if ((connection_point == null ? void 0 : connection_point.name()) == name) {\n          return connection_point;\n        }\n      }\n    }\n  }\n  setNamedOutputConnectionPoints(connection_points, set_dirty = true) {\n    this._has_named_outputs = true;\n    const connections = this.node.io.connections.outputConnections();\n    if (connections) {\n      for (let connection of connections) {\n        if (connection) {\n          if (connection.output_index >= connection_points.length) {\n            connection.disconnect({ setInput: true });\n          }\n        }\n      }\n    }\n    this._named_output_connection_points = connection_points;\n    if (set_dirty && this.node.scene()) {\n      this.node.setDirty(this.node);\n    }\n    this.node.emit(NodeEvent.NAMED_OUTPUTS_UPDATED);\n  }\n  used_output_names() {\n    var _a;\n    const connections_controller = this.node.io.connections;\n    if (connections_controller) {\n      const output_connections = connections_controller.outputConnections();\n      let output_indices = output_connections.map((connection) => connection ? connection.output_index : null);\n      output_indices = ArrayUtils.uniq(output_indices);\n      const used_output_indices = [];\n      output_indices.forEach((index) => {\n        if (CoreType.isNumber(index)) {\n          used_output_indices.push(index);\n        }\n      });\n      const used_output_names = [];\n      for (let index of used_output_indices) {\n        const name = (_a = this.namedOutputConnectionPoints()[index]) == null ? void 0 : _a.name();\n        if (name) {\n          used_output_names.push(name);\n        }\n      }\n      return used_output_names;\n    } else {\n      return [];\n    }\n  }\n}\n","import { ArrayUtils } from \"../../../../core/ArrayUtils\";\nexport class ConnectionsController {\n  constructor(_node) {\n    this._node = _node;\n    this._outputConnections = /* @__PURE__ */ new Map();\n  }\n  initInputs() {\n    const count = this._node.io.inputs.maxInputsCount();\n    this._inputConnections = this._inputConnections || new Array(count);\n    while (this._inputConnections.length < count) {\n      this._inputConnections.push(void 0);\n    }\n  }\n  dispose() {\n    if (this._inputConnections) {\n      this._inputConnections.splice(0, this._inputConnections.length);\n    }\n    if (this._outputConnections) {\n      this._outputConnections.clear();\n    }\n  }\n  addInputConnection(connection) {\n    if (this._inputConnections) {\n      this._inputConnections[connection.input_index] = connection;\n    } else {\n      console.warn(`input connections array not initialized`);\n    }\n  }\n  removeInputConnection(connection) {\n    if (this._inputConnections) {\n      if (connection.input_index < this._inputConnections.length) {\n        this._inputConnections[connection.input_index] = void 0;\n        let all_connections_after_are_undefined = true;\n        for (let i = connection.input_index; i < this._inputConnections.length; i++) {\n          if (this._inputConnections[i]) {\n            all_connections_after_are_undefined = false;\n          }\n        }\n        if (all_connections_after_are_undefined) {\n          this._inputConnections = this._inputConnections.slice(0, connection.input_index);\n        }\n      } else {\n        console.warn(`attempt to remove an input connection at index ${connection.input_index}`);\n      }\n    } else {\n      console.warn(`input connections array not initialized`);\n    }\n  }\n  inputConnection(index) {\n    if (this._inputConnections) {\n      return this._inputConnections[index];\n    }\n  }\n  firstInputConnection() {\n    if (this._inputConnections) {\n      return ArrayUtils.compact(this._inputConnections)[0];\n    } else {\n      return null;\n    }\n  }\n  inputConnections() {\n    return this._inputConnections;\n  }\n  existingInputConnections() {\n    const current_connections = this._inputConnections;\n    if (current_connections) {\n      while (current_connections.length > 1 && current_connections[current_connections.length - 1] === void 0) {\n        current_connections.pop();\n      }\n    }\n    return current_connections;\n  }\n  addOutputConnection(connection) {\n    const output_index = connection.output_index;\n    const id = connection.id;\n    let connections_by_id = this._outputConnections.get(output_index);\n    if (!connections_by_id) {\n      connections_by_id = /* @__PURE__ */ new Map();\n      this._outputConnections.set(output_index, connections_by_id);\n    }\n    connections_by_id.set(id, connection);\n  }\n  removeOutputConnection(connection) {\n    const output_index = connection.output_index;\n    const id = connection.id;\n    let connections_by_id = this._outputConnections.get(output_index);\n    if (connections_by_id) {\n      connections_by_id.delete(id);\n    }\n  }\n  outputConnectionsByOutputIndex(outputIndex) {\n    return this._outputConnections.get(outputIndex);\n  }\n  outputConnections() {\n    let list = [];\n    this._outputConnections.forEach((connections_by_id, output_index) => {\n      connections_by_id.forEach((connection, id) => {\n        if (connection) {\n          list.push(connection);\n        }\n      });\n    });\n    return list;\n  }\n}\n","export class SavedConnectionPointsDataController {\n  constructor(_node) {\n    this._node = _node;\n  }\n  set_in(data) {\n    this._in = data;\n  }\n  set_out(data) {\n    this._out = data;\n  }\n  clear() {\n    this._in = void 0;\n    this._out = void 0;\n  }\n  in() {\n    return this._in;\n  }\n  out() {\n    return this._out;\n  }\n}\n","export class BaseConnectionPoint {\n  constructor(_name, _type, _init_value) {\n    this._name = _name;\n    this._type = _type;\n    this._init_value = _init_value;\n    this._inNodeDefinition = false;\n  }\n  get init_value() {\n    return this._init_value;\n  }\n  name() {\n    return this._name;\n  }\n  type() {\n    return this._type;\n  }\n  are_types_matched(src_type, dest_type) {\n    return true;\n  }\n  inNodeDefinition() {\n    return this._inNodeDefinition;\n  }\n  toJSON() {\n    return this._json = this._json || this._create_json();\n  }\n  _create_json() {\n    return {\n      name: this._name,\n      type: this._type\n    };\n  }\n}\n","import { ParamType } from \"../../../../poly/ParamType\";\nimport { RampParam } from \"../../../../params/Ramp\";\nexport var GlConnectionPointType = /* @__PURE__ */ ((GlConnectionPointType2) => {\n  GlConnectionPointType2[\"BOOL\"] = \"bool\";\n  GlConnectionPointType2[\"INT\"] = \"int\";\n  GlConnectionPointType2[\"FLOAT\"] = \"float\";\n  GlConnectionPointType2[\"VEC2\"] = \"vec2\";\n  GlConnectionPointType2[\"VEC3\"] = \"vec3\";\n  GlConnectionPointType2[\"VEC4\"] = \"vec4\";\n  GlConnectionPointType2[\"SAMPLER_2D\"] = \"sampler2D\";\n  GlConnectionPointType2[\"SAMPLER_3D\"] = \"sampler3D\";\n  GlConnectionPointType2[\"SAMPLER_CUBE\"] = \"samplerCube\";\n  GlConnectionPointType2[\"SSS_MODEL\"] = \"SSSModel\";\n  GlConnectionPointType2[\"SDF_CONTEXT\"] = \"SDFContext\";\n  GlConnectionPointType2[\"SDF_MATERIAL\"] = \"SDFMaterial\";\n  return GlConnectionPointType2;\n})(GlConnectionPointType || {});\nexport const GL_CONNECTION_POINT_TYPES = [\n  \"bool\" /* BOOL */,\n  \"int\" /* INT */,\n  \"float\" /* FLOAT */,\n  \"vec2\" /* VEC2 */,\n  \"vec3\" /* VEC3 */,\n  \"vec4\" /* VEC4 */,\n  \"sampler2D\" /* SAMPLER_2D */,\n  \"SSSModel\" /* SSS_MODEL */,\n  \"SDFContext\" /* SDF_CONTEXT */,\n  \"SDFMaterial\" /* SDF_MATERIAL */\n];\nexport const GlConnectionPointTypeToParamTypeMap = {\n  [\"bool\" /* BOOL */]: ParamType.BOOLEAN,\n  [\"int\" /* INT */]: ParamType.INTEGER,\n  [\"float\" /* FLOAT */]: ParamType.FLOAT,\n  [\"vec2\" /* VEC2 */]: ParamType.VECTOR2,\n  [\"vec3\" /* VEC3 */]: ParamType.VECTOR3,\n  [\"vec4\" /* VEC4 */]: ParamType.VECTOR4,\n  [\"sampler2D\" /* SAMPLER_2D */]: ParamType.RAMP,\n  [\"sampler3D\" /* SAMPLER_3D */]: ParamType.RAMP,\n  [\"samplerCube\" /* SAMPLER_CUBE */]: ParamType.RAMP,\n  [\"SSSModel\" /* SSS_MODEL */]: ParamType.STRING,\n  [\"SDFContext\" /* SDF_CONTEXT */]: ParamType.STRING,\n  [\"SDFMaterial\" /* SDF_MATERIAL */]: ParamType.STRING\n};\nexport const GLParamTypeToConnectionPointTypeMap = {\n  [ParamType.BOOLEAN]: \"bool\" /* BOOL */,\n  [ParamType.COLOR]: \"vec3\" /* VEC3 */,\n  [ParamType.INTEGER]: \"int\" /* INT */,\n  [ParamType.FLOAT]: \"float\" /* FLOAT */,\n  [ParamType.FOLDER]: void 0,\n  [ParamType.VECTOR2]: \"vec2\" /* VEC2 */,\n  [ParamType.VECTOR3]: \"vec3\" /* VEC3 */,\n  [ParamType.VECTOR4]: \"vec4\" /* VEC4 */,\n  [ParamType.BUTTON]: void 0,\n  [ParamType.PARAM_PATH]: void 0,\n  [ParamType.NODE_PATH]: void 0,\n  [ParamType.RAMP]: void 0,\n  [ParamType.STRING]: void 0\n};\nexport const GlConnectionPointInitValueMap = {\n  [\"bool\" /* BOOL */]: false,\n  [\"int\" /* INT */]: 0,\n  [\"float\" /* FLOAT */]: 0,\n  [\"vec2\" /* VEC2 */]: [0, 0],\n  [\"vec3\" /* VEC3 */]: [0, 0, 0],\n  [\"vec4\" /* VEC4 */]: [0, 0, 0, 0],\n  [\"sampler2D\" /* SAMPLER_2D */]: RampParam.DEFAULT_VALUE_JSON,\n  [\"sampler3D\" /* SAMPLER_3D */]: RampParam.DEFAULT_VALUE_JSON,\n  [\"samplerCube\" /* SAMPLER_CUBE */]: RampParam.DEFAULT_VALUE_JSON,\n  [\"SSSModel\" /* SSS_MODEL */]: \"SSSModel()\",\n  [\"SDFContext\" /* SDF_CONTEXT */]: \"DefaultSDFContext()\",\n  [\"SDFMaterial\" /* SDF_MATERIAL */]: \"DefaultSDFMaterial()\"\n};\nexport const GlConnectionPointComponentsCountMap = {\n  [\"bool\" /* BOOL */]: 1,\n  [\"int\" /* INT */]: 1,\n  [\"float\" /* FLOAT */]: 1,\n  [\"vec2\" /* VEC2 */]: 2,\n  [\"vec3\" /* VEC3 */]: 3,\n  [\"vec4\" /* VEC4 */]: 4,\n  [\"sampler2D\" /* SAMPLER_2D */]: 1,\n  [\"sampler3D\" /* SAMPLER_3D */]: 1,\n  [\"samplerCube\" /* SAMPLER_CUBE */]: 1,\n  [\"SSSModel\" /* SSS_MODEL */]: 1,\n  [\"SDFContext\" /* SDF_CONTEXT */]: 1,\n  [\"SDFMaterial\" /* SDF_MATERIAL */]: 1\n};\nimport { BaseConnectionPoint } from \"./_Base\";\nexport class GlConnectionPoint extends BaseConnectionPoint {\n  constructor(_name, _type, _init_value) {\n    super(_name, _type);\n    this._name = _name;\n    this._type = _type;\n    this._init_value = _init_value;\n    this._init_value = this._init_value || GlConnectionPointInitValueMap[this._type];\n  }\n  type() {\n    return this._type;\n  }\n  are_types_matched(src_type, dest_type) {\n    return src_type == dest_type;\n  }\n  get param_type() {\n    return GlConnectionPointTypeToParamTypeMap[this._type];\n  }\n  get init_value() {\n    return this._init_value;\n  }\n  toJSON() {\n    return this._json = this._json || this._create_json();\n  }\n  _create_json() {\n    return {\n      name: this._name,\n      type: this._type\n    };\n  }\n}\n","import { ParamType } from \"../../../../poly/ParamType\";\nexport var JsConnectionPointType = /* @__PURE__ */ ((JsConnectionPointType2) => {\n  JsConnectionPointType2[\"BOOL\"] = \"bool\";\n  JsConnectionPointType2[\"INT\"] = \"int\";\n  JsConnectionPointType2[\"FLOAT\"] = \"float\";\n  JsConnectionPointType2[\"VEC2\"] = \"vec2\";\n  JsConnectionPointType2[\"VEC3\"] = \"vec3\";\n  JsConnectionPointType2[\"VEC4\"] = \"vec4\";\n  return JsConnectionPointType2;\n})(JsConnectionPointType || {});\nexport const JS_CONNECTION_POINT_TYPES = [\n  \"bool\" /* BOOL */,\n  \"int\" /* INT */,\n  \"float\" /* FLOAT */,\n  \"vec2\" /* VEC2 */,\n  \"vec3\" /* VEC3 */,\n  \"vec4\" /* VEC4 */\n];\nexport const JsConnectionPointTypeToParamTypeMap = {\n  [\"bool\" /* BOOL */]: ParamType.BOOLEAN,\n  [\"int\" /* INT */]: ParamType.INTEGER,\n  [\"float\" /* FLOAT */]: ParamType.FLOAT,\n  [\"vec2\" /* VEC2 */]: ParamType.VECTOR2,\n  [\"vec3\" /* VEC3 */]: ParamType.VECTOR3,\n  [\"vec4\" /* VEC4 */]: ParamType.VECTOR4\n};\nexport const JsParamTypeToConnectionPointTypeMap = {\n  [ParamType.BOOLEAN]: \"bool\" /* BOOL */,\n  [ParamType.COLOR]: \"vec3\" /* VEC3 */,\n  [ParamType.INTEGER]: \"int\" /* INT */,\n  [ParamType.FLOAT]: \"float\" /* FLOAT */,\n  [ParamType.FOLDER]: void 0,\n  [ParamType.VECTOR2]: \"vec2\" /* VEC2 */,\n  [ParamType.VECTOR3]: \"vec3\" /* VEC3 */,\n  [ParamType.VECTOR4]: \"vec4\" /* VEC4 */,\n  [ParamType.BUTTON]: void 0,\n  [ParamType.PARAM_PATH]: void 0,\n  [ParamType.NODE_PATH]: void 0,\n  [ParamType.RAMP]: void 0,\n  [ParamType.STRING]: void 0\n};\nexport const JsConnectionPointInitValueMap = {\n  [\"bool\" /* BOOL */]: false,\n  [\"int\" /* INT */]: 0,\n  [\"float\" /* FLOAT */]: 0,\n  [\"vec2\" /* VEC2 */]: [0, 0],\n  [\"vec3\" /* VEC3 */]: [0, 0, 0],\n  [\"vec4\" /* VEC4 */]: [0, 0, 0, 0]\n};\nexport const GlConnectionPointComponentsCountMap = {\n  [\"bool\" /* BOOL */]: 1,\n  [\"int\" /* INT */]: 1,\n  [\"float\" /* FLOAT */]: 1,\n  [\"vec2\" /* VEC2 */]: 2,\n  [\"vec3\" /* VEC3 */]: 3,\n  [\"vec4\" /* VEC4 */]: 4\n};\nimport { BaseConnectionPoint } from \"./_Base\";\nexport class JsConnectionPoint extends BaseConnectionPoint {\n  constructor(_name, _type) {\n    super(_name, _type);\n    this._type = _type;\n    this._init_value = JsConnectionPointInitValueMap[this._type];\n  }\n  type() {\n    return this._type;\n  }\n  are_types_matched(src_type, dest_type) {\n    return src_type == dest_type;\n  }\n  get param_type() {\n    return JsConnectionPointTypeToParamTypeMap[this._type];\n  }\n  get init_value() {\n    return this._init_value;\n  }\n  toJSON() {\n    return this._json = this._json || this._create_json();\n  }\n  _create_json() {\n    return {\n      name: this._name,\n      type: this._type\n    };\n  }\n}\n","export var EventConnectionPointType = /* @__PURE__ */ ((EventConnectionPointType2) => {\n  EventConnectionPointType2[\"BASE\"] = \"base\";\n  EventConnectionPointType2[\"DRAG\"] = \"drag\";\n  EventConnectionPointType2[\"KEYBOARD\"] = \"keyboard\";\n  EventConnectionPointType2[\"MOUSE\"] = \"mouse\";\n  EventConnectionPointType2[\"POINTER\"] = \"pointer\";\n  return EventConnectionPointType2;\n})(EventConnectionPointType || {});\nexport const EVENT_CONNECTION_POINT_TYPES = [\n  \"base\" /* BASE */,\n  \"drag\" /* DRAG */,\n  \"keyboard\" /* KEYBOARD */,\n  \"mouse\" /* MOUSE */,\n  \"pointer\" /* POINTER */\n];\nimport { BaseConnectionPoint } from \"./_Base\";\nimport { ParamType } from \"../../../../poly/ParamType\";\nexport class EventConnectionPoint extends BaseConnectionPoint {\n  constructor(_name, _type, _event_listener) {\n    super(_name, _type);\n    this._name = _name;\n    this._type = _type;\n    this._event_listener = _event_listener;\n  }\n  type() {\n    return this._type;\n  }\n  get param_type() {\n    return ParamType.FLOAT;\n  }\n  are_types_matched(src_type, dest_type) {\n    if (dest_type == \"base\" /* BASE */) {\n      return true;\n    } else {\n      return src_type == dest_type;\n    }\n  }\n  get event_listener() {\n    return this._event_listener;\n  }\n  toJSON() {\n    return this._json = this._json || this._create_json();\n  }\n  _create_json() {\n    return {\n      name: this._name,\n      type: this._type,\n      isArray: false\n    };\n  }\n}\n","import { ParamType } from \"../../../../poly/ParamType\";\nimport { BaseConnectionPoint } from \"./_Base\";\nimport { Color } from \"three\";\nimport { Vector2 } from \"three\";\nimport { Vector3 } from \"three\";\nimport { Vector4 } from \"three\";\nimport { CoreType } from \"../../../../../core/Type\";\nexport var ActorConnectionPointType = /* @__PURE__ */ ((ActorConnectionPointType2) => {\n  ActorConnectionPointType2[\"ANIMATION_MIXER\"] = \"AnimationMixer\";\n  ActorConnectionPointType2[\"ANIMATION_ACTION\"] = \"AnimationAction\";\n  ActorConnectionPointType2[\"BOOLEAN\"] = \"boolean\";\n  ActorConnectionPointType2[\"BOOLEAN_ARRAY\"] = \"boolean[]\";\n  ActorConnectionPointType2[\"BOX3\"] = \"Box3\";\n  ActorConnectionPointType2[\"CATMULL_ROM_CURVE3\"] = \"CatmullRomCurve3\";\n  ActorConnectionPointType2[\"COLOR\"] = \"Color\";\n  ActorConnectionPointType2[\"COLOR_ARRAY\"] = \"Color[]\";\n  ActorConnectionPointType2[\"FLOAT\"] = \"float\";\n  ActorConnectionPointType2[\"FLOAT_ARRAY\"] = \"float[]\";\n  ActorConnectionPointType2[\"INTEGER\"] = \"integer\";\n  ActorConnectionPointType2[\"INTEGER_ARRAY\"] = \"integer[]\";\n  ActorConnectionPointType2[\"MATERIAL\"] = \"Material\";\n  ActorConnectionPointType2[\"OBJECT_3D\"] = \"Object3D\";\n  ActorConnectionPointType2[\"PLANE\"] = \"Plane\";\n  ActorConnectionPointType2[\"RAY\"] = \"Ray\";\n  ActorConnectionPointType2[\"SPHERE\"] = \"Sphere\";\n  ActorConnectionPointType2[\"STRING\"] = \"string\";\n  ActorConnectionPointType2[\"STRING_ARRAY\"] = \"string[]\";\n  ActorConnectionPointType2[\"TRIGGER\"] = \"trigger\";\n  ActorConnectionPointType2[\"VECTOR2\"] = \"Vector2\";\n  ActorConnectionPointType2[\"VECTOR2_ARRAY\"] = \"Vector2[]\";\n  ActorConnectionPointType2[\"VECTOR3\"] = \"Vector3\";\n  ActorConnectionPointType2[\"VECTOR3_ARRAY\"] = \"Vector3[]\";\n  ActorConnectionPointType2[\"VECTOR4\"] = \"Vector4\";\n  ActorConnectionPointType2[\"VECTOR4_ARRAY\"] = \"Vector4[]\";\n  return ActorConnectionPointType2;\n})(ActorConnectionPointType || {});\nconst PRIMITIVE_ACTOR_CONNECTION_TYPES = [\n  \"boolean\" /* BOOLEAN */,\n  \"float\" /* FLOAT */,\n  \"integer\" /* INTEGER */,\n  \"string\" /* STRING */\n];\nexport function isActorConnectionPointPrimitive(type) {\n  return PRIMITIVE_ACTOR_CONNECTION_TYPES.includes(type);\n}\nexport const ACTOR_CONNECTION_POINT_TYPES = [\n  \"AnimationMixer\" /* ANIMATION_MIXER */,\n  \"AnimationAction\" /* ANIMATION_ACTION */,\n  \"boolean\" /* BOOLEAN */,\n  \"boolean[]\" /* BOOLEAN_ARRAY */,\n  \"Box3\" /* BOX3 */,\n  \"CatmullRomCurve3\" /* CATMULL_ROM_CURVE3 */,\n  \"Color\" /* COLOR */,\n  \"Color[]\" /* COLOR_ARRAY */,\n  \"float\" /* FLOAT */,\n  \"float[]\" /* FLOAT_ARRAY */,\n  \"integer\" /* INTEGER */,\n  \"integer[]\" /* INTEGER_ARRAY */,\n  \"Material\" /* MATERIAL */,\n  \"Object3D\" /* OBJECT_3D */,\n  \"Plane\" /* PLANE */,\n  \"Ray\" /* RAY */,\n  \"Sphere\" /* SPHERE */,\n  \"string\" /* STRING */,\n  \"string[]\" /* STRING_ARRAY */,\n  \"trigger\" /* TRIGGER */,\n  \"Vector2\" /* VECTOR2 */,\n  \"Vector2[]\" /* VECTOR2_ARRAY */,\n  \"Vector3\" /* VECTOR3 */,\n  \"Vector3[]\" /* VECTOR3_ARRAY */,\n  \"Vector4\" /* VECTOR4 */,\n  \"Vector4[]\" /* VECTOR4_ARRAY */\n];\nexport const PARAM_CONVERTIBLE_ACTOR_CONNECTION_POINT_TYPES = [\n  \"boolean\" /* BOOLEAN */,\n  \"Color\" /* COLOR */,\n  \"float\" /* FLOAT */,\n  \"integer\" /* INTEGER */,\n  \"string\" /* STRING */,\n  \"Vector2\" /* VECTOR2 */,\n  \"Vector3\" /* VECTOR3 */,\n  \"Vector4\" /* VECTOR4 */\n];\nexport const ActorConnectionPointTypeToParamTypeMap = {\n  [\"AnimationMixer\" /* ANIMATION_MIXER */]: ParamType.BUTTON,\n  [\"AnimationAction\" /* ANIMATION_ACTION */]: ParamType.BUTTON,\n  [\"boolean\" /* BOOLEAN */]: ParamType.BOOLEAN,\n  [\"boolean[]\" /* BOOLEAN_ARRAY */]: ParamType.BUTTON,\n  [\"Box3\" /* BOX3 */]: ParamType.BUTTON,\n  [\"CatmullRomCurve3\" /* CATMULL_ROM_CURVE3 */]: ParamType.BUTTON,\n  [\"Color\" /* COLOR */]: ParamType.COLOR,\n  [\"Color[]\" /* COLOR_ARRAY */]: ParamType.BUTTON,\n  [\"float\" /* FLOAT */]: ParamType.FLOAT,\n  [\"float[]\" /* FLOAT_ARRAY */]: ParamType.BUTTON,\n  [\"integer\" /* INTEGER */]: ParamType.INTEGER,\n  [\"integer[]\" /* INTEGER_ARRAY */]: ParamType.BUTTON,\n  [\"Material\" /* MATERIAL */]: ParamType.BUTTON,\n  [\"Object3D\" /* OBJECT_3D */]: ParamType.BUTTON,\n  [\"Plane\" /* PLANE */]: ParamType.BUTTON,\n  [\"Ray\" /* RAY */]: ParamType.BUTTON,\n  [\"Sphere\" /* SPHERE */]: ParamType.BUTTON,\n  [\"string\" /* STRING */]: ParamType.STRING,\n  [\"string[]\" /* STRING_ARRAY */]: ParamType.BUTTON,\n  [\"trigger\" /* TRIGGER */]: ParamType.BUTTON,\n  [\"Vector2\" /* VECTOR2 */]: ParamType.VECTOR2,\n  [\"Vector2[]\" /* VECTOR2_ARRAY */]: ParamType.BUTTON,\n  [\"Vector3\" /* VECTOR3 */]: ParamType.VECTOR3,\n  [\"Vector3[]\" /* VECTOR3_ARRAY */]: ParamType.BUTTON,\n  [\"Vector4\" /* VECTOR4 */]: ParamType.VECTOR4,\n  [\"Vector4[]\" /* VECTOR4_ARRAY */]: ParamType.BUTTON\n};\nexport const ActorConnectionPointTypeToArrayTypeMap = {\n  [\"AnimationMixer\" /* ANIMATION_MIXER */]: \"AnimationMixer\" /* ANIMATION_MIXER */,\n  [\"AnimationAction\" /* ANIMATION_ACTION */]: \"AnimationAction\" /* ANIMATION_ACTION */,\n  [\"boolean\" /* BOOLEAN */]: \"boolean[]\" /* BOOLEAN_ARRAY */,\n  [\"boolean[]\" /* BOOLEAN_ARRAY */]: \"boolean[]\" /* BOOLEAN_ARRAY */,\n  [\"Box3\" /* BOX3 */]: \"Box3\" /* BOX3 */,\n  [\"CatmullRomCurve3\" /* CATMULL_ROM_CURVE3 */]: \"CatmullRomCurve3\" /* CATMULL_ROM_CURVE3 */,\n  [\"Color\" /* COLOR */]: \"Color[]\" /* COLOR_ARRAY */,\n  [\"Color[]\" /* COLOR_ARRAY */]: \"Color[]\" /* COLOR_ARRAY */,\n  [\"float\" /* FLOAT */]: \"float[]\" /* FLOAT_ARRAY */,\n  [\"float[]\" /* FLOAT_ARRAY */]: \"float[]\" /* FLOAT_ARRAY */,\n  [\"integer\" /* INTEGER */]: \"integer[]\" /* INTEGER_ARRAY */,\n  [\"integer[]\" /* INTEGER_ARRAY */]: \"integer[]\" /* INTEGER_ARRAY */,\n  [\"Material\" /* MATERIAL */]: \"Material\" /* MATERIAL */,\n  [\"Object3D\" /* OBJECT_3D */]: \"Object3D\" /* OBJECT_3D */,\n  [\"Plane\" /* PLANE */]: \"Plane\" /* PLANE */,\n  [\"Ray\" /* RAY */]: \"Ray\" /* RAY */,\n  [\"Sphere\" /* SPHERE */]: \"Sphere\" /* SPHERE */,\n  [\"string\" /* STRING */]: \"string[]\" /* STRING_ARRAY */,\n  [\"string[]\" /* STRING_ARRAY */]: \"string[]\" /* STRING_ARRAY */,\n  [\"trigger\" /* TRIGGER */]: \"trigger\" /* TRIGGER */,\n  [\"Vector2\" /* VECTOR2 */]: \"Vector2[]\" /* VECTOR2_ARRAY */,\n  [\"Vector2[]\" /* VECTOR2_ARRAY */]: \"Vector2[]\" /* VECTOR2_ARRAY */,\n  [\"Vector3\" /* VECTOR3 */]: \"Vector3[]\" /* VECTOR3_ARRAY */,\n  [\"Vector3[]\" /* VECTOR3_ARRAY */]: \"Vector3[]\" /* VECTOR3_ARRAY */,\n  [\"Vector4\" /* VECTOR4 */]: \"Vector4[]\" /* VECTOR4_ARRAY */,\n  [\"Vector4[]\" /* VECTOR4_ARRAY */]: \"Vector4[]\" /* VECTOR4_ARRAY */\n};\nconst ARRAY_CONNECTION_TYPES = /* @__PURE__ */ new Set([\n  \"boolean[]\" /* BOOLEAN_ARRAY */,\n  \"Color[]\" /* COLOR_ARRAY */,\n  \"float[]\" /* FLOAT_ARRAY */,\n  \"integer[]\" /* INTEGER_ARRAY */,\n  \"string[]\" /* STRING_ARRAY */,\n  \"Vector2[]\" /* VECTOR2_ARRAY */,\n  \"Vector3[]\" /* VECTOR3_ARRAY */,\n  \"Vector4[]\" /* VECTOR4_ARRAY */\n]);\nexport const ActorParamTypeToConnectionPointTypeMap = {\n  [ParamType.BOOLEAN]: \"boolean\" /* BOOLEAN */,\n  [ParamType.BUTTON]: void 0,\n  [ParamType.COLOR]: \"Color\" /* COLOR */,\n  [ParamType.FLOAT]: \"float\" /* FLOAT */,\n  [ParamType.FOLDER]: void 0,\n  [ParamType.INTEGER]: \"integer\" /* INTEGER */,\n  [ParamType.PARAM_PATH]: void 0,\n  [ParamType.NODE_PATH]: void 0,\n  [ParamType.RAMP]: void 0,\n  [ParamType.STRING]: \"string\" /* STRING */,\n  [ParamType.VECTOR2]: \"Vector2\" /* VECTOR2 */,\n  [ParamType.VECTOR3]: \"Vector3\" /* VECTOR3 */,\n  [ParamType.VECTOR4]: \"Vector4\" /* VECTOR4 */\n};\nexport const ActorConnectionPointInitValueMap = {\n  [\"AnimationMixer\" /* ANIMATION_MIXER */]: null,\n  [\"AnimationAction\" /* ANIMATION_ACTION */]: null,\n  [\"boolean\" /* BOOLEAN */]: false,\n  [\"boolean[]\" /* BOOLEAN_ARRAY */]: null,\n  [\"Box3\" /* BOX3 */]: null,\n  [\"CatmullRomCurve3\" /* CATMULL_ROM_CURVE3 */]: null,\n  [\"Color\" /* COLOR */]: new Color(),\n  [\"Color[]\" /* COLOR_ARRAY */]: null,\n  [\"float\" /* FLOAT */]: 0,\n  [\"float[]\" /* FLOAT_ARRAY */]: null,\n  [\"integer\" /* INTEGER */]: 0,\n  [\"integer[]\" /* INTEGER_ARRAY */]: null,\n  [\"Material\" /* MATERIAL */]: null,\n  [\"Object3D\" /* OBJECT_3D */]: null,\n  [\"Plane\" /* PLANE */]: null,\n  [\"Ray\" /* RAY */]: null,\n  [\"Sphere\" /* SPHERE */]: null,\n  [\"string\" /* STRING */]: \"\",\n  [\"string[]\" /* STRING_ARRAY */]: null,\n  [\"trigger\" /* TRIGGER */]: null,\n  [\"Vector2\" /* VECTOR2 */]: new Vector2(),\n  [\"Vector2[]\" /* VECTOR2_ARRAY */]: null,\n  [\"Vector3\" /* VECTOR3 */]: new Vector3(),\n  [\"Vector3[]\" /* VECTOR3_ARRAY */]: null,\n  [\"Vector4\" /* VECTOR4 */]: new Vector4(),\n  [\"Vector4[]\" /* VECTOR4_ARRAY */]: null\n};\nexport const ActorConnectionPointComponentsCountMap = {\n  [\"AnimationMixer\" /* ANIMATION_MIXER */]: 1,\n  [\"AnimationAction\" /* ANIMATION_ACTION */]: 1,\n  [\"boolean\" /* BOOLEAN */]: 1,\n  [\"boolean[]\" /* BOOLEAN_ARRAY */]: 1,\n  [\"Box3\" /* BOX3 */]: 1,\n  [\"CatmullRomCurve3\" /* CATMULL_ROM_CURVE3 */]: 1,\n  [\"Color\" /* COLOR */]: 3,\n  [\"Color[]\" /* COLOR_ARRAY */]: 1,\n  [\"float\" /* FLOAT */]: 1,\n  [\"float[]\" /* FLOAT_ARRAY */]: 1,\n  [\"integer\" /* INTEGER */]: 1,\n  [\"integer[]\" /* INTEGER_ARRAY */]: 1,\n  [\"Material\" /* MATERIAL */]: 1,\n  [\"Object3D\" /* OBJECT_3D */]: 1,\n  [\"Plane\" /* PLANE */]: 1,\n  [\"Ray\" /* RAY */]: 1,\n  [\"Sphere\" /* SPHERE */]: 1,\n  [\"string\" /* STRING */]: 1,\n  [\"string[]\" /* STRING_ARRAY */]: 1,\n  [\"trigger\" /* TRIGGER */]: 1,\n  [\"Vector2\" /* VECTOR2 */]: 2,\n  [\"Vector2[]\" /* VECTOR2_ARRAY */]: 2,\n  [\"Vector3\" /* VECTOR3 */]: 3,\n  [\"Vector3[]\" /* VECTOR3_ARRAY */]: 3,\n  [\"Vector4\" /* VECTOR4 */]: 4,\n  [\"Vector4[]\" /* VECTOR4_ARRAY */]: 4\n};\nexport const ACTOR_CONNECTION_POINT_IN_NODE_DEF = {\n  inNodeDefinition: true\n};\nexport class ActorConnectionPoint extends BaseConnectionPoint {\n  constructor(_name, _type, _options) {\n    super(_name, _type);\n    this._name = _name;\n    this._type = _type;\n    this._isArray = ARRAY_CONNECTION_TYPES.has(_type);\n    if (_options) {\n      this._inNodeDefinition = _options.inNodeDefinition == true;\n      this._init_value = _options.init_value;\n    }\n    this._init_value = this._init_value || ActorConnectionPointInitValueMap[this._type];\n    if (CoreType.isColor(this._init_value) || CoreType.isVector(this._init_value)) {\n      this._init_value = this._init_value.clone();\n    }\n  }\n  type() {\n    return this._type;\n  }\n  get param_type() {\n    const type = ActorConnectionPointTypeToParamTypeMap[this._type];\n    if (type == ParamType.BUTTON) {\n      return null;\n    } else {\n      return type;\n    }\n  }\n  get init_value() {\n    return this._init_value;\n  }\n  are_types_matched(srcType, destType) {\n    return srcType == destType;\n  }\n  toJSON() {\n    return this._json = this._json || this._create_json();\n  }\n  _create_json() {\n    return {\n      name: this._name,\n      type: this._type,\n      isArray: this._isArray\n    };\n  }\n}\n","import { NodeContext } from \"../../../../poly/NodeContext\";\nimport {\n  GlConnectionPointType,\n  GlConnectionPoint,\n  GLParamTypeToConnectionPointTypeMap\n} from \"./Gl\";\nimport {\n  JsConnectionPointType,\n  JsConnectionPoint,\n  JsParamTypeToConnectionPointTypeMap\n} from \"./Js\";\nimport { EventConnectionPoint, EventConnectionPointType } from \"./Event\";\nimport {\n  ActorConnectionPoint,\n  ActorConnectionPointType,\n  ActorParamTypeToConnectionPointTypeMap\n} from \"./Actor\";\nexport const DEFAULT_CONNECTION_POINT_ENUM_MAP = {\n  [NodeContext.ACTOR]: ActorConnectionPointType.TRIGGER,\n  [NodeContext.ANIM]: void 0,\n  [NodeContext.AUDIO]: void 0,\n  [NodeContext.COP]: void 0,\n  [NodeContext.CSG]: void 0,\n  [NodeContext.EVENT]: EventConnectionPointType.BASE,\n  [NodeContext.GL]: GlConnectionPointType.FLOAT,\n  [NodeContext.JS]: JsConnectionPointType.FLOAT,\n  [NodeContext.MANAGER]: void 0,\n  [NodeContext.MAT]: void 0,\n  [NodeContext.OBJ]: void 0,\n  [NodeContext.POST]: void 0,\n  [NodeContext.ROP]: void 0,\n  [NodeContext.SOP]: void 0\n};\nexport function create_connection_point(context, name, type) {\n  switch (context) {\n    case NodeContext.ACTOR: {\n      return new ActorConnectionPoint(name, type);\n    }\n    case NodeContext.EVENT: {\n      return new EventConnectionPoint(name, type);\n    }\n    case NodeContext.GL: {\n      return new GlConnectionPoint(name, type);\n    }\n    case NodeContext.JS: {\n      return new JsConnectionPoint(name, type);\n    }\n    default: {\n      return void 0;\n    }\n  }\n}\nexport function param_type_to_connection_point_type_map(context) {\n  switch (context) {\n    case NodeContext.ACTOR: {\n      return ActorParamTypeToConnectionPointTypeMap;\n    }\n    case NodeContext.EVENT: {\n      return void 0;\n    }\n    case NodeContext.GL: {\n      return GLParamTypeToConnectionPointTypeMap;\n    }\n    case NodeContext.JS: {\n      return JsParamTypeToConnectionPointTypeMap;\n    }\n    default: {\n      return void 0;\n    }\n  }\n}\n","import {\n  param_type_to_connection_point_type_map,\n  create_connection_point\n} from \"./connections/ConnectionMap\";\nimport { CoreType } from \"../../../../core/Type\";\nimport { ObjectUtils } from \"../../../../core/ObjectUtils\";\nexport class ConnectionPointsSpareParamsController {\n  constructor(node, _context) {\n    this.node = node;\n    this._context = _context;\n    this._raw_input_serialized_by_param_name = /* @__PURE__ */ new Map();\n    this._default_value_serialized_by_param_name = /* @__PURE__ */ new Map();\n    this._initialized = false;\n  }\n  initializeNode() {\n    if (this._initialized) {\n      console.warn(\"already initialized\", this.node);\n      return;\n    }\n    this._initialized = true;\n    this.node.params.onParamsCreated(\"createInputsFromParams\", this._createInputsFromParams.bind(this));\n  }\n  initialized() {\n    return this._initialized;\n  }\n  _createInputsFromParams() {\n    const connection_type_map = param_type_to_connection_point_type_map(this._context);\n    if (!connection_type_map) {\n      return;\n    }\n    const connection_points = [];\n    for (let param_name of this.node.params.names) {\n      let add_input = true;\n      if (this._inputless_param_names && this._inputless_param_names.length > 0 && this._inputless_param_names.includes(param_name)) {\n        add_input = false;\n      }\n      if (add_input) {\n        if (this.node.params.has(param_name)) {\n          const param = this.node.params.get(param_name);\n          if (param && !param.parentParam()) {\n            const connection_type = connection_type_map[param.type()];\n            if (connection_type) {\n              const connection_point = create_connection_point(this._context, param.name(), connection_type);\n              if (connection_point) {\n                connection_points.push(connection_point);\n              }\n            }\n          }\n        }\n      }\n    }\n    this.node.io.inputs.setNamedInputConnectionPoints(connection_points);\n  }\n  setInputlessParamNames(names) {\n    return this._inputless_param_names = names;\n  }\n  createSpareParameters() {\n    if (this.node.scene().loadingController.isLoading()) {\n      return;\n    }\n    const current_param_names = this.node.params.spare_names;\n    const params_update_options = {};\n    for (let param_name of current_param_names) {\n      if (this.node.params.has(param_name)) {\n        const param = this.node.params.get(param_name);\n        if (param) {\n          this._raw_input_serialized_by_param_name.set(param_name, param.rawInputSerialized());\n          this._default_value_serialized_by_param_name.set(param_name, param.defaultValueSerialized());\n          params_update_options.namesToDelete = params_update_options.namesToDelete || [];\n          params_update_options.namesToDelete.push(param_name);\n        }\n      }\n    }\n    let i = 0;\n    for (let connection_point of this.node.io.inputs.namedInputConnectionPoints()) {\n      if (connection_point) {\n        const isConnected = this.node.io.inputs.input(i) != null;\n        const param_name = connection_point.name();\n        const param_type = connection_point.param_type;\n        if (param_type) {\n          let init_value = connection_point.init_value;\n          const last_param_init_value = this._default_value_serialized_by_param_name.get(param_name);\n          let default_value_from_name = this.node.paramDefaultValue(param_name);\n          if (default_value_from_name != null) {\n            init_value = default_value_from_name;\n          } else {\n            if (last_param_init_value != null) {\n              init_value = last_param_init_value;\n            } else {\n              init_value = connection_point.init_value;\n            }\n          }\n          if (CoreType.isArray(connection_point.init_value)) {\n            if (CoreType.isNumber(init_value)) {\n              const array = new Array(connection_point.init_value.length);\n              array.fill(init_value);\n              init_value = array;\n            } else if (CoreType.isArray(init_value)) {\n              if (init_value.length == connection_point.init_value.length) {\n                if (last_param_init_value != null) {\n                  init_value = connection_point.init_value;\n                }\n              }\n            }\n          }\n          if (init_value != null) {\n            params_update_options.toAdd = params_update_options.toAdd || [];\n            params_update_options.toAdd.push({\n              name: param_name,\n              type: param_type,\n              initValue: ObjectUtils.clone(init_value),\n              rawInput: ObjectUtils.clone(init_value),\n              options: {\n                spare: true,\n                editable: !isConnected\n              }\n            });\n          }\n        }\n      }\n      i++;\n    }\n    this.node.params.updateParams(params_update_options);\n    for (let spare_param of this.node.params.spare) {\n      if (!spare_param.parentParam()) {\n        const raw_input = this._raw_input_serialized_by_param_name.get(spare_param.name());\n        if (raw_input) {\n          spare_param.set(raw_input);\n        }\n      }\n    }\n  }\n}\n","import {\n  DEFAULT_CONNECTION_POINT_ENUM_MAP,\n  create_connection_point\n} from \"./connections/ConnectionMap\";\nimport { ConnectionPointsSpareParamsController } from \"./ConnectionPointsSpareParamsController\";\nimport { NetworkChildNodeType } from \"../../../poly/NodeContext\";\nfunction arraysMatch(array0, array1) {\n  if (array0.length != array1.length) {\n    return false;\n  }\n  for (let i = 0; i < array0.length; i++) {\n    if (array0[i] != array1[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nexport class ConnectionPointsController {\n  constructor(node, _context) {\n    this.node = node;\n    this._context = _context;\n    this._create_spare_params_from_inputs = true;\n    this._functions_overridden = false;\n    this._input_name_function = (index) => {\n      return `in${index}`;\n    };\n    this._output_name_function = (index) => {\n      return index == 0 ? \"val\" : `val${index}`;\n    };\n    this._expected_input_types_function = () => {\n      const type = this.first_input_connection_type() || this.default_connection_type();\n      return [type, type];\n    };\n    this._expected_output_types_function = () => {\n      return [this._expected_input_types_function()[0]];\n    };\n    this._update_signature_if_required_bound = this.update_signature_if_required.bind(this);\n    this._initialized = false;\n    this._spare_params_controller = new ConnectionPointsSpareParamsController(this.node, this._context);\n  }\n  default_connection_type() {\n    return DEFAULT_CONNECTION_POINT_ENUM_MAP[this._context];\n  }\n  create_connection_point(name, type) {\n    return create_connection_point(this._context, name, type);\n  }\n  functions_overridden() {\n    return this._functions_overridden;\n  }\n  initialized() {\n    return this._initialized;\n  }\n  set_create_spare_params_from_inputs(state) {\n    this._create_spare_params_from_inputs = state;\n  }\n  set_input_name_function(func) {\n    this._initialize_if_required();\n    this._input_name_function = func;\n  }\n  set_output_name_function(func) {\n    this._initialize_if_required();\n    this._output_name_function = func;\n  }\n  set_expected_input_types_function(func) {\n    this._initialize_if_required();\n    this._functions_overridden = true;\n    this._expected_input_types_function = func;\n  }\n  set_expected_output_types_function(func) {\n    this._initialize_if_required();\n    this._functions_overridden = true;\n    this._expected_output_types_function = func;\n  }\n  input_name(index) {\n    return this._wrapped_input_name_function(index);\n  }\n  output_name(index) {\n    return this._wrapped_output_name_function(index);\n  }\n  initializeNode() {\n    if (this._initialized) {\n      console.warn(\"already initialized\", this.node);\n      return;\n    }\n    this._initialized = true;\n    this.node.io.inputs.add_on_set_input_hook(\"_update_signature_if_required\", this._update_signature_if_required_bound);\n    this.node.params.addOnSceneLoadHook(\"_update_signature_if_required\", this._update_signature_if_required_bound);\n    this.node.params.onParamsCreated(\"_update_signature_if_required_bound\", this._update_signature_if_required_bound);\n    this.node.addPostDirtyHook(\"_update_signature_if_required\", this._update_signature_if_required_bound);\n    if (!this._spare_params_controller.initialized()) {\n      this._spare_params_controller.initializeNode();\n    }\n  }\n  _initialize_if_required() {\n    if (!this._initialized) {\n      this.initializeNode();\n    }\n  }\n  get spare_params() {\n    return this._spare_params_controller;\n  }\n  update_signature_if_required(dirty_trigger) {\n    if (!this.node.lifecycle.creationCompleted() || !this._inputsOutputsMatchExpectations()) {\n      this.update_connection_types();\n      this.node.removeDirtyState();\n      if (!this.node.scene().loadingController.isLoading()) {\n        this.make_successors_update_signatures();\n      }\n    }\n  }\n  make_successors_update_signatures() {\n    const successors = this.node.graphAllSuccessors();\n    if (this.node.childrenAllowed()) {\n      const subnet_inputs = this.node.nodesByType(NetworkChildNodeType.INPUT);\n      const subnet_outputs = this.node.nodesByType(NetworkChildNodeType.OUTPUT);\n      for (let subnet_input of subnet_inputs) {\n        successors.push(subnet_input);\n      }\n      for (let subnet_output of subnet_outputs) {\n        successors.push(subnet_output);\n      }\n    }\n    for (let graph_node of successors) {\n      const node = graph_node;\n      if (node.io && node.io.has_connection_points_controller && node.io.connection_points.initialized()) {\n        node.io.connection_points.update_signature_if_required(this.node);\n      }\n    }\n  }\n  update_connection_types() {\n    const set_dirty = false;\n    const expected_input_types = this._wrapped_expected_input_types_function();\n    const expected_output_types = this._wrapped_expected_output_types_function();\n    const named_input_connection_points = [];\n    for (let i = 0; i < expected_input_types.length; i++) {\n      const type = expected_input_types[i];\n      const point = this.create_connection_point(this._wrapped_input_name_function(i), type);\n      named_input_connection_points.push(point);\n    }\n    const named_output_connect_points = [];\n    for (let i = 0; i < expected_output_types.length; i++) {\n      const type = expected_output_types[i];\n      const point = this.create_connection_point(this._wrapped_output_name_function(i), type);\n      named_output_connect_points.push(point);\n    }\n    this.node.io.inputs.setNamedInputConnectionPoints(named_input_connection_points);\n    this.node.io.outputs.setNamedOutputConnectionPoints(named_output_connect_points, set_dirty);\n    if (this._create_spare_params_from_inputs) {\n      this._spare_params_controller.createSpareParameters();\n    }\n  }\n  _inputsOutputsMatchExpectations() {\n    const namedInputConnections = this.node.io.inputs.namedInputConnectionPoints();\n    const namedOutputConnections = this.node.io.outputs.namedOutputConnectionPoints();\n    const inputTypesMatch = arraysMatch(namedInputConnections.filter((c) => !(c == null ? void 0 : c.inNodeDefinition())).map((c) => c == null ? void 0 : c.type()), this._wrapped_expected_input_types_function());\n    const outputTypesMatch = arraysMatch(namedOutputConnections.map((c) => c == null ? void 0 : c.type()), this._wrapped_expected_output_types_function());\n    const inputNamesMatch = arraysMatch(namedInputConnections.filter((c) => !(c == null ? void 0 : c.inNodeDefinition())).map((c) => c == null ? void 0 : c.name()), namedInputConnections.filter((c) => !(c == null ? void 0 : c.inNodeDefinition())).map((c, i) => this._wrapped_input_name_function(i)));\n    const outputNamesMatch = arraysMatch(namedOutputConnections.map((c) => c == null ? void 0 : c.name()), namedOutputConnections.map((c, i) => this._wrapped_output_name_function(i)));\n    return inputTypesMatch && outputTypesMatch && inputNamesMatch && outputNamesMatch;\n  }\n  _wrapped_expected_input_types_function() {\n    if (this.node.scene().loadingController.isLoading()) {\n      const in_data = this.node.io.saved_connection_points_data.in();\n      if (in_data) {\n        return in_data.map((d) => d.type);\n      }\n    }\n    return this._expected_input_types_function();\n  }\n  _wrapped_expected_output_types_function() {\n    if (this.node.scene().loadingController.isLoading()) {\n      const out_data = this.node.io.saved_connection_points_data.out();\n      if (out_data) {\n        return out_data.map((d) => d.type);\n      }\n    }\n    return this._expected_output_types_function();\n  }\n  _wrapped_input_name_function(index) {\n    if (this.node.scene().loadingController.isLoading()) {\n      const in_data = this.node.io.saved_connection_points_data.in();\n      if (in_data) {\n        return in_data[index].name;\n      }\n    }\n    return this._input_name_function(index);\n  }\n  _wrapped_output_name_function(index) {\n    if (this.node.scene().loadingController.isLoading()) {\n      const out_data = this.node.io.saved_connection_points_data.out();\n      if (out_data) {\n        return out_data[index].name;\n      }\n    }\n    return this._output_name_function(index);\n  }\n  first_input_connection_type() {\n    return this.input_connection_type(0);\n  }\n  input_connection_type(index) {\n    const connections = this.node.io.connections.inputConnections();\n    if (!connections) {\n      return;\n    }\n    const connection = connections[index];\n    if (!connection) {\n      return;\n    }\n    const connectionPoint = connection.src_connection_point();\n    if (!connectionPoint) {\n      return;\n    }\n    return connectionPoint.type();\n  }\n}\n","import { NodeInputsController } from \"./InputsController\";\nimport { OutputsController } from \"./OutputsController\";\nimport { ConnectionsController } from \"./ConnectionsController\";\nimport { SavedConnectionPointsDataController } from \"./SavedConnectionPointsDataController\";\nimport { ConnectionPointsController } from \"./ConnectionPointsController\";\nexport class IOController {\n  constructor(node) {\n    this.node = node;\n    this._connections = new ConnectionsController(this.node);\n  }\n  dispose() {\n    this.inputs.dispose();\n    this.outputs.dispose();\n    this.connections.dispose();\n  }\n  get connections() {\n    return this._connections;\n  }\n  get inputs() {\n    return this._inputs = this._inputs || new NodeInputsController(this.node);\n  }\n  hasInputs() {\n    return this._inputs != null;\n  }\n  get outputs() {\n    return this._outputs = this._outputs || new OutputsController(this.node);\n  }\n  has_outputs() {\n    return this._outputs != null;\n  }\n  get connection_points() {\n    return this._connection_points = this._connection_points || new ConnectionPointsController(this.node, this.node.context());\n  }\n  get has_connection_points_controller() {\n    return this._connection_points != null;\n  }\n  get saved_connection_points_data() {\n    return this._saved_connection_points_data = this._saved_connection_points_data || new SavedConnectionPointsDataController(this.node);\n  }\n  clear_saved_connection_points_data() {\n    if (this._saved_connection_points_data) {\n      this._saved_connection_points_data.clear();\n      this._saved_connection_points_data = void 0;\n    }\n  }\n}\n","export class ParamsAccessor {\n  constructor() {\n  }\n}\n","import { CoreGraphNode } from \"../../core/graph/CoreGraphNode\";\nimport { UIData } from \"./utils/UIData\";\nimport { FlagsControllerD } from \"./utils/FlagsController\";\nimport { NodeStatesController } from \"./utils/StatesController\";\nimport { HierarchyParentController } from \"./utils/hierarchy/ParentController\";\nimport { HierarchyChildrenController } from \"./utils/hierarchy/ChildrenController\";\nimport { NodeLifeCycleController } from \"./utils/LifeCycleController\";\nimport { TypedContainerController } from \"./utils/ContainerController\";\nimport { NodeCookController } from \"./utils/CookController\";\nimport { NameController } from \"./utils/NameController\";\nimport { NodeSerializer } from \"./utils/Serializer\";\nimport { ParamsController } from \"./utils/params/ParamsController\";\nimport { ParamsValueAccessor } from \"./utils/params/ParamsValueAccessor\";\nimport { IOController } from \"./utils/io/IOController\";\nimport { ParamsAccessor } from \"./utils/params/ParamsAccessor\";\nexport class TypedNode extends CoreGraphNode {\n  constructor(scene, nodeName = \"BaseNode\", createOptions) {\n    super(scene, nodeName);\n    this.createOptions = createOptions;\n    this.containerController = new TypedContainerController(this);\n    this.pv = new ParamsValueAccessor();\n    this.p = new ParamsAccessor();\n    this._initialized = false;\n  }\n  copy_param_values(node) {\n    const non_spare = this.params.non_spare;\n    for (let param of non_spare) {\n      const other_param = node.params.get(param.name());\n      if (other_param) {\n        param.copyValue(other_param);\n      }\n    }\n  }\n  get parentController() {\n    return this._parent_controller = this._parent_controller || new HierarchyParentController(this);\n  }\n  static displayedInputNames() {\n    return [];\n  }\n  childrenControllerContext() {\n    return this._childrenControllerContext;\n  }\n  _create_childrenController() {\n    if (this._childrenControllerContext) {\n      return new HierarchyChildrenController(this, this._childrenControllerContext);\n    }\n  }\n  get childrenController() {\n    return this._childrenController = this._childrenController || this._create_childrenController();\n  }\n  childrenAllowed() {\n    return this._childrenControllerContext != null;\n  }\n  get uiData() {\n    return this._uiData = this._uiData || new UIData(this);\n  }\n  get states() {\n    return this._states = this._states || new NodeStatesController(this);\n  }\n  get lifecycle() {\n    return this._lifecycle = this._lifecycle || new NodeLifeCycleController(this);\n  }\n  get serializer() {\n    return this._serializer = this._serializer || new NodeSerializer(this);\n  }\n  get cookController() {\n    return this._cookController = this._cookController || new NodeCookController(this);\n  }\n  get io() {\n    return this._io = this._io || new IOController(this);\n  }\n  get nameController() {\n    return this._nameController = this._nameController || new NameController(this);\n  }\n  setName(name) {\n    this.nameController.setName(name);\n  }\n  _setCoreName(name) {\n    this._name = name;\n  }\n  get params() {\n    return this._paramsController = this._paramsController || new ParamsController(this);\n  }\n  initializeBaseAndNode() {\n    var _a;\n    if (!this._initialized) {\n      this._initialized = true;\n      (_a = this.displayNodeController) == null ? void 0 : _a.initializeNode();\n      this.initializeBaseNode();\n      this.initializeNode();\n      if (this.polyNodeController) {\n        this.polyNodeController.initializeNode();\n      }\n    } else {\n      console.warn(\"node already initialized\");\n    }\n  }\n  initializeBaseNode() {\n  }\n  initializeNode() {\n  }\n  static type() {\n    throw \"type to be overriden\";\n  }\n  type() {\n    const c = this.constructor;\n    return c.type();\n  }\n  static context() {\n    console.error(\"node has no node_context\", this);\n    throw \"context requires override\";\n  }\n  context() {\n    const c = this.constructor;\n    return c.context();\n  }\n  static require_webgl2() {\n    return false;\n  }\n  require_webgl2() {\n    const c = this.constructor;\n    return c.require_webgl2();\n  }\n  setParent(parent) {\n    this.parentController.setParent(parent);\n  }\n  parent() {\n    return this.parentController.parent();\n  }\n  insideALockedParent() {\n    return this.lockedParent() != null;\n  }\n  lockedOrInsideALockedParent() {\n    var _a;\n    return ((_a = this.polyNodeController) == null ? void 0 : _a.locked()) || this.insideALockedParent();\n  }\n  selfOrLockedParent() {\n    var _a;\n    if ((_a = this.polyNodeController) == null ? void 0 : _a.locked()) {\n      return this;\n    }\n    return this.lockedParent();\n  }\n  lockedParent() {\n    const parent = this.parent();\n    if (!parent) {\n      return null;\n    }\n    if (parent.polyNodeController && parent.polyNodeController.locked()) {\n      return parent;\n    }\n    return parent.lockedParent();\n  }\n  firstAncestorWithContext(context) {\n    return this.parentController.firstAncestorWithContext(context);\n  }\n  root() {\n    return this._scene.root();\n  }\n  path(relative_to_parent) {\n    return this.parentController.path(relative_to_parent);\n  }\n  createParams() {\n  }\n  addParam(type, name, default_value, options) {\n    var _a;\n    return (_a = this._paramsController) == null ? void 0 : _a.addParam(type, name, default_value, options);\n  }\n  paramDefaultValue(name) {\n    return null;\n  }\n  cook(input_contents) {\n    return null;\n  }\n  onCookEnd(callbackName, callback) {\n    this.cookController.registerOnCookEnd(callbackName, callback);\n  }\n  async compute() {\n    var _a, _b;\n    if (this.isDirty() || ((_b = (_a = this.flags) == null ? void 0 : _a.bypass) == null ? void 0 : _b.active())) {\n      return await this.containerController.compute();\n    } else {\n      return this.containerController.container();\n    }\n  }\n  _setContainer(content, message = null) {\n    this.containerController.container().set_content(content);\n    if (content != null) {\n      if (!content.name) {\n        content.name = this.path();\n      }\n      if (!content.node) {\n        content.node = this;\n      }\n    }\n    this.cookController.endCook(message);\n  }\n  createNode(nodeClass, options) {\n    var _a;\n    return (_a = this.childrenController) == null ? void 0 : _a.createNode(nodeClass, options);\n  }\n  createOperationContainer(type, operation_container_name, options) {\n    var _a;\n    return (_a = this.childrenController) == null ? void 0 : _a.createOperationContainer(type, operation_container_name, options);\n  }\n  removeNode(node) {\n    var _a;\n    (_a = this.childrenController) == null ? void 0 : _a.removeNode(node);\n  }\n  dispose() {\n    super.dispose();\n    this.setParent(null);\n    if (this._nameController) {\n      this._nameController.dispose();\n      this._nameController = void 0;\n    }\n    if (this._io) {\n      this._io.dispose();\n      this._io = void 0;\n    }\n    if (this._lifecycle) {\n      this._lifecycle.dispose();\n      this._lifecycle = void 0;\n    }\n    if (this.displayNodeController) {\n      this.displayNodeController.dispose();\n    }\n    if (this._childrenController) {\n      this._childrenController.dispose();\n      this._childrenController = void 0;\n    }\n    if (this._paramsController) {\n      this._paramsController.dispose();\n      this._paramsController = void 0;\n    }\n    if (this._cookController) {\n      this._cookController.dispose();\n      this._cookController = void 0;\n    }\n    if (this._serializer) {\n      this._serializer.dispose();\n      this._serializer = void 0;\n    }\n    if (this._uiData) {\n      this._uiData.dispose();\n      this._uiData = void 0;\n    }\n  }\n  children() {\n    var _a;\n    return ((_a = this.childrenController) == null ? void 0 : _a.children()) || [];\n  }\n  node(path) {\n    var _a;\n    return ((_a = this.parentController) == null ? void 0 : _a.findNode(path)) || null;\n  }\n  nodeSibling(name) {\n    var _a;\n    const parent = this.parent();\n    if (parent) {\n      const node = (_a = parent.childrenController) == null ? void 0 : _a.childByName(name);\n      if (node) {\n        return node;\n      }\n    }\n    return null;\n  }\n  nodesByType(type) {\n    var _a;\n    return ((_a = this.childrenController) == null ? void 0 : _a.nodesByType(type)) || [];\n  }\n  setInput(inputIndexOrName, node, outputIndexOrName, options) {\n    this.io.inputs.setInput(inputIndexOrName, node, outputIndexOrName, options);\n  }\n  emit(event_name, data = null) {\n    this.scene().dispatchController.dispatch(this, event_name, data);\n  }\n  toJSON(include_param_components = false) {\n    return this.serializer.toJSON(include_param_components);\n  }\n  usedAssembler() {\n  }\n  integrationData() {\n  }\n}\nexport class BaseNodeClass extends TypedNode {\n}\nexport class BaseNodeClassWithDisplayFlag extends TypedNode {\n  constructor() {\n    super(...arguments);\n    this.flags = new FlagsControllerD(this);\n  }\n}\n","import { TypedNode } from \"../_Base\";\nimport { NodeContext } from \"../../poly/NodeContext\";\nimport { FlagsControllerBO } from \"../utils/FlagsController\";\nimport { DataTexture } from \"three\";\nimport { LuminanceFormat, HalfFloatType } from \"three\";\nconst INPUT_COP_NAME = \"input texture\";\nconst DEFAULT_INPUT_NAMES = [INPUT_COP_NAME, INPUT_COP_NAME, INPUT_COP_NAME, INPUT_COP_NAME];\nvar size = 32;\nvar data = new Uint16Array(size);\nfor (var i = 0; i < size; i++) {\n  data[i] = 28898;\n}\nconst EMPTY_DATA_TEXTURE = new DataTexture(data, size, 1, LuminanceFormat, HalfFloatType);\nexport class TypedCopNode extends TypedNode {\n  constructor() {\n    super(...arguments);\n    this.flags = new FlagsControllerBO(this);\n  }\n  static context() {\n    return NodeContext.COP;\n  }\n  static displayedInputNames() {\n    return DEFAULT_INPUT_NAMES;\n  }\n  initializeBaseNode() {\n    this.io.outputs.setHasOneOutput();\n  }\n  setTexture(texture) {\n    texture.name = this.path();\n    this._setContainer(texture);\n  }\n  _clearTexture() {\n    this._setContainer(EMPTY_DATA_TEXTURE);\n  }\n}\nexport class BaseCopNodeClass extends TypedCopNode {\n}\n","const WORLD_SIZE = 512;\nconst MERCATOR_A = 6378137.0;\n\nexport const CoreMapboxConstants = {\n\tWORLD_SIZE: WORLD_SIZE,\n\tPROJECTION_WORLD_SIZE: WORLD_SIZE / (MERCATOR_A * Math.PI) / 2,\n\tMERCATOR_A: MERCATOR_A, // 900913 projection property\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\tEARTH_CIRCUMFERENCE: 40075000\n}\n","// THREE = require(\"../three97.js\"); # Modified version to use 64-bit double precision floats for matrix math\nimport {Vector3} from 'three';\nimport {Matrix4} from 'three';\nimport mapboxgl from 'mapbox-gl';\n\nimport {CoreMapboxConstants} from './Constants';\nimport {Number3} from '@polygonjs/polygonjs/dist/src/types/GlobalTypes';\nconst Constants = CoreMapboxConstants;\n\nexport class CoreMapboxUtils {\n\t// @prettyPrintMatrix: (uglymatrix)->\n\t//     for (s=0;s<4;s++){\n\t//         quartet=[uglymatrix[s],\n\t//         uglymatrix[s+4],\n\t//         uglymatrix[s+8],\n\t//         uglymatrix[s+12]];\n\t//         console.log(quartet.map(function(num){return num.toFixed(4)}))\n\t//     }\n\n\tstatic makePerspectiveMatrix(fovy: number, aspect: number, near: number, far: number) {\n\t\tconst out = new Matrix4();\n\t\tconst f = 1.0 / Math.tan(fovy / 2);\n\t\tconst nf = 1 / (near - far);\n\n\t\tconst newMatrix = [f / aspect, 0, 0, 0, 0, f, 0, 0, 0, 0, (far + near) * nf, -1, 0, 0, 2 * far * near * nf, 0];\n\n\t\tout.elements = newMatrix;\n\t\treturn out;\n\t}\n\n\t// #gimme radians\n\t// function radify(deg){\n\n\t//     if (typeof deg === 'object'){\n\t//         return deg.map(function(degree){\n\t//             return Math.PI*2*degree/360\n\t//         })\n\t//     }\n\n\t//     else return Math.PI*2*deg/360\n\t// }\n\n\t// #gimme degrees\n\t// function degreeify(rad){\n\t//     return 360*rad/(Math.PI*2)\n\t// }\n\n\tstatic projectToWorld(lnglat: Number3) {\n\t\t// Spherical mercator forward projection, re-scaling to WORLD_SIZE\n\t\tconst projected = [\n\t\t\t-Constants.MERCATOR_A * lnglat[0] * Constants.DEG2RAD * Constants.PROJECTION_WORLD_SIZE,\n\t\t\t-Constants.MERCATOR_A *\n\t\t\t\tMath.log(Math.tan(Math.PI * 0.25 + 0.5 * lnglat[1] * Constants.DEG2RAD)) *\n\t\t\t\tConstants.PROJECTION_WORLD_SIZE,\n\t\t];\n\n\t\tconst pixelsPerMeter = this.projectedUnitsPerMeter(lnglat[1]);\n\n\t\t//z dimension\n\t\tlet height = lnglat[2];\n\t\tif (height == null) {\n\t\t\theight = 0;\n\t\t}\n\t\tprojected.push(height * pixelsPerMeter);\n\n\t\treturn new Vector3(projected[0], projected[1], projected[2]);\n\t}\n\n\tstatic projectedUnitsPerMeter(latitude: number): number {\n\t\treturn Math.abs(\n\t\t\t(Constants.WORLD_SIZE * (1 / Math.cos((latitude * Math.PI) / 180))) / Constants.EARTH_CIRCUMFERENCE\n\t\t);\n\t}\n\n\tstatic fromLL(lon: number, lat: number): [number, number] {\n\t\t// derived from https://gist.github.com/springmeyer/871897\n\t\tconst extent = 20037508.34;\n\t\tconst x = (lon * extent) / 180;\n\t\tlet y = Math.log(Math.tan(((90 + lat) * Math.PI) / 360)) / (Math.PI / 180);\n\t\ty = (y * extent) / 180;\n\t\treturn [(x + extent) / (2 * extent), 1 - (y + extent) / (2 * extent)];\n\t}\n\tstatic fromLLv(position: Vector3): Vector3 {\n\t\tconst ll = this.fromLL(position.x, position.z);\n\t\treturn new Vector3(ll[0], position.y, ll[1]);\n\t}\n\n\t// https://github.com/mapbox/mapbox-gl-js/blob/5bebe1cd725e9af0c6be25928bdbde468bebdf61/src/ui/control/scale_control.js#L61-L127\n\tstatic get_distance(latlng1: mapboxgl.LngLat, latlng2: mapboxgl.LngLat) {\n\t\t// Uses spherical law of cosines approximation.\n\t\tconst R = 6371000;\n\n\t\tconst rad = Math.PI / 180,\n\t\t\tlat1 = latlng1.lat * rad,\n\t\t\tlat2 = latlng2.lat * rad,\n\t\t\ta =\n\t\t\t\tMath.sin(lat1) * Math.sin(lat2) +\n\t\t\t\tMath.cos(lat1) * Math.cos(lat2) * Math.cos((latlng2.lng - latlng1.lng) * rad);\n\n\t\tconst maxMeters = R * Math.acos(Math.min(a, 1));\n\t\treturn maxMeters;\n\t}\n\n\t// https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_3\n\tstatic lnglat_to_tile_number(lng_deg: number, lat_deg: number, zoom: number) {\n\t\tconst lat_rad = (lat_deg / 180) * Math.PI;\n\t\tconst n = 2.0 ** zoom;\n\t\tconst x = Math.floor(((lng_deg + 180.0) / 360.0) * n);\n\t\tconst y = Math.floor(((1.0 - Math.log(Math.tan(lat_rad) + 1 / Math.cos(lat_rad)) / Math.PI) / 2.0) * n);\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t};\n\t}\n\tstatic tile_number_to_lnglat(xtile: number, ytile: number, zoom: number) {\n\t\tconst n = 2.0 ** zoom;\n\t\tconst lon_deg = (xtile / n) * 360.0 - 180.0;\n\t\tconst lat_rad = Math.atan(Math.sinh(Math.PI * (1 - (2 * ytile) / n)));\n\t\tconst lat_deg = 180.0 * (lat_rad / Math.PI);\n\n\t\treturn {\n\t\t\tlat: lat_deg,\n\t\t\tlng: lon_deg,\n\t\t};\n\t}\n}\n\n// module.exports.prettyPrintMatrix = prettyPrintMatrix;\n// module.exports.makePerspectiveMatrix = makePerspectiveMatrix;\n// module.exports.radify = radify;\n// module.exports.degreeify = degreeify;\n","export class CoreImage {\n  static overlay(img0, img1) {\n    return new Promise((resolve, reject) => {\n      let canvas = document.createElement(\"canvas\");\n      canvas.width = Math.max(img0.width, img1.width);\n      canvas.height = Math.max(img0.height, img1.height);\n      let context = canvas.getContext(\"2d\");\n      context.drawImage(img0, 0, 0, img0.width, img0.height);\n      context.drawImage(img1, 0, 0, img1.width, img1.height);\n      const datauri = canvas.toDataURL(\"image/png\");\n      const img = new Image();\n      img.onload = () => {\n        resolve(img);\n      };\n      img.src = datauri;\n    });\n  }\n  static create_white_image(width, height) {\n    return new Promise((resolve, reject) => {\n      let canvas = document.createElement(\"canvas\");\n      canvas.width = width;\n      canvas.height = height;\n      let context = canvas.getContext(\"2d\");\n      context.beginPath();\n      context.rect(0, 0, width, height);\n      context.fillStyle = \"white\";\n      context.fill();\n      const datauri = canvas.toDataURL(\"image/png\");\n      const img = new Image();\n      img.onload = () => {\n        resolve(img);\n      };\n      img.src = datauri;\n    });\n  }\n  static make_square(src_img) {\n    return new Promise((resolve, reject) => {\n      let canvas = document.createElement(\"canvas\");\n      const size = Math.min(src_img.width, src_img.height);\n      const ratio = src_img.width / src_img.height;\n      canvas.width = size;\n      canvas.height = size;\n      let context = canvas.getContext(\"2d\");\n      const is_landscape = ratio > 1;\n      const margin = is_landscape ? (src_img.width - size) / 2 : (src_img.height - size) / 2;\n      if (is_landscape) {\n        context.drawImage(src_img, margin, 0, size, size, 0, 0, size, size);\n      } else {\n        context.drawImage(src_img, 0, margin, size, size, 0, 0, size, size);\n      }\n      const datauri = canvas.toDataURL(\"image/png\");\n      const img = new Image();\n      img.onload = () => {\n        resolve(img);\n      };\n      img.src = datauri;\n    });\n  }\n  static async image_to_blob(img) {\n    return new Promise(function(resolve, reject) {\n      try {\n        let xhr = new XMLHttpRequest();\n        xhr.open(\"GET\", img.src);\n        xhr.responseType = \"blob\";\n        xhr.onerror = function() {\n          reject(\"Network error.\");\n        };\n        xhr.onload = function() {\n          if (xhr.status === 200) {\n            resolve(xhr.response);\n          } else {\n            reject(\"Loading error:\" + xhr.statusText);\n          }\n        };\n        xhr.send();\n      } catch (err) {\n        reject(err.message);\n      }\n    });\n  }\n  static data_from_url(url) {\n    return new Promise((resolve, reject) => {\n      const img = new Image();\n      img.crossOrigin = \"Anonymous\";\n      img.onload = () => {\n        const data = this.data_from_image(img);\n        resolve(data);\n      };\n      img.src = url;\n    });\n  }\n  static data_from_image(img) {\n    const canvas = document.createElement(\"canvas\");\n    canvas.width = img.width;\n    canvas.height = img.height;\n    const context = canvas.getContext(\"2d\");\n    context.drawImage(img, 0, 0, img.width, img.height);\n    return context.getImageData(0, 0, img.width, img.height);\n  }\n}\n","import type {IntegrationData} from '@polygonjs/polygonjs/dist/src/engine/nodes/_Base';\nimport {Poly} from '@polygonjs/polygonjs/dist/src/engine/Poly';\nimport type {PolyPluginMapbox} from '../../PolyPluginMapbox';\nexport class CoreMapboxClient {\n\tstatic CSS_URL = 'https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css';\n\tstatic _token: string;\n\n\tstatic token() {\n\t\tconst plugin = Poly.pluginsRegister.pluginByName('mapbox') as PolyPluginMapbox;\n\t\tconst token = plugin.token();\n\t\treturn token;\n\t}\n\n\tstatic integration_data(): IntegrationData | void {\n\t\tconst token = this.token();\n\t\tif (token) {\n\t\t\treturn {\n\t\t\t\tname: 'mapbox',\n\t\t\t\tdata: {token},\n\t\t\t};\n\t\t}\n\t}\n}\n","import { ParamType } from \"../../../poly/ParamType\";\nimport { RampParam } from \"../../../params/Ramp\";\nimport { Color } from \"three\";\nimport { Vector2 } from \"three\";\nimport { Vector3 } from \"three\";\nimport { Vector4 } from \"three\";\nexport class ParamTemplate {\n  constructor(type, init_value, options) {\n    this.type = type;\n    this.init_value = init_value;\n    this.options = options;\n  }\n}\nexport class ParamConfig {\n  static BUTTON(init_value, options) {\n    return new ParamTemplate(ParamType.BUTTON, init_value, options);\n  }\n  static BOOLEAN(init_value, options) {\n    return new ParamTemplate(ParamType.BOOLEAN, init_value, options);\n  }\n  static COLOR(init_value, options) {\n    if (init_value instanceof Color) {\n      init_value = init_value.toArray();\n    }\n    return new ParamTemplate(ParamType.COLOR, init_value, options);\n  }\n  static FLOAT(init_value, options) {\n    return new ParamTemplate(ParamType.FLOAT, init_value, options);\n  }\n  static FOLDER(init_value = null, options) {\n    return new ParamTemplate(ParamType.FOLDER, init_value, options);\n  }\n  static INTEGER(init_value, options) {\n    return new ParamTemplate(ParamType.INTEGER, init_value, options);\n  }\n  static RAMP(init_value = RampParam.DEFAULT_VALUE, options) {\n    return new ParamTemplate(ParamType.RAMP, init_value, options);\n  }\n  static STRING(init_value = \"\", options) {\n    return new ParamTemplate(ParamType.STRING, init_value, options);\n  }\n  static VECTOR2(init_value, options) {\n    if (init_value instanceof Vector2) {\n      init_value = init_value.toArray();\n    }\n    return new ParamTemplate(ParamType.VECTOR2, init_value, options);\n  }\n  static VECTOR3(init_value, options) {\n    if (init_value instanceof Vector3) {\n      init_value = init_value.toArray();\n    }\n    return new ParamTemplate(ParamType.VECTOR3, init_value, options);\n  }\n  static VECTOR4(init_value, options) {\n    if (init_value instanceof Vector4) {\n      init_value = init_value.toArray();\n    }\n    return new ParamTemplate(ParamType.VECTOR4, init_value, options);\n  }\n  static NODE_PATH(init_value, options) {\n    return new ParamTemplate(ParamType.NODE_PATH, init_value, options);\n  }\n  static PARAM_PATH(init_value, options) {\n    return new ParamTemplate(ParamType.PARAM_PATH, init_value, options);\n  }\n}\nexport class NodeParamsConfig {\n}\n","/**\n * Imports a mapbox tile.\n *\n * @remarks\n * Note that this node requires a mapbox account.\n */\n\nimport {LinearFilter, FloatType, RGBAFormat} from 'three';\nimport {DataTexture} from 'three';\nimport {TypedCopNode} from '@polygonjs/polygonjs/dist/src/engine/nodes/cop/_Base';\nimport {CoreMapboxUtils} from '../../../core/mapbox/Utils';\nimport {CoreImage} from '@polygonjs/polygonjs/dist/src/core/Image';\nimport {CoreMapboxClient} from '../../../core/mapbox/Client';\n\nexport enum TileType {\n\tELEVATION = 'elevation',\n\tSATELLITE = 'satellite',\n}\nconst TILE_TYPES = [TileType.ELEVATION, TileType.SATELLITE];\n\nexport enum TileRes {\n\tLOW = 256,\n\tHIGH = 512,\n}\n\nconst ROOT_URL = 'https://api.mapbox.com/v4';\n\nimport {NodeParamsConfig, ParamConfig} from '@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsConfig';\nclass MapboxTileCopParamsConfig extends NodeParamsConfig {\n\t// TODO: add presets\n\t// london [-0.07956, 51.5146]\n\t// mt fuji 35.3547 138.725\n\t// el cap: -119.63, 37.7331199, zoom 13\n\t/** @param Longitude and latitude for the tile */\n\tlngLat = ParamConfig.VECTOR2([-119.63, 37.73311]);\n\t/** @param zoom value */\n\tzoom = ParamConfig.INTEGER(12, {\n\t\trange: [1, 24],\n\t\trangeLocked: [true, true],\n\t});\n\t/** @param type of tile (elevation or satellite) */\n\ttype = ParamConfig.INTEGER(0, {\n\t\tmenu: {\n\t\t\tentries: TILE_TYPES.map((m) => ({\n\t\t\t\tname: m,\n\t\t\t\tvalue: TILE_TYPES.indexOf(m),\n\t\t\t})),\n\t\t},\n\t});\n}\n\nconst ParamsConfig = new MapboxTileCopParamsConfig();\n\nexport class MapboxTileCopNode extends TypedCopNode<MapboxTileCopParamsConfig> {\n\toverride paramsConfig = ParamsConfig;\n\t_paramHires = true;\n\tstatic override type() {\n\t\treturn 'mapboxTile';\n\t}\n\n\tprivate _texture: DataTexture = new DataTexture(\n\t\tnew Float32Array(4 * TileRes.HIGH * TileRes.HIGH),\n\t\tTileRes.HIGH,\n\t\tTileRes.HIGH,\n\t\tRGBAFormat,\n\t\tFloatType\n\t);\n\n\toverride initializeNode() {\n\t\tthis._texture.image.data.fill(255);\n\t\tthis._texture.minFilter = LinearFilter;\n\t\tthis._texture.magFilter = LinearFilter;\n\t\tthis._texture.flipY = true; // necessary otherwise the texture is misplaced\n\t}\n\n\toverride async cook() {\n\t\tconst type = TILE_TYPES[this.pv.type];\n\t\tswitch (type) {\n\t\t\tcase TileType.ELEVATION: {\n\t\t\t\tawait this._cookForElevation();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TileType.SATELLITE: {\n\t\t\t\tawait this._cookForSatellite();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._texture.needsUpdate = true;\n\t\tthis.setTexture(this._texture);\n\t}\n\n\tprivate async _cookForElevation() {\n\t\tconst url = await this._url('mapbox.terrain-rgb');\n\t\tconst image_data_rgba = await CoreImage.data_from_url(url);\n\t\tconst data_rgba = image_data_rgba.data;\n\t\tconst pixels_count = image_data_rgba.width * image_data_rgba.height;\n\t\tlet src_stride, dest_stride;\n\t\tconst dest_data = this._texture.image.data;\n\t\tif (this._paramHires) {\n\t\t\tlet elevation: number, R: number, G: number, B: number;\n\t\t\tfor (let i = 0; i < pixels_count; i++) {\n\t\t\t\tsrc_stride = i * 4;\n\t\t\t\tdest_stride = i * 4;\n\t\t\t\tR = data_rgba[src_stride + 0];\n\t\t\t\tG = data_rgba[src_stride + 1];\n\t\t\t\tB = data_rgba[src_stride + 2];\n\t\t\t\televation = /*-10000 +*/ ((R * 256 * 256 + G * 256 + B) * 0.1) / (256 * 256);\n\n\t\t\t\tdest_data[dest_stride + 0] = elevation;\n\t\t\t\tdest_data[dest_stride + 1] = elevation;\n\t\t\t\tdest_data[dest_stride + 2] = elevation;\n\t\t\t}\n\t\t}\n\t}\n\tprivate async _cookForSatellite() {\n\t\tconst url = await this._url('mapbox.satellite');\n\t\tconst image_data_rgba = await CoreImage.data_from_url(url);\n\t\tconst data_rgba = image_data_rgba.data;\n\t\tconst pixels_count = image_data_rgba.width * image_data_rgba.height;\n\t\tlet src_stride, dest_stride;\n\t\tconst dest_data = this._texture.image.data;\n\t\tif (this._paramHires) {\n\t\t\tfor (let i = 0; i < pixels_count; i++) {\n\t\t\t\tsrc_stride = i * 4;\n\t\t\t\tdest_stride = i * 4;\n\t\t\t\tdest_data[dest_stride + 0] = data_rgba[src_stride + 0] / 255;\n\t\t\t\tdest_data[dest_stride + 1] = data_rgba[src_stride + 1] / 255;\n\t\t\t\tdest_data[dest_stride + 2] = data_rgba[src_stride + 2] / 255;\n\t\t\t}\n\t\t} else {\n\t\t\t// TODO: this isn't yet working\n\t\t\tconst resolution = TileRes.LOW;\n\t\t\tfor (let i = 0; i < resolution; i++) {\n\t\t\t\tfor (let j = 0; j < resolution; j++) {\n\t\t\t\t\tlet k = i * resolution + j;\n\t\t\t\t\tsrc_stride = k * 4;\n\n\t\t\t\t\tdest_stride = k * 4;\n\t\t\t\t\tdest_data[dest_stride + 0] = data_rgba[src_stride + 0]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 1] = data_rgba[src_stride + 1]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 2] = data_rgba[src_stride + 2]; // / 255\n\n\t\t\t\t\tk = (i + 1) * resolution + j;\n\t\t\t\t\tdest_stride = k * 4;\n\t\t\t\t\tdest_data[dest_stride + 0] = data_rgba[src_stride + 0]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 1] = data_rgba[src_stride + 1]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 2] = data_rgba[src_stride + 2]; // / 255\n\n\t\t\t\t\tk = i * resolution + (j + 1);\n\t\t\t\t\tdest_stride = k * 4;\n\t\t\t\t\tdest_data[dest_stride + 0] = data_rgba[src_stride + 0]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 1] = data_rgba[src_stride + 1]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 2] = data_rgba[src_stride + 2]; // / 255\n\n\t\t\t\t\tk = (i + 1) * resolution + (j + 1);\n\t\t\t\t\tdest_stride = k * 4;\n\t\t\t\t\tdest_data[dest_stride + 0] = data_rgba[src_stride + 0]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 1] = data_rgba[src_stride + 1]; // / 255\n\t\t\t\t\tdest_data[dest_stride + 2] = data_rgba[src_stride + 2]; // / 255\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async _url(endpoint: string) {\n\t\tconst tile_number = CoreMapboxUtils.lnglat_to_tile_number(this.pv.lngLat.x, this.pv.lngLat.y, this.pv.zoom);\n\t\tconst x = tile_number.x;\n\t\tconst y = tile_number.y;\n\t\tconst z = this.pv.zoom;\n\n\t\tconst res = this._paramHires ? '@2x' : '';\n\n\t\tconst token = CoreMapboxClient.token();\n\t\treturn `${ROOT_URL}/${endpoint}/${z}/${x}/${y}${res}.pngraw?access_token=${token}`;\n\t}\n\n\t// private _convert_color(R:number,G:number,B:number,a:number){\n\t// \treturn [R/255, G/255, B/255]\n\t// }\n}\n","import { MathUtils, Euler, Matrix4, Vector3, Quaternion } from \"three\";\nexport var TransformTargetType = /* @__PURE__ */ ((TransformTargetType2) => {\n  TransformTargetType2[\"OBJECTS\"] = \"objects\";\n  TransformTargetType2[\"GEOMETRIES\"] = \"geometries\";\n  return TransformTargetType2;\n})(TransformTargetType || {});\nexport const TRANSFORM_TARGET_TYPES = [\n  \"geometries\" /* GEOMETRIES */,\n  \"objects\" /* OBJECTS */\n];\nexport var RotationOrder = /* @__PURE__ */ ((RotationOrder2) => {\n  RotationOrder2[\"XYZ\"] = \"XYZ\";\n  RotationOrder2[\"XZY\"] = \"XZY\";\n  RotationOrder2[\"YXZ\"] = \"YXZ\";\n  RotationOrder2[\"YZX\"] = \"YZX\";\n  RotationOrder2[\"ZYX\"] = \"ZYX\";\n  RotationOrder2[\"ZXY\"] = \"ZXY\";\n  return RotationOrder2;\n})(RotationOrder || {});\nexport const ROTATION_ORDERS = [\n  \"XYZ\" /* XYZ */,\n  \"XZY\" /* XZY */,\n  \"YXZ\" /* YXZ */,\n  \"YZX\" /* YZX */,\n  \"ZXY\" /* ZXY */,\n  \"ZYX\" /* ZYX */\n];\nexport const DEFAULT_ROTATION_ORDER = \"XYZ\" /* XYZ */;\nconst eulerArray = [0, 0, 0];\nexport class CoreTransform {\n  constructor() {\n    this._translation_matrix = new Matrix4();\n    this._translation_matrix_q = new Quaternion();\n    this._translation_matrix_s = new Vector3(1, 1, 1);\n    this._matrix = new Matrix4().identity();\n    this._matrix_q = new Quaternion();\n    this._matrix_euler = new Euler();\n    this._matrix_s = new Vector3();\n    this._m = new Matrix4();\n    this._q = new Quaternion();\n    this._rotateDirOrigin = new Vector3();\n    this._rotateDirDest = new Vector3();\n  }\n  static setParamsFromMatrix(matrix, node, options = {}) {\n    let update_scale = options[\"scale\"];\n    if (update_scale == null) {\n      update_scale = true;\n    }\n    matrix.decompose(this.set_params_from_matrix_position, this.set_params_from_matrix_quaternion, this.set_params_from_matrix_scale);\n    this.set_params_from_matrix_euler.setFromQuaternion(this.set_params_from_matrix_quaternion);\n    this.set_params_from_matrix_euler.toArray(eulerArray);\n    this.set_params_from_matrix_rotation.fromArray(eulerArray);\n    this.set_params_from_matrix_rotation.divideScalar(Math.PI / 180);\n    this.set_params_from_matrix_position.toArray(this.set_params_from_matrix_t);\n    this.set_params_from_matrix_rotation.toArray(this.set_params_from_matrix_r);\n    this.set_params_from_matrix_scale.toArray(this.set_params_from_matrix_s);\n    node.scene().batchUpdates(() => {\n      node.params.set_vector3(\"t\", this.set_params_from_matrix_t);\n      node.params.set_vector3(\"r\", this.set_params_from_matrix_r);\n      node.params.set_vector3(\"s\", this.set_params_from_matrix_s);\n      if (update_scale) {\n        node.params.set_float(\"scale\", 1);\n      }\n    });\n  }\n  static setParamsFromObject(object, node) {\n    object.position.toArray(this.set_params_from_object_position_array);\n    object.rotation.toArray(this.set_params_from_object_rotation_array);\n    this.set_params_from_object_rotation_deg.fromArray(this.set_params_from_object_rotation_array);\n    this.set_params_from_object_rotation_deg.multiplyScalar(180 / Math.PI);\n    this.set_params_from_object_rotation_deg.toArray(this.set_params_from_object_rotation_array);\n    node.scene().batchUpdates(() => {\n      node.params.set_vector3(\"t\", this.set_params_from_object_position_array);\n      node.params.set_vector3(\"r\", this.set_params_from_object_rotation_array);\n    });\n  }\n  translationMatrix(t) {\n    this._translation_matrix.compose(t, this._translation_matrix_q, this._translation_matrix_s);\n    return this._translation_matrix;\n  }\n  matrix(t, r, s, scale, rotation_order) {\n    this._matrix_euler.set(MathUtils.degToRad(r.x), MathUtils.degToRad(r.y), MathUtils.degToRad(r.z), rotation_order);\n    this._matrix_q.setFromEuler(this._matrix_euler);\n    this._matrix_s.copy(s).multiplyScalar(scale);\n    this._matrix.compose(t, this._matrix_q, this._matrix_s);\n    return this._matrix;\n  }\n  rotateGeometry(geometry, dirOrigin, dirDest) {\n    this._rotateDirDest.copy(dirDest).normalize();\n    this._rotateDirOrigin.copy(dirOrigin).normalize();\n    this._q.setFromUnitVectors(this._rotateDirOrigin, this._rotateDirDest);\n    this._m.makeRotationFromQuaternion(this._q);\n    geometry.applyMatrix4(this._m);\n  }\n  rotateObject(object, dirOrigin, dirDest) {\n    this._rotateDirDest.copy(dirDest).normalize();\n    this._rotateDirOrigin.copy(dirOrigin).normalize();\n    this._q.setFromUnitVectors(this._rotateDirOrigin, this._rotateDirDest);\n    this._m.makeRotationFromQuaternion(this._q);\n    object.matrix.multiply(this._m);\n    object.matrix.decompose(object.position, object.quaternion, object.scale);\n  }\n  static decomposeMatrix(object) {\n    object.matrix.decompose(object.position, object.quaternion, object.scale);\n  }\n}\nCoreTransform.set_params_from_matrix_position = new Vector3();\nCoreTransform.set_params_from_matrix_quaternion = new Quaternion();\nCoreTransform.set_params_from_matrix_scale = new Vector3();\nCoreTransform.set_params_from_matrix_euler = new Euler();\nCoreTransform.set_params_from_matrix_rotation = new Vector3();\nCoreTransform.set_params_from_matrix_t = [0, 0, 0];\nCoreTransform.set_params_from_matrix_r = [0, 0, 0];\nCoreTransform.set_params_from_matrix_s = [0, 0, 0];\nCoreTransform.set_params_from_object_position_array = [0, 0, 0];\nCoreTransform.set_params_from_object_rotation_deg = new Vector3();\nCoreTransform.set_params_from_object_rotation_array = [0, 0, 0];\n","import { Object3D } from \"three\";\nimport { TypedNode } from \"../_Base\";\nimport { NodeContext } from \"../../poly/NodeContext\";\nimport { Group } from \"three\";\nconst INPUT_OBJECT_NAME = \"parent object\";\nconst DEFAULT_INPUT_NAMES = [INPUT_OBJECT_NAME, INPUT_OBJECT_NAME, INPUT_OBJECT_NAME, INPUT_OBJECT_NAME];\nexport var ObjNodeRenderOrder = /* @__PURE__ */ ((ObjNodeRenderOrder2) => {\n  ObjNodeRenderOrder2[ObjNodeRenderOrder2[\"MANAGER\"] = 0] = \"MANAGER\";\n  ObjNodeRenderOrder2[ObjNodeRenderOrder2[\"CAMERA\"] = 2] = \"CAMERA\";\n  ObjNodeRenderOrder2[ObjNodeRenderOrder2[\"LIGHT\"] = 3] = \"LIGHT\";\n  return ObjNodeRenderOrder2;\n})(ObjNodeRenderOrder || {});\nexport class TypedObjNode extends TypedNode {\n  constructor() {\n    super(...arguments);\n    this.renderOrder = 0 /* MANAGER */;\n    this._children_group = this._create_children_group();\n    this._attachableToHierarchy = true;\n    this._used_in_scene = true;\n  }\n  static context() {\n    return NodeContext.OBJ;\n  }\n  static displayedInputNames() {\n    return DEFAULT_INPUT_NAMES;\n  }\n  _create_children_group() {\n    const group = new Group();\n    group.matrixAutoUpdate = false;\n    return group;\n  }\n  attachableToHierarchy() {\n    return this._attachableToHierarchy;\n  }\n  usedInScene() {\n    return this._used_in_scene;\n  }\n  addObjectToParent(parent) {\n    if (this.attachableToHierarchy()) {\n      parent.add(this.object);\n    }\n  }\n  removeObjectFromParent() {\n    if (this.attachableToHierarchy()) {\n      const parent = this.object.parent;\n      if (parent) {\n        parent.remove(this.object);\n      }\n    }\n  }\n  dispose() {\n    var _a;\n    super.dispose();\n    (_a = this.childrenDisplayController) == null ? void 0 : _a.dispose();\n  }\n  initializeBaseNode() {\n    this._object = this._create_object_with_attributes();\n    this.nameController.add_post_set_fullPath_hook(this.set_object_name.bind(this));\n    this.set_object_name();\n  }\n  childrenGroup() {\n    return this._children_group;\n  }\n  get object() {\n    return this._object;\n  }\n  _create_object_with_attributes() {\n    const object = this.createObject();\n    object.node = this;\n    object.add(this._children_group);\n    return object;\n  }\n  set_object_name() {\n    if (this._object) {\n      this._object.name = this.path();\n      this._children_group.name = `${this.path()}:parentedOutputs`;\n    }\n  }\n  createObject() {\n    const object = new Object3D();\n    object.matrixAutoUpdate = false;\n    return object;\n  }\n  isDisplayNodeCooking() {\n    var _a, _b, _c;\n    if ((_b = (_a = this.flags) == null ? void 0 : _a.display) == null ? void 0 : _b.active()) {\n      const displayNode = (_c = this.displayNodeController) == null ? void 0 : _c.displayNode();\n      if (displayNode) {\n        return displayNode.cookController.isCooking();\n      }\n    }\n    return false;\n  }\n  isDisplayed() {\n    var _a, _b;\n    return ((_b = (_a = this.flags) == null ? void 0 : _a.display) == null ? void 0 : _b.active()) || false;\n  }\n}\nexport class BaseObjNodeClass extends TypedObjNode {\n}\n","const PARAM_NAME = \"layer\";\nimport { ParamConfig } from \"../../utils/params/ParamsConfig\";\nexport function LayerParamConfig(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.layer = ParamConfig.INTEGER(0, {\n        range: [0, 31],\n        rangeLocked: [true, true]\n      });\n    }\n  };\n}\nexport class LayersController {\n  constructor(node) {\n    this.node = node;\n  }\n  update() {\n    const object = this.node.object;\n    object.layers.set(0);\n    object.layers.enable(this.node.params.integer(PARAM_NAME));\n  }\n}\n","export var RopType = /* @__PURE__ */ ((RopType2) => {\n  RopType2[\"CSS2D\"] = \"CSS2DRenderer\";\n  RopType2[\"CSS3D\"] = \"CSS3DRenderer\";\n  RopType2[\"WEBGL\"] = \"WebGLRenderer\";\n  return RopType2;\n})(RopType || {});\n","export var ObjType = /* @__PURE__ */ ((ObjType2) => {\n  ObjType2[\"GEO\"] = \"geo\";\n  ObjType2[\"CUBE_CAMERA\"] = \"cubeCamera\";\n  ObjType2[\"AUDIO_LISTENER\"] = \"audioListener\";\n  ObjType2[\"POSITIONAL_AUDIO\"] = \"positionalAudio\";\n  ObjType2[\"SCENE\"] = \"scene\";\n  return ObjType2;\n})(ObjType || {});\n","import { TypedObjNode } from \"../_Base\";\nimport { Matrix4 } from \"three\";\nimport { CoreTransform, ROTATION_ORDERS, RotationOrder } from \"../../../../core/Transform\";\nimport { NodeParamsConfig, ParamConfig } from \"../../utils/params/ParamsConfig\";\nimport { isBooleanTrue } from \"../../../../core/BooleanValue\";\nexport function TransformedParamConfig(Base, default_params) {\n  const matrixAutoUpdate = (default_params == null ? void 0 : default_params.matrixAutoUpdate) || false;\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.transform = ParamConfig.FOLDER();\n      this.keepPosWhenParenting = ParamConfig.BOOLEAN(0);\n      this.rotationOrder = ParamConfig.INTEGER(ROTATION_ORDERS.indexOf(RotationOrder.XYZ), {\n        menu: {\n          entries: ROTATION_ORDERS.map((order, v) => {\n            return { name: order, value: v };\n          })\n        }\n      });\n      this.t = ParamConfig.VECTOR3([0, 0, 0]);\n      this.r = ParamConfig.VECTOR3([0, 0, 0]);\n      this.s = ParamConfig.VECTOR3([1, 1, 1]);\n      this.scale = ParamConfig.FLOAT(1);\n      this.matrixAutoUpdate = ParamConfig.BOOLEAN(matrixAutoUpdate ? 1 : 0);\n      this.updateTransformFromObject = ParamConfig.BUTTON(null, {\n        callback: (node) => {\n          TransformController.PARAM_CALLBACK_update_transform_from_object(node);\n        }\n      });\n    }\n  };\n}\nclass TransformedParamsConfig extends TransformedParamConfig(NodeParamsConfig) {\n}\nexport class TransformedObjNode extends TypedObjNode {\n  constructor() {\n    super(...arguments);\n    this.transformController = new TransformController(this);\n  }\n}\nconst HOOK_NAME = \"_cook_main_without_inputs_when_dirty\";\nexport class TransformController {\n  constructor(node) {\n    this.node = node;\n    this._cook_main_without_inputs_when_dirty_bound = this._cook_main_without_inputs_when_dirty.bind(this);\n    this._core_transform = new CoreTransform();\n    this._keep_pos_when_parenting_m_object = new Matrix4();\n    this._keep_pos_when_parenting_m_new_parent_inv = new Matrix4();\n  }\n  initializeNode() {\n    if (!this.node.dirtyController.hasHook(HOOK_NAME)) {\n      this.node.dirtyController.addPostDirtyHook(HOOK_NAME, this._cook_main_without_inputs_when_dirty_bound);\n    }\n  }\n  async _cook_main_without_inputs_when_dirty() {\n    await this.node.cookController.cookMainWithoutInputs();\n  }\n  update() {\n    this.update_transform_with_matrix();\n    const object = this.node.object;\n    object.matrixAutoUpdate = isBooleanTrue(this.node.pv.matrixAutoUpdate);\n  }\n  update_transform_with_matrix(matrix) {\n    const object = this.node.object;\n    if (matrix != null && !matrix.equals(object.matrix)) {\n      object.matrix.copy(matrix);\n      object.dispatchEvent({ type: \"change\" });\n    } else {\n      this._update_matrix_from_params_with_core_transform();\n    }\n  }\n  _update_matrix_from_params_with_core_transform() {\n    const object = this.node.object;\n    let prev_auto_update = object.matrixAutoUpdate;\n    if (prev_auto_update) {\n      object.matrixAutoUpdate = false;\n    }\n    const matrix = this._core_transform.matrix(this.node.pv.t, this.node.pv.r, this.node.pv.s, this.node.pv.scale, ROTATION_ORDERS[this.node.pv.rotationOrder]);\n    object.matrix.identity();\n    object.applyMatrix4(matrix);\n    this._apply_look_at();\n    object.updateMatrix();\n    if (prev_auto_update) {\n      object.matrixAutoUpdate = true;\n    }\n    object.dispatchEvent({ type: \"change\" });\n  }\n  _apply_look_at() {\n  }\n  set_params_from_matrix(matrix, options = {}) {\n    CoreTransform.setParamsFromMatrix(matrix, this.node, options);\n  }\n  static update_node_transform_params_if_required(node, new_parent_object) {\n    node.transformController.update_node_transform_params_if_required(new_parent_object);\n  }\n  update_node_transform_params_if_required(new_parent_object) {\n    if (!isBooleanTrue(this.node.pv.keepPosWhenParenting)) {\n      return;\n    }\n    if (!this.node.scene().loadingController.loaded()) {\n      return;\n    }\n    if (new_parent_object == this.node.object.parent) {\n      return;\n    }\n    const object = this.node.object;\n    object.updateMatrixWorld(true);\n    new_parent_object.updateMatrixWorld(true);\n    this._keep_pos_when_parenting_m_object.copy(object.matrixWorld);\n    this._keep_pos_when_parenting_m_new_parent_inv.copy(new_parent_object.matrixWorld);\n    this._keep_pos_when_parenting_m_new_parent_inv.invert();\n    this._keep_pos_when_parenting_m_object.premultiply(this._keep_pos_when_parenting_m_new_parent_inv);\n    CoreTransform.setParamsFromMatrix(this._keep_pos_when_parenting_m_object, this.node, { scale: true });\n  }\n  update_node_transform_params_from_object(update_matrix = false) {\n    const object = this.node.object;\n    if (update_matrix) {\n      object.updateMatrix();\n    }\n    CoreTransform.setParamsFromMatrix(object.matrix, this.node, { scale: true });\n  }\n  static PARAM_CALLBACK_update_transform_from_object(node) {\n    node.transformController.update_node_transform_params_from_object();\n  }\n}\n","import { Group } from \"three\";\nconst DISPLAY_PARAM_NAME = \"display\";\nexport class ChildrenDisplayController {\n  constructor(node) {\n    this.node = node;\n    this._childrenUuids = /* @__PURE__ */ new Set();\n    this._sopGroup = this._createSopGroup();\n  }\n  _createSopGroup() {\n    const group = new Group();\n    group.matrixAutoUpdate = false;\n    return group;\n  }\n  sopGroup() {\n    return this._sopGroup;\n  }\n  setSopGroupName() {\n    this._sopGroup.name = `${this.node.name()}:sopGroup`;\n  }\n  dispose() {\n    this._clearHooks();\n  }\n  displayNodeControllerCallbacks() {\n    return {\n      onDisplayNodeRemove: () => {\n        this.removeChildren();\n      },\n      onDisplayNodeSet: () => {\n        setTimeout(() => {\n          this.requestDisplayNodeContainer();\n        }, 0);\n      },\n      onDisplayNodeUpdate: () => {\n        this.requestDisplayNodeContainer();\n      }\n    };\n  }\n  initializeNode() {\n    var _a;\n    this.node.object.add(this.sopGroup());\n    this.node.nameController.add_post_set_fullPath_hook(this.setSopGroupName.bind(this));\n    this._createSopGroup();\n    const display_flag = (_a = this.node.flags) == null ? void 0 : _a.display;\n    if (display_flag) {\n      display_flag.onUpdate(() => {\n        this._updateSopGroupHierarchy();\n        if (display_flag.active()) {\n          this.requestDisplayNodeContainer();\n        }\n      });\n    }\n  }\n  _updateSopGroupHierarchy() {\n    var _a;\n    const displayFlag = (_a = this.node.flags) == null ? void 0 : _a.display;\n    if (displayFlag) {\n      const sopGroup = this.sopGroup();\n      if (this.usedInScene()) {\n        sopGroup.visible = true;\n        this.node.object.add(sopGroup);\n        sopGroup.updateMatrix();\n      } else {\n        sopGroup.visible = false;\n        this.node.object.remove(sopGroup);\n      }\n    }\n  }\n  usedInScene() {\n    var _a, _b;\n    const has_active_param = this.node.params.has(DISPLAY_PARAM_NAME);\n    const is_active_param_on = this.node.params.boolean(DISPLAY_PARAM_NAME);\n    const used_in_scene = this.node.usedInScene();\n    const display_flag_on = ((_b = (_a = this.node.flags) == null ? void 0 : _a.display) == null ? void 0 : _b.active()) || false;\n    const param_active_on = !has_active_param || is_active_param_on;\n    return used_in_scene && display_flag_on && param_active_on;\n  }\n  async requestDisplayNodeContainer() {\n    if (!this.node.scene().loadingController.loaded()) {\n      return;\n    }\n    if (this.usedInScene()) {\n      await this._setContentUnderSopGroup();\n    }\n  }\n  removeChildren() {\n    if (this._sopGroup.children.length == 0) {\n      return;\n    }\n    let child;\n    while (child = this._sopGroup.children[0]) {\n      this._sopGroup.remove(child);\n    }\n    this._childrenUuids.clear();\n    this._notifyCamerasController();\n  }\n  async _setContentUnderSopGroup() {\n    var _a;\n    const displayNode = this.node.displayNodeController.displayNode();\n    if (displayNode && ((_a = displayNode.parent()) == null ? void 0 : _a.graphNodeId()) == this.node.graphNodeId()) {\n      const container = await displayNode.compute();\n      const coreGroup = container.coreContent();\n      if (coreGroup) {\n        const newObjects = coreGroup.objects();\n        let new_objects_are_different = newObjects.length != this._childrenUuids.size;\n        if (!new_objects_are_different) {\n          for (let object of newObjects) {\n            if (!this._childrenUuids.has(object.uuid)) {\n              new_objects_are_different = true;\n            }\n          }\n        }\n        if (new_objects_are_different) {\n          this.removeChildren();\n          for (let object of newObjects) {\n            this._sopGroup.add(object);\n            object.updateMatrix();\n            this._childrenUuids.add(object.uuid);\n          }\n        }\n        this._notifyCamerasController();\n        this._runOnSopGroupUpdatedHooks();\n        return;\n      }\n    }\n    this.removeChildren();\n    this._runOnSopGroupUpdatedHooks();\n  }\n  _notifyCamerasController() {\n    this.node.scene().camerasController.updateFromChangeInObject(this._sopGroup);\n  }\n  registerOnSopGroupUpdated(callbackName, callback) {\n    this._onSopGroupUpdatedHookNames = this._onSopGroupUpdatedHookNames || [];\n    this._onSopGroupUpdatedHooks = this._onSopGroupUpdatedHooks || [];\n    this._onSopGroupUpdatedHookNames.push(callbackName);\n    this._onSopGroupUpdatedHooks.push(callback);\n  }\n  _clearHooks() {\n    if (!this._onSopGroupUpdatedHookNames || !this._onSopGroupUpdatedHooks) {\n      return;\n    }\n    for (let hookName of this._onSopGroupUpdatedHookNames) {\n      this.deregisterOnSopGroupUpdated(hookName);\n    }\n  }\n  deregisterOnSopGroupUpdated(callbackName) {\n    var _a;\n    if (!this._onSopGroupUpdatedHookNames || !this._onSopGroupUpdatedHooks) {\n      return;\n    }\n    const index = (_a = this._onSopGroupUpdatedHookNames) == null ? void 0 : _a.indexOf(callbackName);\n    this._onSopGroupUpdatedHookNames.splice(index, 1);\n    this._onSopGroupUpdatedHooks.splice(index, 1);\n    if (this._onSopGroupUpdatedHookNames.length == 0) {\n      this._onSopGroupUpdatedHookNames = void 0;\n    }\n    if (this._onSopGroupUpdatedHooks.length == 0) {\n      this._onSopGroupUpdatedHooks = void 0;\n    }\n  }\n  _runOnSopGroupUpdatedHooks() {\n    if (this._onSopGroupUpdatedHooks) {\n      const hooks = [...this._onSopGroupUpdatedHooks];\n      for (let hook of hooks) {\n        hook();\n      }\n    }\n  }\n  onSopGroupUpdatedCallbackNames() {\n    return this._onSopGroupUpdatedHookNames;\n  }\n}\n","import { CoreGraphNode } from \"../../../core/graph/CoreGraphNode\";\nconst DEFAULT_DISPLAY_NODE_CONTROLLER_OPTIONS = {\n  dependsOnDisplayNode: true\n};\nexport class DisplayNodeController {\n  constructor(node, callbacks, options = DEFAULT_DISPLAY_NODE_CONTROLLER_OPTIONS) {\n    this.node = node;\n    this.options = options;\n    this._initialized = false;\n    this._displayNode = void 0;\n    this._graphNode = new CoreGraphNode(node.scene(), \"DisplayNodeController\");\n    this._graphNode.node = node;\n    this._onDisplayNodeRemoveCallback = callbacks.onDisplayNodeRemove;\n    this._onDisplayNodeSetCallback = callbacks.onDisplayNodeSet;\n    this._onDisplayNodeUpdateCallback = callbacks.onDisplayNodeUpdate;\n  }\n  dispose() {\n    this._graphNode.dispose();\n  }\n  displayNode() {\n    return this._displayNode;\n  }\n  initializeNode() {\n    if (this._initialized) {\n      console.error(\"display node controller already initialed\", this.node);\n      return;\n    }\n    this._initialized = true;\n    this.node.lifecycle.onChildAdd((childNode) => {\n      var _a, _b;\n      if (!this._displayNode) {\n        (_b = (_a = childNode.flags) == null ? void 0 : _a.display) == null ? void 0 : _b.set(true);\n      }\n    });\n    this.node.lifecycle.onChildRemove((childNode) => {\n      var _a, _b, _c;\n      if (childNode.graphNodeId() == ((_a = this._displayNode) == null ? void 0 : _a.graphNodeId())) {\n        const children = this.node.children();\n        const lastChild = children[children.length - 1];\n        if (lastChild) {\n          (_c = (_b = lastChild.flags) == null ? void 0 : _b.display) == null ? void 0 : _c.set(true);\n        } else {\n          this.setDisplayNode(void 0);\n        }\n      }\n    });\n    this._graphNode.dirtyController.addPostDirtyHook(\"_requestDisplayNodeContainer\", () => {\n      if (this._onDisplayNodeUpdateCallback) {\n        this._onDisplayNodeUpdateCallback();\n      }\n    });\n  }\n  async setDisplayNode(newDisplayNode) {\n    if (!this._initialized) {\n      console.error(\"display node controller not initialized\", this.node);\n    }\n    if (this._displayNode != newDisplayNode) {\n      const oldDisplayNode = this._displayNode;\n      if (oldDisplayNode) {\n        oldDisplayNode.flags.display.set(false);\n        if (this.options.dependsOnDisplayNode) {\n          this._graphNode.removeGraphInput(oldDisplayNode);\n        }\n        if (this._onDisplayNodeRemoveCallback) {\n          this._onDisplayNodeRemoveCallback();\n        }\n      }\n      this._displayNode = newDisplayNode;\n      if (this._displayNode) {\n        if (this.options.dependsOnDisplayNode) {\n          this._graphNode.addGraphInput(this._displayNode);\n        }\n        if (this._onDisplayNodeSetCallback) {\n          this._onDisplayNodeSetCallback();\n        }\n      }\n    }\n  }\n}\n","import { NodeParamsConfig } from \"../../utils/params/ParamsConfig\";\nimport { TypedObjNode } from \"../_Base\";\nimport { TransformController } from \"./TransformController\";\nclass HierarchyParamsConfig extends NodeParamsConfig {\n}\nexport class HierarchyObjNode extends TypedObjNode {\n  constructor() {\n    super(...arguments);\n    this.hierarchyController = new HierarchyController(this);\n  }\n}\nexport class HierarchyController {\n  constructor(node) {\n    this.node = node;\n  }\n  initializeNode() {\n    this.node.io.inputs.setCount(0, 1);\n    this.node.io.inputs.setDependsOnInputs(false);\n    this.node.io.outputs.setHasOneOutput();\n    this.node.io.inputs.add_on_set_input_hook(\"on_input_updated:update_parent\", () => {\n      this.on_input_updated();\n    });\n  }\n  static on_input_updated(node) {\n    const parent_object = node.root().getParentForNode(node);\n    if (node.transformController && parent_object) {\n      TransformController.update_node_transform_params_if_required(node, parent_object);\n    }\n    if (node.io.inputs.input(0) != null) {\n      node.root().addToParentTransform(node);\n    } else {\n      node.root().removeFromParentTransform(node);\n    }\n  }\n  on_input_updated() {\n    HierarchyController.on_input_updated(this.node);\n  }\n}\n","import { Camera } from \"three\";\nimport { Vector3 } from \"three\";\nimport { LineSegments } from \"three\";\nimport { Color } from \"three\";\nimport { LineBasicMaterial } from \"three\";\nimport { BufferGeometry } from \"three\";\nimport { Float32BufferAttribute } from \"three\";\nconst _vector = /* @__PURE__ */ new Vector3();\nconst _camera = /* @__PURE__ */ new Camera();\nfunction _createGeometry() {\n  const geometry = new BufferGeometry();\n  const colorFrustum = new Color(16755200);\n  const colorCone = new Color(16711680);\n  const colorUp = new Color(43775);\n  const colorTarget = new Color(16777215);\n  const colorCross = new Color(3355443);\n  const vertices = [];\n  const colors = [];\n  const pointMap = {};\n  function addLine(a, b, color) {\n    addPoint(a, color);\n    addPoint(b, color);\n  }\n  function addPoint(id, color) {\n    vertices.push(0, 0, 0);\n    colors.push(color.r, color.g, color.b);\n    if (pointMap[id] === void 0) {\n      pointMap[id] = [];\n    }\n    pointMap[id].push(vertices.length / 3 - 1);\n  }\n  addLine(\"n1\", \"n2\", colorFrustum);\n  addLine(\"n2\", \"n4\", colorFrustum);\n  addLine(\"n4\", \"n3\", colorFrustum);\n  addLine(\"n3\", \"n1\", colorFrustum);\n  addLine(\"f1\", \"f2\", colorFrustum);\n  addLine(\"f2\", \"f4\", colorFrustum);\n  addLine(\"f4\", \"f3\", colorFrustum);\n  addLine(\"f3\", \"f1\", colorFrustum);\n  addLine(\"n1\", \"f1\", colorFrustum);\n  addLine(\"n2\", \"f2\", colorFrustum);\n  addLine(\"n3\", \"f3\", colorFrustum);\n  addLine(\"n4\", \"f4\", colorFrustum);\n  addLine(\"p\", \"n1\", colorCone);\n  addLine(\"p\", \"n2\", colorCone);\n  addLine(\"p\", \"n3\", colorCone);\n  addLine(\"p\", \"n4\", colorCone);\n  addLine(\"u1\", \"u2\", colorUp);\n  addLine(\"u2\", \"u3\", colorUp);\n  addLine(\"u3\", \"u1\", colorUp);\n  addLine(\"c\", \"t\", colorTarget);\n  addLine(\"p\", \"c\", colorCross);\n  addLine(\"cn1\", \"cn2\", colorCross);\n  addLine(\"cn3\", \"cn4\", colorCross);\n  addLine(\"cf1\", \"cf2\", colorCross);\n  addLine(\"cf3\", \"cf4\", colorCross);\n  geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n  geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n  return { geometry, pointMap };\n}\nfunction _createMaterial() {\n  return new LineBasicMaterial({ color: 16777215, vertexColors: true, toneMapped: false });\n}\nclass CameraHelper extends LineSegments {\n  constructor(camera) {\n    super();\n    this._pointMap = {};\n    this.camera = camera;\n    if (this.camera.updateProjectionMatrix) {\n      this.camera.updateProjectionMatrix();\n    }\n    this.name = \"CameraHelper\";\n    this.type = \"CameraHelper\";\n    this.matrixAutoUpdate = false;\n    const { geometry, pointMap } = _createGeometry();\n    this.geometry = geometry;\n    this._pointMap = pointMap;\n    this.material = _createMaterial();\n  }\n  clone() {\n    const helper = new CameraHelper(this.camera);\n    return helper;\n  }\n  update() {\n    const geometry = this.geometry;\n    const pointMap = this._pointMap;\n    const w = 1, h = 1;\n    _camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);\n    setPoint(\"c\", pointMap, geometry, _camera, 0, 0, -1);\n    setPoint(\"t\", pointMap, geometry, _camera, 0, 0, 1);\n    setPoint(\"n1\", pointMap, geometry, _camera, -w, -h, -1);\n    setPoint(\"n2\", pointMap, geometry, _camera, w, -h, -1);\n    setPoint(\"n3\", pointMap, geometry, _camera, -w, h, -1);\n    setPoint(\"n4\", pointMap, geometry, _camera, w, h, -1);\n    setPoint(\"f1\", pointMap, geometry, _camera, -w, -h, 1);\n    setPoint(\"f2\", pointMap, geometry, _camera, w, -h, 1);\n    setPoint(\"f3\", pointMap, geometry, _camera, -w, h, 1);\n    setPoint(\"f4\", pointMap, geometry, _camera, w, h, 1);\n    setPoint(\"u1\", pointMap, geometry, _camera, w * 0.7, h * 1.1, -1);\n    setPoint(\"u2\", pointMap, geometry, _camera, -w * 0.7, h * 1.1, -1);\n    setPoint(\"u3\", pointMap, geometry, _camera, 0, h * 2, -1);\n    setPoint(\"cf1\", pointMap, geometry, _camera, -w, 0, 1);\n    setPoint(\"cf2\", pointMap, geometry, _camera, w, 0, 1);\n    setPoint(\"cf3\", pointMap, geometry, _camera, 0, -h, 1);\n    setPoint(\"cf4\", pointMap, geometry, _camera, 0, h, 1);\n    setPoint(\"cn1\", pointMap, geometry, _camera, -w, 0, -1);\n    setPoint(\"cn2\", pointMap, geometry, _camera, w, 0, -1);\n    setPoint(\"cn3\", pointMap, geometry, _camera, 0, -h, -1);\n    setPoint(\"cn4\", pointMap, geometry, _camera, 0, h, -1);\n    geometry.getAttribute(\"position\").needsUpdate = true;\n  }\n}\nfunction setPoint(point, pointMap, geometry, camera, x, y, z) {\n  _vector.set(x, y, z).unproject(camera);\n  const points = pointMap[point];\n  if (points !== void 0) {\n    const position = geometry.getAttribute(\"position\");\n    for (let i = 0, l = points.length; i < l; i++) {\n      position.setXYZ(points[i], _vector.x, _vector.y, _vector.z);\n    }\n  }\n}\nexport { CameraHelper };\n","export var UpdateFromControlsMode = /* @__PURE__ */ ((UpdateFromControlsMode2) => {\n  UpdateFromControlsMode2[\"ON_END\"] = \"on move end\";\n  UpdateFromControlsMode2[\"ALWAYS\"] = \"always\";\n  UpdateFromControlsMode2[\"NEVER\"] = \"never\";\n  return UpdateFromControlsMode2;\n})(UpdateFromControlsMode || {});\nexport const UPDATE_FROM_CONTROLS_MODES = [\n  \"on move end\" /* ON_END */,\n  \"always\" /* ALWAYS */,\n  \"never\" /* NEVER */\n];\n","import { ArrayUtils } from \"../ArrayUtils\";\nimport { CoreObject } from \"../geometry/Object\";\nexport const CORE_CAMERA_DEFAULT = {\n  near: 0.1,\n  far: 100\n};\nexport var CameraAttribute = /* @__PURE__ */ ((CameraAttribute2) => {\n  CameraAttribute2[\"NODE_ID\"] = \"_Camera_nodeGeneratorId__\";\n  CameraAttribute2[\"CONTROLS_NODE_ID\"] = \"_Camera_controlsNodeId\";\n  CameraAttribute2[\"CSS_RENDERER_NODE_ID\"] = \"_Camera_CSSRendererNodeId\";\n  CameraAttribute2[\"FRAME_MODE\"] = \"_Camera_frameMode\";\n  CameraAttribute2[\"FRAME_MODE_EXPECTED_ASPECT_RATIO\"] = \"_Camera_frameModeExpectedAspectRatio\";\n  CameraAttribute2[\"POST_PROCESS_NODE_ID\"] = \"_Camera_postProcessNodeId\";\n  CameraAttribute2[\"RENDER_SCENE_NODE_ID\"] = \"_Camera_renderSceneNodeId\";\n  CameraAttribute2[\"RENDERER_NODE_ID\"] = \"_Camera_rendererNodeId\";\n  return CameraAttribute2;\n})(CameraAttribute || {});\nexport const CAMERA_ATTRIBUTES = [\n  \"_Camera_nodeGeneratorId__\" /* NODE_ID */,\n  \"_Camera_controlsNodeId\" /* CONTROLS_NODE_ID */,\n  \"_Camera_CSSRendererNodeId\" /* CSS_RENDERER_NODE_ID */,\n  \"_Camera_frameMode\" /* FRAME_MODE */,\n  \"_Camera_frameModeExpectedAspectRatio\" /* FRAME_MODE_EXPECTED_ASPECT_RATIO */,\n  \"_Camera_postProcessNodeId\" /* POST_PROCESS_NODE_ID */,\n  \"_Camera_renderSceneNodeId\" /* RENDER_SCENE_NODE_ID */,\n  \"_Camera_rendererNodeId\" /* RENDERER_NODE_ID */\n];\nexport var PerspectiveCameraAttribute = /* @__PURE__ */ ((PerspectiveCameraAttribute2) => {\n  PerspectiveCameraAttribute2[\"FOV\"] = \"_PerspectiveCamera_fov\";\n  return PerspectiveCameraAttribute2;\n})(PerspectiveCameraAttribute || {});\nexport const PERSPECTIVE_CAMERA_ATTRIBUTES = [\"_PerspectiveCamera_fov\" /* FOV */];\nexport var OrthographicCameraAttribute = /* @__PURE__ */ ((OrthographicCameraAttribute2) => {\n  OrthographicCameraAttribute2[\"SIZE\"] = \"_OrthographicCamera_size\";\n  return OrthographicCameraAttribute2;\n})(OrthographicCameraAttribute || {});\nexport const ORTHOGRAPHIC_CAMERA_ATTRIBUTES = [\"_OrthographicCamera_size\" /* SIZE */];\nexport function serializeCamera(camera, attributeNames) {\n  return JSON.stringify({\n    uuid: camera.uuid,\n    attributes: ArrayUtils.compact(attributeNames.map((attribName) => {\n      const value = CoreObject.attribValue(camera, attribName);\n      if (value != null) {\n        return { [attribName]: value };\n      }\n    }))\n  });\n}\n","import { BaseSopOperation } from \"./_Base\";\nimport { InputCloneMode } from \"../../../engine/poly/InputCloneMode\";\nimport { TypedNodePathParamValue } from \"../../../core/Walker\";\nimport { CoreObject } from \"../../../core/geometry/Object\";\nimport { CameraAttribute } from \"../../../core/camera/CoreCamera\";\nimport { CameraSopNodeType } from \"../../poly/NodeContext\";\nconst _CameraControlsSopOperation = class extends BaseSopOperation {\n  static type() {\n    return CameraSopNodeType.CONTROLS;\n  }\n  cook(inputCoreGroups, params) {\n    const objects = inputCoreGroups[0].objects();\n    if (this._node) {\n      _CameraControlsSopOperation.updateObject({ objects, params, node: this._node, active: true });\n    }\n    return this.createCoreGroupFromObjects(objects);\n  }\n  static updateObject(options) {\n    const { objects, params, node, active } = options;\n    const relativeOrAbsolutePath = params.node.path();\n    const foundNode = node.node(relativeOrAbsolutePath);\n    if (foundNode && active) {\n      const nodeId = foundNode.graphNodeId();\n      for (let object of objects) {\n        CoreObject.addAttribute(object, CameraAttribute.CONTROLS_NODE_ID, nodeId);\n      }\n    } else {\n      for (let object of objects) {\n        CoreObject.deleteAttribute(object, CameraAttribute.CONTROLS_NODE_ID);\n      }\n    }\n  }\n};\nexport let CameraControlsSopOperation = _CameraControlsSopOperation;\nCameraControlsSopOperation.DEFAULT_PARAMS = {\n  node: new TypedNodePathParamValue(\"\")\n};\nCameraControlsSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;\n","import { BaseSopOperation } from \"./_Base\";\nimport { InputCloneMode } from \"../../../engine/poly/InputCloneMode\";\nimport { TypedNodePathParamValue } from \"../../../core/Walker\";\nimport { CoreObject } from \"../../../core/geometry/Object\";\nimport { CameraAttribute } from \"../../../core/camera/CoreCamera\";\nimport { CameraSopNodeType } from \"../../poly/NodeContext\";\nconst _CameraRendererSopOperation = class extends BaseSopOperation {\n  static type() {\n    return CameraSopNodeType.RENDERER;\n  }\n  cook(inputCoreGroups, params) {\n    const objects = inputCoreGroups[0].objects();\n    if (this._node) {\n      _CameraRendererSopOperation.updateObject({ objects, params, node: this._node, active: true });\n    }\n    return this.createCoreGroupFromObjects(objects);\n  }\n  static updateObject(options) {\n    const { objects, params, node, active } = options;\n    const relativeOrAbsolutePath = params.node.path();\n    const foundNode = node.node(relativeOrAbsolutePath);\n    if (foundNode && active) {\n      const nodeId = foundNode.graphNodeId();\n      for (let object of objects) {\n        CoreObject.addAttribute(object, CameraAttribute.RENDERER_NODE_ID, nodeId);\n      }\n    } else {\n      for (let object of objects) {\n        CoreObject.deleteAttribute(object, CameraAttribute.RENDERER_NODE_ID);\n      }\n    }\n  }\n};\nexport let CameraRendererSopOperation = _CameraRendererSopOperation;\nCameraRendererSopOperation.DEFAULT_PARAMS = {\n  node: new TypedNodePathParamValue(\"\")\n};\nCameraRendererSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;\n","import { BaseSopOperation } from \"./_Base\";\nimport { InputCloneMode } from \"../../../engine/poly/InputCloneMode\";\nimport { TypedNodePathParamValue } from \"../../../core/Walker\";\nimport { CoreObject } from \"../../../core/geometry/Object\";\nimport { CameraAttribute } from \"../../../core/camera/CoreCamera\";\nimport { CameraSopNodeType } from \"../../poly/NodeContext\";\nconst _CameraCSSRendererSopOperation = class extends BaseSopOperation {\n  static type() {\n    return CameraSopNodeType.CSS_RENDERER;\n  }\n  cook(inputCoreGroups, params) {\n    const objects = inputCoreGroups[0].objects();\n    if (this._node) {\n      _CameraCSSRendererSopOperation.updateObject({ objects, params, node: this._node, active: true });\n    }\n    return this.createCoreGroupFromObjects(objects);\n  }\n  static updateObject(options) {\n    const { objects, params, node, active } = options;\n    const relativeOrAbsolutePath = params.node.path();\n    const foundNode = node.node(relativeOrAbsolutePath);\n    if (foundNode && active) {\n      const nodeId = foundNode.graphNodeId();\n      for (let object of objects) {\n        CoreObject.addAttribute(object, CameraAttribute.CSS_RENDERER_NODE_ID, nodeId);\n      }\n    } else {\n      for (let object of objects) {\n        CoreObject.deleteAttribute(object, CameraAttribute.CSS_RENDERER_NODE_ID);\n      }\n    }\n  }\n};\nexport let CameraCSSRendererSopOperation = _CameraCSSRendererSopOperation;\nCameraCSSRendererSopOperation.DEFAULT_PARAMS = {\n  node: new TypedNodePathParamValue(\"\")\n};\nCameraCSSRendererSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;\n","import { BaseSopOperation } from \"./_Base\";\nimport { InputCloneMode } from \"../../../engine/poly/InputCloneMode\";\nimport { TypedNodePathParamValue } from \"../../../core/Walker\";\nimport { CoreObject } from \"../../../core/geometry/Object\";\nimport { CameraAttribute } from \"../../../core/camera/CoreCamera\";\nimport { isBooleanTrue } from \"../../../core/Type\";\nimport { CameraSopNodeType } from \"../../poly/NodeContext\";\nexport class CameraPostProcessSopOperation extends BaseSopOperation {\n  static type() {\n    return CameraSopNodeType.POST_PROCESS;\n  }\n  cook(inputCoreGroups, params) {\n    var _a;\n    const objects = inputCoreGroups[0].objects();\n    const relativeOrAbsolutePath = params.node.path();\n    const node = isBooleanTrue(params.useOtherNode) ? (_a = this._node) == null ? void 0 : _a.node(relativeOrAbsolutePath) : this._node;\n    if (node) {\n      const nodeId = node.graphNodeId();\n      for (let object of objects) {\n        CoreObject.addAttribute(object, CameraAttribute.POST_PROCESS_NODE_ID, nodeId);\n      }\n    }\n    return this.createCoreGroupFromObjects(objects);\n  }\n  static updateObject(options) {\n    const { objects, params, node, active } = options;\n    const relativeOrAbsolutePath = params.node.path();\n    const foundNode = node.node(relativeOrAbsolutePath);\n    if (foundNode && active) {\n      const nodeId = foundNode.graphNodeId();\n      for (let object of objects) {\n        CoreObject.addAttribute(object, CameraAttribute.POST_PROCESS_NODE_ID, nodeId);\n      }\n    } else {\n      for (let object of objects) {\n        CoreObject.deleteAttribute(object, CameraAttribute.POST_PROCESS_NODE_ID);\n      }\n    }\n  }\n}\nCameraPostProcessSopOperation.DEFAULT_PARAMS = {\n  useOtherNode: false,\n  node: new TypedNodePathParamValue(\"\")\n};\nCameraPostProcessSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;\n","import { BaseSopOperation } from \"./_Base\";\nimport { InputCloneMode } from \"../../../engine/poly/InputCloneMode\";\nimport { TypedNodePathParamValue } from \"../../../core/Walker\";\nimport { CoreObject } from \"../../../core/geometry/Object\";\nimport { CameraAttribute } from \"../../../core/camera/CoreCamera\";\nimport { CameraSopNodeType } from \"../../poly/NodeContext\";\nconst _CameraRenderSceneSopOperation = class extends BaseSopOperation {\n  static type() {\n    return CameraSopNodeType.RENDER_SCENE;\n  }\n  cook(inputCoreGroups, params) {\n    const objects = inputCoreGroups[0].objects();\n    if (this._node) {\n      _CameraRenderSceneSopOperation.updateObject({ objects, params, node: this._node, active: true });\n    }\n    return this.createCoreGroupFromObjects(objects);\n  }\n  static updateObject(options) {\n    const { objects, params, node, active } = options;\n    const relativeOrAbsolutePath = params.node.path();\n    const foundNode = node.node(relativeOrAbsolutePath);\n    if (foundNode && active) {\n      const nodeId = foundNode.graphNodeId();\n      for (let object of objects) {\n        CoreObject.addAttribute(object, CameraAttribute.RENDER_SCENE_NODE_ID, nodeId);\n      }\n    } else {\n      for (let object of objects) {\n        CoreObject.deleteAttribute(object, CameraAttribute.RENDER_SCENE_NODE_ID);\n      }\n    }\n  }\n};\nexport let CameraRenderSceneSopOperation = _CameraRenderSceneSopOperation;\nCameraRenderSceneSopOperation.DEFAULT_PARAMS = {\n  node: new TypedNodePathParamValue(\"\")\n};\nCameraRenderSceneSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;\n","import { ParamConfig } from \"../../engine/nodes/utils/params/ParamsConfig\";\nexport var CameraFrameMode = /* @__PURE__ */ ((CameraFrameMode2) => {\n  CameraFrameMode2[\"DEFAULT\"] = \"default\";\n  CameraFrameMode2[\"COVER\"] = \"cover\";\n  CameraFrameMode2[\"CONTAIN\"] = \"contain\";\n  return CameraFrameMode2;\n})(CameraFrameMode || {});\nexport const CAMERA_FRAME_MODES = [\n  \"default\" /* DEFAULT */,\n  \"cover\" /* COVER */,\n  \"contain\" /* CONTAIN */\n];\nexport function CoreCameraFrameParamConfig(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.frameMode = ParamConfig.INTEGER(CAMERA_FRAME_MODES.indexOf(\"default\" /* DEFAULT */), {\n        menu: {\n          entries: CAMERA_FRAME_MODES.map((name, value) => {\n            return { name, value };\n          })\n        }\n      });\n      this.expectedAspectRatio = ParamConfig.FLOAT(\"16/9\", {\n        visibleIf: [\n          { frameMode: CAMERA_FRAME_MODES.indexOf(\"cover\" /* COVER */) },\n          { frameMode: CAMERA_FRAME_MODES.indexOf(\"contain\" /* CONTAIN */) }\n        ],\n        range: [0, 2],\n        rangeLocked: [true, false]\n      });\n    }\n  };\n}\n","import { BaseSopOperation } from \"./_Base\";\nimport { InputCloneMode } from \"../../../engine/poly/InputCloneMode\";\nimport { CoreObject } from \"../../../core/geometry/Object\";\nimport { CameraAttribute } from \"../../../core/camera/CoreCamera\";\nimport { CameraSopNodeType } from \"../../poly/NodeContext\";\nimport { CameraFrameMode, CAMERA_FRAME_MODES } from \"../../../core/camera/CoreCameraFrameMode\";\nconst _CameraFrameModeSopOperation = class extends BaseSopOperation {\n  static type() {\n    return CameraSopNodeType.FRAME_MODE;\n  }\n  cook(inputCoreGroups, params) {\n    const objects = inputCoreGroups[0].objects();\n    if (this._node) {\n      _CameraFrameModeSopOperation.updateObject({ objects, params });\n    }\n    return this.createCoreGroupFromObjects(objects);\n  }\n  static updateObject(options) {\n    const { objects, params } = options;\n    for (let object of objects) {\n      CoreObject.addAttribute(object, CameraAttribute.FRAME_MODE, params.frameMode);\n      CoreObject.addAttribute(object, CameraAttribute.FRAME_MODE_EXPECTED_ASPECT_RATIO, params.expectedAspectRatio);\n    }\n  }\n};\nexport let CameraFrameModeSopOperation = _CameraFrameModeSopOperation;\nCameraFrameModeSopOperation.DEFAULT_PARAMS = {\n  frameMode: CAMERA_FRAME_MODES.indexOf(CameraFrameMode.DEFAULT),\n  expectedAspectRatio: 16 / 9\n};\nCameraFrameModeSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;\n","import { CoreTransform } from \"../../../core/Transform\";\nimport { ObjNodeRenderOrder } from \"./_Base\";\nimport { LayersController, LayerParamConfig } from \"./utils/LayersController\";\nimport { CameraRenderParamConfig } from \"./utils/cameras/RenderController\";\nimport { TransformedParamConfig, TransformController } from \"./utils/TransformController\";\nimport { ChildrenDisplayController } from \"./utils/ChildrenDisplayController\";\nimport { DisplayNodeController } from \"../utils/DisplayNodeController\";\nimport { NodeContext } from \"../../poly/NodeContext\";\nimport { FlagsControllerD } from \"../utils/FlagsController\";\nimport { TypedObjNode } from \"./_Base\";\nimport { HierarchyController } from \"./utils/HierarchyController\";\nimport { CameraHelper } from \"../../../core/helpers/CameraHelper\";\nimport { ParamConfig, NodeParamsConfig } from \"../utils/params/ParamsConfig\";\nimport { isBooleanTrue } from \"../../../core/BooleanValue\";\nimport { CameraPostProcessParamConfig } from \"./utils/cameras/PostProcessParamOptions\";\nimport { UpdateFromControlsMode, UPDATE_FROM_CONTROLS_MODES } from \"./utils/cameras/UpdateFromControlsMode\";\nimport { Poly } from \"../../Poly\";\nimport { CORE_CAMERA_DEFAULT } from \"../../../core/camera/CoreCamera\";\nimport { CameraControlsSopOperation } from \"../../operations/sop/CameraControls\";\nimport { CameraRendererSopOperation } from \"../../operations/sop/CameraRenderer\";\nimport { CameraCSSRendererSopOperation } from \"../../operations/sop/CameraCSSRenderer\";\nimport { CameraPostProcessSopOperation } from \"../../operations/sop/CameraPostProcess\";\nimport { CameraRenderSceneSopOperation } from \"../../operations/sop/CameraRenderScene\";\nimport { CameraFrameModeSopOperation } from \"../../operations/sop/CameraFrameMode\";\nimport { CoreCameraFrameParamConfig } from \"../../../core/camera/CoreCameraFrameMode\";\nconst EVENT_CHANGE = { type: \"change\" };\nexport function CameraMainCameraParamConfig(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.setMainCamera = ParamConfig.BUTTON(null, {\n        callback: (node, param) => {\n          BaseCameraObjNodeClass.PARAM_CALLBACK_setMainCamera(node);\n        }\n      });\n    }\n  };\n}\nexport function ThreejsCameraTransformParamConfig(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.camera = ParamConfig.FOLDER();\n      this.controls = ParamConfig.NODE_PATH(\"\", {\n        nodeSelection: {\n          context: NodeContext.EVENT\n        },\n        dependentOnFoundNode: true\n      });\n      this.updateFromControlsMode = ParamConfig.INTEGER(UPDATE_FROM_CONTROLS_MODES.indexOf(UpdateFromControlsMode.ON_END), {\n        menu: {\n          entries: UPDATE_FROM_CONTROLS_MODES.map((name, value) => {\n            return { name, value };\n          })\n        }\n      });\n      this.near = ParamConfig.FLOAT(CORE_CAMERA_DEFAULT.near, {\n        range: [0.1, 100],\n        cook: false,\n        computeOnDirty: true,\n        callback: (node, param) => {\n          BaseThreejsCameraObjNodeClass.PARAM_CALLBACK_update_near_far_from_param(node, param);\n        }\n      });\n      this.far = ParamConfig.FLOAT(CORE_CAMERA_DEFAULT.far, {\n        range: [0, 100],\n        cook: false,\n        computeOnDirty: true,\n        callback: (node, param) => {\n          BaseThreejsCameraObjNodeClass.PARAM_CALLBACK_update_near_far_from_param(node, param);\n        }\n      });\n      this.display = ParamConfig.BOOLEAN(1);\n      this.showHelper = ParamConfig.BOOLEAN(0);\n    }\n  };\n}\nexport class BaseCameraObjParamsConfig extends CameraMainCameraParamConfig(NodeParamsConfig) {\n}\nexport class BaseThreejsCameraObjParamsConfig extends CameraPostProcessParamConfig(CameraRenderParamConfig(CoreCameraFrameParamConfig(TransformedParamConfig(LayerParamConfig(ThreejsCameraTransformParamConfig(CameraMainCameraParamConfig(NodeParamsConfig))))))) {\n}\nexport class TypedCameraObjNode extends TypedObjNode {\n  constructor() {\n    super(...arguments);\n    this.renderOrder = ObjNodeRenderOrder.CAMERA;\n    this._aspect = -1;\n  }\n  get object() {\n    return this._object;\n  }\n  async cook() {\n    this.updateCamera();\n    this._object.dispatchEvent(EVENT_CHANGE);\n    this.cookController.endCook();\n  }\n  prepareRaycaster(mouse, raycaster) {\n  }\n  camera() {\n    return this._object;\n  }\n  updateCamera() {\n  }\n  static PARAM_CALLBACK_setMainCamera(node) {\n    node.setAsMainCamera();\n  }\n  setAsMainCamera() {\n    const path = this.scene().objectsController.objectPath(this.object);\n    this.scene().camerasController.setMainCameraPath(path);\n  }\n  setupForAspectRatio(aspect) {\n  }\n  update_transform_params_from_object() {\n    CoreTransform.setParamsFromObject(this._object, this);\n  }\n  static PARAM_CALLBACK_update_from_param(node, param) {\n    node.object[param.name()] = node.pv[param.name()];\n  }\n}\nexport class TypedThreejsCameraObjNode extends TypedCameraObjNode {\n  constructor() {\n    super(...arguments);\n    this.flags = new FlagsControllerD(this);\n    this.hierarchyController = new HierarchyController(this);\n    this.transformController = new TransformController(this);\n    this.childrenDisplayController = new ChildrenDisplayController(this);\n    this.displayNodeController = new DisplayNodeController(this, this.childrenDisplayController.displayNodeControllerCallbacks());\n    this._childrenControllerContext = NodeContext.SOP;\n  }\n  _layersController() {\n    return this.__layersController__ = this.__layersController__ || new LayersController(this);\n  }\n  initializeBaseNode() {\n    super.initializeBaseNode();\n    this.io.outputs.setHasOneOutput();\n    this.hierarchyController.initializeNode();\n    this.transformController.initializeNode();\n    this.childrenDisplayController.initializeNode();\n    this.initHelperHook();\n  }\n  createNode(node_class, options) {\n    return super.createNode(node_class, options);\n  }\n  children() {\n    return super.children();\n  }\n  nodesByType(type) {\n    return super.nodesByType(type);\n  }\n  prepareRaycaster(mouse, raycaster) {\n    raycaster.setFromCamera(mouse, this._object);\n  }\n  async cook() {\n    this.transformController.update();\n    this._layersController().update();\n    this.updateNearFar();\n    this.updateCamera();\n    this._updateHelper();\n    const objects = [this._object];\n    const node = this;\n    CameraControlsSopOperation.updateObject({ objects, params: { node: this.pv.controls }, node, active: true });\n    CameraRendererSopOperation.updateObject({\n      objects,\n      params: { node: this.pv.renderer },\n      node,\n      active: this.pv.setRenderer\n    });\n    CameraCSSRendererSopOperation.updateObject({\n      objects,\n      params: { node: this.pv.CSSRenderer },\n      node,\n      active: this.pv.setCSSRenderer\n    });\n    CameraPostProcessSopOperation.updateObject({\n      objects,\n      params: { node: this.pv.postProcessNode, useOtherNode: false },\n      node,\n      active: this.pv.doPostProcess\n    });\n    CameraRenderSceneSopOperation.updateObject({\n      objects,\n      params: { node: this.pv.scene },\n      node,\n      active: this.pv.setScene\n    });\n    CameraFrameModeSopOperation.updateObject({\n      objects,\n      params: { frameMode: this.pv.frameMode, expectedAspectRatio: this.pv.expectedAspectRatio }\n    });\n    this._object.dispatchEvent(EVENT_CHANGE);\n    this.scene().camerasController.updateFromChangeInObject(this.object);\n    this.cookController.endCook();\n  }\n  static PARAM_CALLBACK_update_near_far_from_param(node, param) {\n    node.updateNearFar();\n  }\n  updateNearFar() {\n    if (this._object.near != this.pv.near || this._object.far != this.pv.far) {\n      this._object.near = this.pv.near;\n      this._object.far = this.pv.far;\n      this._object.updateProjectionMatrix();\n      this._updateHelper();\n    }\n  }\n  async createViewer(options) {\n    if (this.isDirty()) {\n      await this.compute();\n    }\n    const viewer = Poly.camerasRegister.createViewer({ camera: this.object, scene: this.scene() });\n    let element;\n    if (options && options instanceof HTMLElement) {\n      element = options;\n    } else {\n      element = options == null ? void 0 : options.element;\n    }\n    if (viewer) {\n      if (element) {\n        viewer.mount(element);\n      }\n    }\n    return viewer;\n  }\n  initHelperHook() {\n    this.flags.display.onUpdate(() => {\n      this._updateHelper();\n    });\n  }\n  helperVisible() {\n    return this.flags.display.active() && isBooleanTrue(this.pv.showHelper);\n  }\n  _createHelper() {\n    const helper = new CameraHelper(this.object);\n    helper.update();\n    return helper;\n  }\n  _updateHelper() {\n    if (this.helperVisible()) {\n      if (!this._helper) {\n        this._helper = this._createHelper();\n      }\n      if (this._helper) {\n        this.object.add(this._helper);\n        this._helper.update();\n      }\n    } else {\n      if (this._helper) {\n        this.object.remove(this._helper);\n      }\n    }\n  }\n}\nexport class BaseCameraObjNodeClass extends TypedCameraObjNode {\n}\nexport class BaseThreejsCameraObjNodeClass extends TypedThreejsCameraObjNode {\n  PARAM_CALLBACK_update_effects_composer(node) {\n  }\n}\n","import { NodeContext } from \"../../../../poly/NodeContext\";\nimport { RopType } from \"../../../../poly/registers/nodes/types/Rop\";\nimport { ParamConfig } from \"../../../utils/params/ParamsConfig\";\nimport { ObjType } from \"../../../../poly/registers/nodes/types/Obj\";\nexport function CameraRenderParamConfig(Base) {\n  return class Mixin extends Base {\n    constructor() {\n      super(...arguments);\n      this.render = ParamConfig.FOLDER();\n      this.setScene = ParamConfig.BOOLEAN(0);\n      this.scene = ParamConfig.NODE_PATH(\"\", {\n        visibleIf: { setScene: 1 },\n        nodeSelection: {\n          context: NodeContext.OBJ,\n          types: [ObjType.SCENE]\n        }\n      });\n      this.setRenderer = ParamConfig.BOOLEAN(0);\n      this.renderer = ParamConfig.NODE_PATH(\"\", {\n        visibleIf: { setRenderer: 1 },\n        nodeSelection: {\n          context: NodeContext.ROP,\n          types: [RopType.WEBGL]\n        },\n        dependentOnFoundNode: true\n      });\n      this.setCSSRenderer = ParamConfig.BOOLEAN(0);\n      this.CSSRenderer = ParamConfig.NODE_PATH(\"\", {\n        visibleIf: { setCSSRenderer: 1 },\n        nodeSelection: {\n          context: NodeContext.ROP,\n          types: [RopType.CSS2D, RopType.CSS3D]\n        },\n        dependentOnFoundNode: true\n      });\n    }\n  };\n}\n","import {PerspectiveCamera} from 'three';\n\nexport class MapboxPerspectiveCamera extends PerspectiveCamera {}\n","import { Vector2 } from \"three\";\nexport class ViewerCamerasController {\n  constructor(_viewer) {\n    this._viewer = _viewer;\n    this._size = new Vector2(100, 100);\n    this._aspect = 1;\n  }\n  camera() {\n    return this._viewer.camera();\n  }\n  get size() {\n    return this._size;\n  }\n  get aspect() {\n    return this._aspect;\n  }\n  computeSizeAndAspect() {\n    this._updateSize();\n    this._viewer.scene().uniformsController.updateResolution(this._size);\n    this._aspect = this._getAspect();\n  }\n  _updateSize() {\n    var _a, _b;\n    this._size.x = ((_a = this._viewer.domElement()) == null ? void 0 : _a.offsetWidth) || 0;\n    this._size.y = ((_b = this._viewer.domElement()) == null ? void 0 : _b.offsetHeight) || 0;\n  }\n  _getAspect() {\n    return this._size.x / this._size.y;\n  }\n  updateCameraAspect() {\n    this._viewer.updateCameraAspect(this._aspect);\n  }\n  async prepareCurrentCamera() {\n    await this._updateFromCameraContainer();\n  }\n  async _updateFromCameraContainer() {\n    this.updateCameraAspect();\n  }\n}\n","export class ViewerControlsController {\n  constructor(viewer) {\n    this.viewer = viewer;\n    this._active = false;\n    this._unmounted = false;\n  }\n  controls() {\n    return this._controls;\n  }\n  mount() {\n    this._unmounted = false;\n    const controlsNode = this.viewer.controlsNode();\n    const camera = this.viewer.camera();\n    if (!(controlsNode && camera)) {\n      return;\n    }\n    controlsNode.applyControls(camera, this.viewer).then((controls) => {\n      this._controls = controls;\n      this._updateControlsFunc = controls ? (delta) => controls.update(delta) : void 0;\n      if (this._unmounted) {\n        this._disposeControls();\n      }\n    });\n  }\n  unmount() {\n    this._unmounted = true;\n    this._disposeControls();\n  }\n  _disposeControls() {\n    if (this._controls) {\n      this._controls.dispose();\n    }\n    this._updateControlsFunc = void 0;\n  }\n  update(delta) {\n    if (this._updateControlsFunc) {\n      this._updateControlsFunc(delta);\n    }\n  }\n}\n","export var CoreEventEmitter = /* @__PURE__ */ ((CoreEventEmitter2) => {\n  CoreEventEmitter2[\"CANVAS\"] = \"canvas\";\n  CoreEventEmitter2[\"DOCUMENT\"] = \"document\";\n  return CoreEventEmitter2;\n})(CoreEventEmitter || {});\nexport const EVENT_EMITTERS = [\"canvas\" /* CANVAS */, \"document\" /* DOCUMENT */];\nexport const EVENT_EMITTER_PARAM_MENU_OPTIONS = {\n  menu: {\n    entries: EVENT_EMITTERS.map((name, value) => {\n      return { name, value };\n    })\n  }\n};\n","export var KeyboardEventType = /* @__PURE__ */ ((KeyboardEventType2) => {\n  KeyboardEventType2[\"keydown\"] = \"keydown\";\n  KeyboardEventType2[\"keypress\"] = \"keypress\";\n  KeyboardEventType2[\"keyup\"] = \"keyup\";\n  return KeyboardEventType2;\n})(KeyboardEventType || {});\nexport const ACCEPTED_KEYBOARD_EVENT_TYPES = [\n  \"keydown\" /* keydown */,\n  \"keypress\" /* keypress */,\n  \"keyup\" /* keyup */\n];\n","export function allowCanvasKeyEventsListener(canvas) {\n  canvas.setAttribute(\"tabindex\", \"0\");\n}\n","import { CoreEventEmitter } from \"./CoreEventEmitter\";\nfunction elementFromEmitterType(emitter, canvas) {\n  return emitter == CoreEventEmitter.CANVAS ? canvas : document;\n}\nexport function getEventEmitter(eventData, canvas) {\n  if (eventData.type == \"resize\") {\n    return window;\n  } else {\n    return elementFromEmitterType(eventData.emitter, canvas);\n  }\n}\n","import { EVENT_EMITTERS } from \"../../../core/event/CoreEventEmitter\";\nimport { ACCEPTED_KEYBOARD_EVENT_TYPES } from \"../../../core/event/KeyboardEventType\";\nimport { allowCanvasKeyEventsListener } from \"../../../core/event/CanvasKeyFocus\";\nimport { getEventEmitter } from \"../../../core/event/EventEmitter\";\nexport class ViewerEventsController {\n  constructor(viewer) {\n    this.viewer = viewer;\n    this._bound_listener_map_by_event_controller_type = /* @__PURE__ */ new Map();\n  }\n  updateEvents(eventsController) {\n    const canvas = this.canvas();\n    if (!canvas) {\n      console.warn(\"no canvas found\");\n      return;\n    }\n    const controllerType = eventsController.type();\n    let map = this._bound_listener_map_by_event_controller_type.get(controllerType);\n    if (!map) {\n      map = /* @__PURE__ */ new Map();\n      this._bound_listener_map_by_event_controller_type.set(controllerType, map);\n    }\n    map.forEach((listenerWithData, eventType) => {\n      for (let emitter of EVENT_EMITTERS) {\n        const eventEmitter = getEventEmitter({ emitter, type: eventType }, canvas);\n        eventEmitter.removeEventListener(eventType, listenerWithData.listener);\n      }\n    });\n    map.clear();\n    for (let eventData of eventsController.activeEventDatas()) {\n      const eventEmitter = getEventEmitter(eventData, canvas);\n      const eventType = eventData.type;\n      const _processEvent = (event, controller) => {\n        const eventContext = {\n          viewer: this.viewer,\n          event,\n          emitter: eventData.emitter\n        };\n        controller.processEvent(eventContext);\n      };\n      const listener = (event) => {\n        _processEvent(event, eventsController);\n      };\n      eventEmitter.addEventListener(eventType, listener);\n      if (eventEmitter != document) {\n        if (ACCEPTED_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {\n          allowCanvasKeyEventsListener(eventEmitter);\n        }\n      }\n      map.set(eventData.type, { listener, data: eventData });\n    }\n  }\n  camera() {\n    return this.viewer.camera();\n  }\n  canvas() {\n    return this.viewer.canvas();\n  }\n  init() {\n    if (!this.canvas()) {\n      console.warn(\"no canvas found for eventsController\");\n      return;\n    }\n    this.viewer.scene().eventsDispatcher.traverseControllers((controller) => {\n      this.updateEvents(controller);\n    });\n  }\n  registeredEventTypes() {\n    const list = [];\n    this._bound_listener_map_by_event_controller_type.forEach((map) => {\n      map.forEach((listener, eventType) => {\n        list.push(eventType);\n      });\n    });\n    return list;\n  }\n  dispose() {\n    const canvas = this.canvas();\n    this._bound_listener_map_by_event_controller_type.forEach((map) => {\n      if (canvas) {\n        map.forEach((listenerWithData, eventType) => {\n          const eventOwner = getEventEmitter(listenerWithData.data, canvas);\n          eventOwner.removeEventListener(eventType, listenerWithData.listener);\n        });\n      }\n    });\n  }\n}\n","export class ViewerWebGLController {\n  constructor(viewer) {\n    this.viewer = viewer;\n  }\n  init() {\n    const canvas = this.viewer.canvas();\n    if (canvas) {\n      canvas.onwebglcontextlost = this._on_webglcontextlost.bind(this);\n      canvas.onwebglcontextrestored = this._on_webglcontextrestored.bind(this);\n    }\n  }\n  _on_webglcontextlost() {\n    console.warn(\"context lost at frame\", this.viewer.scene().frame());\n    if (this.request_animation_frame_id) {\n      cancelAnimationFrame(this.request_animation_frame_id);\n    } else {\n      console.warn(\"request_animation_frame_id not initialized\");\n    }\n    console.warn(\"not canceled\", this.request_animation_frame_id);\n  }\n  _on_webglcontextrestored() {\n    console.log(\"context restored\");\n  }\n}\n","import { isBooleanTrue } from \"../../../core/Type\";\nconst ICON = {\n  ON: `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"soundOn h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n\t<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15.536 8.464a5 5 0 010 7.072m2.828-9.9a9 9 0 010 12.728M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z\" />\n  </svg>`,\n  OFF: `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"soundOff h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n\t<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z\" clip-rule=\"evenodd\" />\n\t<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2\" />\n  </svg>`\n};\nexport class ViewerAudioController {\n  constructor(_viewer) {\n    this._viewer = _viewer;\n  }\n  update() {\n    const root = this._viewer.scene().root();\n    if (isBooleanTrue(root.pv.displayAudioIcon)) {\n      this._showIcon();\n      this._updateIcon(root);\n    } else {\n      this._hideIcon();\n    }\n  }\n  unmount() {\n    var _a;\n    if (this.__iconContainer) {\n      (_a = this.__iconContainer.parentElement) == null ? void 0 : _a.removeChild(this.__iconContainer);\n      this.__iconContainer = void 0;\n    }\n    this._onIcon = void 0;\n    this._offIcon = void 0;\n  }\n  _showIcon() {\n    const element = this._iconContainer();\n    if (element) {\n      element.style.display = \"block\";\n    }\n  }\n  _hideIcon() {\n    if (this.__iconContainer) {\n      this.__iconContainer.style.display = \"none\";\n    }\n  }\n  _iconContainer() {\n    const createIconContainer = () => {\n      const element = this._createIconContainer();\n      const domElement = this._viewer.domElement();\n      if (!domElement) {\n        return;\n      }\n      domElement.append(element);\n      return element;\n    };\n    return this.__iconContainer = this.__iconContainer || createIconContainer();\n  }\n  _createIconContainer() {\n    const element = document.createElement(\"div\");\n    element.addEventListener(\"pointerdown\", (event) => {\n      this._toggleSound();\n      event.preventDefault();\n      event.stopPropagation();\n      return false;\n    });\n    return element;\n  }\n  _setIconContainerStyle(element, root) {\n    const style = root.pv.audioIconStyle;\n    element.setAttribute(\"style\", style);\n    element.style.color = root.pv.audioIconColor.getStyle();\n  }\n  offIcon() {\n    function createIcon() {\n      const icon = document.createElement(\"div\");\n      icon.innerHTML = ICON.OFF;\n      return icon.children[0];\n    }\n    return this._offIcon = this._offIcon || createIcon();\n  }\n  onIcon() {\n    function createIcon() {\n      const icon = document.createElement(\"div\");\n      icon.innerHTML = ICON.ON;\n      return icon.children[0];\n    }\n    return this._onIcon = this._onIcon || createIcon();\n  }\n  _toggleSound() {\n    const root = this._viewer.scene().root();\n    root.audioController.toggleSound();\n    this._updateIcon(root);\n  }\n  _updateIcon(root) {\n    var _a, _b;\n    const container = this._iconContainer();\n    if (!container) {\n      return;\n    }\n    this._setIconContainerStyle(container, root);\n    const onIcon = this.onIcon();\n    const offIcon = this.offIcon();\n    if (this._viewer.scene().root().audioController.soundOn()) {\n      container.appendChild(onIcon);\n      (_a = offIcon.parentElement) == null ? void 0 : _a.removeChild(offIcon);\n    } else {\n      container.appendChild(offIcon);\n      (_b = onIcon.parentElement) == null ? void 0 : _b.removeChild(onIcon);\n    }\n  }\n}\n","import { ViewerCamerasController } from \"./utils/ViewerCamerasController\";\nimport { ViewerControlsController } from \"./utils/ViewerControlsController\";\nimport { ViewerEventsController } from \"./utils/ViewerEventsController\";\nimport { ViewerWebGLController } from \"./utils/ViewerWebglController\";\nimport { ViewerAudioController } from \"./utils/ViewerAudioController\";\nimport { Raycaster } from \"three\";\nimport { Poly } from \"../Poly\";\nconst HOVERED_CLASS_NAME = \"hovered\";\nconst _TypedViewer = class {\n  constructor(options) {\n    this._active = false;\n    this._doRender = true;\n    this.raycaster = this.createRaycaster();\n    this._mounted = false;\n    this._controlsController = new ViewerControlsController(this);\n    this._onBeforeTickCallbacks = [];\n    this._onAfterTickCallbacks = [];\n    this._onBeforeRenderCallbacks = [];\n    this._onAfterRenderCallbacks = [];\n    this._id = _TypedViewer._nextId();\n    this._camera = options.camera;\n    this._scene = options.scene;\n    this._canvas = options.canvas;\n    if (options.autoRender != null) {\n      this._doRender = options.autoRender;\n    }\n    this.updateCameraAspect = options.updateCameraAspect;\n    this.scene().viewersRegister.registerViewer(this);\n  }\n  static _nextId() {\n    return `${_TypedViewer._nextViewerId++}`;\n  }\n  mount(element) {\n    this._domElement = element;\n    this._domElement.viewer = this;\n    this._domElement.scene = this._scene;\n    this._domElement.Poly = Poly;\n    this.controlsController().mount();\n    this._mounted = true;\n  }\n  unmount() {\n    var _a;\n    if (!this._domElement) {\n      return;\n    }\n    (_a = this._audioController) == null ? void 0 : _a.unmount();\n    this._domElement.removeChild(this.canvas());\n    this.controlsController().unmount();\n    this._mounted = false;\n  }\n  static _canvasIdPrefix() {\n    return \"TypedViewer\";\n  }\n  static createCanvas(id) {\n    id = id || _TypedViewer._nextId();\n    const canvas = document.createElement(\"canvas\");\n    canvas.id = `${this._canvasIdPrefix()}_${id}`;\n    canvas.style.display = \"block\";\n    canvas.style.outline = \"none\";\n    canvas.style.width = \"100%\";\n    canvas.style.height = \"100%\";\n    return canvas;\n  }\n  controlsNode() {\n    return this._controlsNode;\n  }\n  canvas() {\n    return this._canvas = this._canvas || _TypedViewer.createCanvas(this._id);\n  }\n  setRenderObjectOverride(object) {\n    if (object) {\n      this._renderObjectOverride = object;\n    } else {\n      this._renderObjectOverride = void 0;\n    }\n  }\n  active() {\n    return this._active;\n  }\n  activate() {\n    this._active = true;\n  }\n  deactivate() {\n    this._active = false;\n  }\n  camerasController() {\n    return this._camerasController = this._camerasController || new ViewerCamerasController(this);\n  }\n  controlsController() {\n    return this._controlsController;\n  }\n  eventsController() {\n    return this._eventsController = this._eventsController || new ViewerEventsController(this);\n  }\n  webglController() {\n    return this._webGLController = this._webGLController || new ViewerWebGLController(this);\n  }\n  audioController() {\n    return this._audioController = this._audioController || new ViewerAudioController(this);\n  }\n  domElement() {\n    return this._domElement;\n  }\n  scene() {\n    return this._scene;\n  }\n  createRaycaster() {\n    const raycaster = new Raycaster();\n    raycaster.firstHitOnly = true;\n    return raycaster;\n  }\n  camera() {\n    return this._camera;\n  }\n  id() {\n    return this._id;\n  }\n  dispose() {\n    this._scene.viewersRegister.unregisterViewer(this);\n    this.eventsController().dispose();\n    this.controlsController().unmount();\n    if (!this._domElement) {\n      return;\n    }\n    let child;\n    while (child = this._domElement.children[0]) {\n      this._domElement.removeChild(child);\n    }\n  }\n  resetContainerClass() {\n    var _a;\n    (_a = this.domElement()) == null ? void 0 : _a.classList.remove(HOVERED_CLASS_NAME);\n  }\n  setContainerClassHovered() {\n    var _a;\n    (_a = this.domElement()) == null ? void 0 : _a.classList.add(HOVERED_CLASS_NAME);\n  }\n  markAsReady() {\n  }\n  setAutoRender(state = true) {\n    this._doRender = state;\n  }\n  autoRenderState() {\n    return this._doRender;\n  }\n  registerOnBeforeTick(callbackName, callback, options = {}) {\n    this._registerCallback(callbackName, callback, this.registeredBeforeTickCallbacks(), options);\n  }\n  unRegisterOnBeforeTick(callbackName) {\n    this._unregisterCallback(callbackName, this._onBeforeTickCallbacksMap);\n  }\n  registeredBeforeTickCallbacks() {\n    return this._onBeforeTickCallbacksMap = this._onBeforeTickCallbacksMap || /* @__PURE__ */ new Map();\n  }\n  registerOnAfterTick(callbackName, callback, options = {}) {\n    this._registerCallback(callbackName, callback, this.registeredAfterTickCallbacks(), options);\n  }\n  unRegisterOnAfterTick(callbackName) {\n    this._unregisterCallback(callbackName, this._onAfterTickCallbacksMap);\n  }\n  registeredAfterTickCallbacks() {\n    return this._onAfterTickCallbacksMap = this._onAfterTickCallbacksMap || /* @__PURE__ */ new Map();\n  }\n  registerOnBeforeRender(callbackName, callback, options = {}) {\n    this._registerCallback(callbackName, callback, this.registeredBeforeRenderCallbacks(), options);\n  }\n  unRegisterOnBeforeRender(callbackName) {\n    this._unregisterCallback(callbackName, this._onBeforeRenderCallbacksMap);\n  }\n  registeredBeforeRenderCallbacks() {\n    return this._onBeforeRenderCallbacksMap = this._onBeforeRenderCallbacksMap || /* @__PURE__ */ new Map();\n  }\n  registerOnAfterRender(callbackName, callback, options = {}) {\n    this._registerCallback(callbackName, callback, this.registeredAfterRenderCallbacks(), options);\n  }\n  unRegisterOnAfterRender(callbackName) {\n    this._unregisterCallback(callbackName, this._onAfterRenderCallbacksMap);\n  }\n  registeredAfterRenderCallbacks() {\n    return this._onAfterRenderCallbacksMap = this._onAfterRenderCallbacksMap || /* @__PURE__ */ new Map();\n  }\n  _registerCallback(callbackName, callback, map, options = {}) {\n    if (map.has(callbackName)) {\n      console.warn(`callback ${callbackName} already registered`);\n      return;\n    }\n    map.set(callbackName, { callback, options });\n    this._updateCallbacks();\n  }\n  _unregisterCallback(callbackName, map) {\n    if (!map) {\n      return;\n    }\n    const callbackContainer = map.get(callbackName);\n    if (!callbackContainer) {\n      return;\n    }\n    const options = callbackContainer.options;\n    if (options.persistent == true) {\n      return;\n    }\n    map.delete(callbackName);\n    this._updateCallbacks();\n  }\n  _updateCallbacks() {\n    var _a, _b, _c, _d;\n    this._onBeforeTickCallbacks = [];\n    (_a = this._onBeforeTickCallbacksMap) == null ? void 0 : _a.forEach((callbackContainer) => {\n      this._onBeforeTickCallbacks.push(callbackContainer.callback);\n    });\n    this._onAfterTickCallbacks = [];\n    (_b = this._onAfterTickCallbacksMap) == null ? void 0 : _b.forEach((callbackContainer) => {\n      this._onAfterTickCallbacks.push(callbackContainer.callback);\n    });\n    this._onBeforeRenderCallbacks = [];\n    (_c = this._onBeforeRenderCallbacksMap) == null ? void 0 : _c.forEach((callbackContainer) => {\n      this._onBeforeRenderCallbacks.push(callbackContainer.callback);\n    });\n    this._onAfterRenderCallbacks = [];\n    (_d = this._onAfterRenderCallbacksMap) == null ? void 0 : _d.forEach((callbackContainer) => {\n      this._onAfterRenderCallbacks.push(callbackContainer.callback);\n    });\n  }\n  _runTickCallbacks(callbacks, delta) {\n    for (const callback of callbacks) {\n      callback(delta);\n    }\n  }\n  _runRenderCallbacks(callbacks, delta, renderer) {\n    for (const callback of callbacks) {\n      callback(delta, renderer);\n    }\n  }\n  _runOnBeforeTickCallbacks(delta) {\n    this._runTickCallbacks(this._onBeforeTickCallbacks, delta);\n  }\n  _runOnAfterTickCallbacks(delta) {\n    this._runTickCallbacks(this._onAfterTickCallbacks, delta);\n  }\n  _runOnBeforeRenderCallbacks(delta, renderer) {\n    this._runRenderCallbacks(this._onBeforeRenderCallbacks, delta, renderer);\n  }\n  _runOnAfterRenderCallbacks(delta, renderer) {\n    this._runRenderCallbacks(this._onAfterRenderCallbacks, delta, renderer);\n  }\n};\nexport let TypedViewer = _TypedViewer;\nTypedViewer._nextViewerId = 0;\n","import {MapboxViewer} from '../../Mapbox';\n\nexport class MapboxViewerEventsController {\n\tconstructor(private _viewer: MapboxViewer) {}\n\tinit_events() {\n\t\tconst map = this._viewer.map();\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\t\tmap.on('move', this._on_move.bind(this));\n\t\tmap.on('moveend', this._on_moveend.bind(this));\n\n\t\tmap.on('mousemove', this._on_mousemove.bind(this));\n\t\tmap.on('mousedown', this._on_mousedown.bind(this));\n\t\tmap.on('mouseup', this._on_mouseup.bind(this));\n\t}\n\n\tprivate _on_move(e: Event) {}\n\tprivate _on_moveend(e: Event) {\n\t\tthis.camera_node_move_end();\n\t}\n\tprivate _on_mousemove(e: MouseEvent) {}\n\n\tprivate _on_mousedown(e: MouseEvent) {}\n\n\tprivate _on_mouseup(e: MouseEvent) {}\n\n\tcamera_node_move_end() {\n\t\tthis._viewer.cameraNode()?.onMoveEnd(this._viewer.canvasContainer());\n\t}\n}\n","import {Vector3} from 'three';\nimport {Matrix4} from 'three';\nimport {LinearInterpolant} from 'three';\nimport {Group} from 'three';\nimport {Object3D} from 'three';\nimport {BufferGeometry} from 'three';\nimport {Mesh} from 'three';\nimport {Box3} from 'three';\n\nimport {CoreGroup} from '@polygonjs/polygonjs/dist/src/core/geometry/Group';\nimport {CoreGeometry} from '@polygonjs/polygonjs/dist/src/core/geometry/Geometry';\n// import {Constants} from './Constants'\nimport {CoreMapboxUtils} from './Utils';\nimport {MapboxCameraObjNode} from '../../engine/nodes/obj/MapboxCamera';\nimport mapboxgl from 'mapbox-gl';\nimport {PolyDictionary} from '@polygonjs/polygonjs/dist/src/types/GlobalTypes';\nconst Utils = CoreMapboxUtils;\n\nconst MAT_RX = new Matrix4().makeRotationAxis(new Vector3(1, 0, 0), -Math.PI / 2);\nconst POSITION_ATTRIB_NAME = 'position';\n\nconst STEP_SIZE_BY_ZOOM: PolyDictionary<number> = {\n\t1: 1802297.1652004332,\n\t2: 901148.582600187,\n\t3: 450574.29129994207,\n\t4: 225287.14564998331,\n\t5: 112643.57282498456,\n\t6: 56321.78641249478,\n\t7: 28160.89320639847,\n\t8: 14080.446603198769,\n\t9: 7040.223301600898,\n\t10: 3520.1116506467515,\n\t11: 1760.0558254750213,\n\t12: 880.027912584861,\n\t13: 440.01395644506556,\n\t14: 220.00697807141114,\n\t15: 110.00348918733653,\n\t16: 55.0017445946869,\n\t17: 27.50087214470841,\n\t18: 13.750436073372839,\n\t19: 6.8752180371957365,\n\t20: 3.437609169195639,\n\t21: 1.7188044319627807,\n\t22: 0.8594022154866252,\n\t23: 0.42970126142608933,\n};\n\nexport class CoreMapboxTransform {\n\tstatic WORLD_SCALE = 5.41843220338983e-8;\n\n\tprivate pos_offset: [number, number];\n\n\tconstructor(private _camera_node: MapboxCameraObjNode) {\n\t\tconst lng_lat = this._camera_node.pv.lngLat;\n\t\tconst lng_lat_start = {\n\t\t\tlng: lng_lat.x,\n\t\t\tlat: lng_lat.y,\n\t\t};\n\t\tthis.pos_offset = Utils.fromLL(lng_lat_start.lng, lng_lat_start.lat);\n\t}\n\n\t// transform_geometry(geometry: BufferGeometry) {\n\t// \tconst max_ratio = this.geometry_bbox_ratio(geometry);\n\t// \tthis.transform_geometry_with_max_ratio(geometry, max_ratio);\n\t// }\n\n\ttransform_group2(group: Group) {\n\t\tconst core_group = new CoreGroup();\n\t\tcore_group.setObjects(group.children);\n\t\tconst center = core_group.center();\n\t\tconst bbox = core_group.boundingBox();\n\t\tconst size = core_group.size();\n\n\t\tconst new_center = Utils.fromLLv(center);\n\t\tconst new_min = Utils.fromLLv(bbox.min);\n\t\tconst new_max = Utils.fromLLv(bbox.max);\n\n\t\tconst new_size = new_max.clone().sub(new_min);\n\n\t\t// const tr_offset = center.clone().sub(new_center)\n\t\tconst s_offset = size.clone().multiply(new_size);\n\t\ts_offset.x = Math.abs(s_offset.x);\n\t\ts_offset.z = Math.abs(s_offset.z);\n\t\ts_offset.y = 0.5 * (s_offset.x + s_offset.z);\n\n\t\tconst mat_tr = new Matrix4();\n\t\tconst mat_tr_reset = new Matrix4();\n\t\tconst mat_s = new Matrix4();\n\t\tmat_tr_reset.makeTranslation(-center.x, -center.y, -center.z);\n\t\tmat_tr.makeTranslation(new_center.x - this.pos_offset[0], new_center.y, new_center.z - this.pos_offset[1]);\n\t\tmat_s.makeScale(s_offset.x, s_offset.y, s_offset.z);\n\n\t\tgroup.traverse((object) => {\n\t\t\tconst geometry = (object as Mesh).geometry as BufferGeometry;\n\n\t\t\tif (geometry) {\n\t\t\t\tgeometry.applyMatrix4(mat_tr_reset);\n\t\t\t\tgeometry.applyMatrix4(mat_s);\n\t\t\t\tgeometry.applyMatrix4(mat_tr);\n\t\t\t\t// this.transform_geometry_with_max_ratio(geometry, max_ratio)\n\n\t\t\t\tgeometry.applyMatrix4(MAT_RX);\n\t\t\t\tif (geometry.attributes.normal) {\n\t\t\t\t\tgeometry.computeVertexNormals();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\ttransform_group_FINAL(object: Object3D) {\n\t\tthis.transform_group3(object);\n\t}\n\ttransform_geometry_FINAL(geometry: BufferGeometry) {\n\t\tthis.transform_geometry3(geometry);\n\t}\n\ttransform_position_FINAL(position: Vector3): Vector3 {\n\t\treturn this.transform_position3(position);\n\t}\n\tuntransform_position_FINAL(position: Vector3): Vector3 {\n\t\treturn this.untransform_position3(position);\n\t}\n\n\ttransform_group3(group: Object3D) {\n\t\t// const max_ratio = this.group_bbox_ratio(group);\n\n\t\tgroup.traverse((object) => {\n\t\t\tconst geometry = (object as Mesh).geometry as BufferGeometry;\n\t\t\tif (geometry) {\n\t\t\t\tthis.transform_geometry_FINAL(geometry);\n\t\t\t}\n\t\t});\n\t}\n\n\ttransform_group(group: Group) {\n\t\tconst max_ratio = this.group_bbox_ratio(group);\n\n\t\tgroup.traverse((object) => {\n\t\t\tconst geometry = (object as Mesh).geometry as BufferGeometry;\n\t\t\tif (geometry) {\n\t\t\t\tthis.transform_geometry_with_max_ratio(geometry, max_ratio);\n\t\t\t}\n\t\t});\n\t}\n\t// transform_positions(positions: Vector3[]){\n\t// \tconst min = new Vector3(\n\t// \t\tArrayUtils.min(positions.map(v=>v.x)),\n\t// \t\tArrayUtils.min(positions.map(v=>v.y)),\n\t// \t\tArrayUtils.min(positions.map(v=>v.z))\n\t// \t)\n\t// \tconst max = new Vector3(\n\t// \t\tArrayUtils.max(positions.map(v=>v.x)),\n\t// \t\tArrayUtils.max(positions.map(v=>v.y)),\n\t// \t\tArrayUtils.max(positions.map(v=>v.z))\n\t// \t)\n\t// \tconst bbox = new Box3(min, max)\n\t// \tconst max_ratio = this.bbox_ratio(bbox)\n\t// \tpositions.forEach(position=>{\n\t// \t\tthis.transform_position_with_max_ratio(position, max_ratio)\n\t// \t})\n\t// }\n\tprivate transform_geometry3(geometry: BufferGeometry) {\n\t\tconst core_geometry = new CoreGeometry(geometry);\n\t\tconst points = core_geometry.points();\n\t\tpoints.forEach((point) => {\n\t\t\tconst position = point.position();\n\t\t\tthis.transform_position_FINAL(position);\n\t\t\tpoint.setAttribValue(POSITION_ATTRIB_NAME, position);\n\t\t});\n\n\t\t// geometry.applyMatrix(MAT_RX);\n\t\t// geometry.computeVertexNormals(); // this messes up when transforming points\n\t}\n\n\tprivate transform_geometry_with_max_ratio(geometry: BufferGeometry, max_ratio: number) {\n\t\tconst core_geometry = new CoreGeometry(geometry);\n\t\tconst points = core_geometry.points();\n\t\tpoints.forEach((point) => {\n\t\t\tconst position = point.position();\n\t\t\tthis.transform_position_with_max_ratio(position, max_ratio);\n\t\t\tpoint.setAttribValue(POSITION_ATTRIB_NAME, position);\n\t\t});\n\n\t\tgeometry.applyMatrix4(MAT_RX);\n\t\tif (geometry.attributes.normal) {\n\t\t\tgeometry.computeVertexNormals();\n\t\t}\n\t}\n\tprivate transform_position3(position: Vector3): Vector3 {\n\t\tconst lon = position.x;\n\t\tconst altitude = position.y;\n\t\tconst lat = position.z;\n\t\t// const pos = Utils.fromLL(lon, lat);\n\t\tconst mercator_pos = mapboxgl.MercatorCoordinate.fromLngLat([lon, lat], altitude);\n\t\tposition.x = mercator_pos.x - this.pos_offset[0];\n\t\tposition.y = mercator_pos.z || 0;\n\t\t// position.y *= -max_ratio;\n\t\tposition.z = mercator_pos.y - this.pos_offset[1];\n\n\t\tposition.divideScalar(CoreMapboxTransform.WORLD_SCALE);\n\t\treturn position;\n\t}\n\tprivate untransform_position3(position: Vector3): Vector3 {\n\t\tposition.multiplyScalar(CoreMapboxTransform.WORLD_SCALE);\n\n\t\tconst lon = position.x + this.pos_offset[0];\n\t\tconst altitude = position.y;\n\t\tconst lat = position.z + this.pos_offset[1];\n\t\t// const pos = Utils.fromLL(lon, lat);\n\t\tconst mercator = new mapboxgl.MercatorCoordinate(lon, lat, altitude);\n\t\tconst lng_lat_like = mercator.toLngLat();\n\t\tposition.x = lng_lat_like.lng;\n\t\tposition.y = altitude;\n\t\t// position.y *= -max_ratio;\n\t\tposition.z = lng_lat_like.lat;\n\n\t\treturn position;\n\t}\n\tprivate transform_position_with_max_ratio(position: Vector3, max_ratio: number) {\n\t\tconst lon = position.x;\n\t\tconst lat = position.z;\n\t\tconst pos = Utils.fromLL(lon, lat);\n\t\tposition.x = pos[0] - this.pos_offset[0];\n\t\tposition.y *= -max_ratio;\n\t\tposition.z = pos[1] - this.pos_offset[1];\n\t}\n\n\tprivate group_bbox_ratio(group: Group): number {\n\t\tconst core_group = new CoreGroup();\n\t\tcore_group.setObjects(group.children);\n\t\tconst bbox = core_group.boundingBox();\n\t\treturn this.bbox_ratio(bbox);\n\t}\n\t// private geometry_bbox_ratio(geometry: BufferGeometry): number {\n\t// \tgeometry.computeBoundingBox();\n\t// \treturn geometry.boundingBox;\n\t// }\n\n\tprivate bbox_ratio(bbox: Box3): number {\n\t\tconst new_bbox_min = Utils.fromLL(bbox.min.x, bbox.min.z);\n\t\tconst new_bbox_max = Utils.fromLL(bbox.max.x, bbox.max.z);\n\t\tconst new_bbox_size = [new_bbox_max[1] - new_bbox_min[1], new_bbox_max[0] - new_bbox_min[0]];\n\t\tconst old_bbox_size = [bbox.max.x - bbox.min.x, bbox.max.z - bbox.min.z];\n\t\tconst bbox_ratio = [new_bbox_size[0] / old_bbox_size[0], new_bbox_size[1] / old_bbox_size[1]];\n\t\treturn Math.max(bbox_ratio[0], bbox_ratio[1]);\n\t}\n\n\t//\n\t//\n\t// ZOOM INTERPOLANT\n\t//\n\t//\n\tprivate static _interpolant: LinearInterpolant | undefined;\n\tstatic _step_size_from_zoom_interpolant() {\n\t\treturn (this._interpolant = this._interpolant || this._create_step_size_from_zoom_interpolant());\n\t}\n\tstatic _create_step_size_from_zoom_interpolant() {\n\t\tconst positions = Object.keys(STEP_SIZE_BY_ZOOM)\n\t\t\t.map((p) => parseFloat(p))\n\t\t\t.sort();\n\t\tconst values = [];\n\t\tfor (let position of positions) {\n\t\t\tvalues.push(STEP_SIZE_BY_ZOOM[position]);\n\t\t}\n\n\t\tconst values_count = 1;\n\t\tconst interpolated_values = new Float32Array(values_count);\n\t\treturn new LinearInterpolant(positions, values, values_count, interpolated_values);\n\t}\n\tstatic step_size_from_zoom(zoom: number): number {\n\t\treturn this._step_size_from_zoom_interpolant().evaluate(zoom)[0];\n\t}\n}\n","export var SceneEvent = /* @__PURE__ */ ((SceneEvent2) => {\n  SceneEvent2[\"MAX_FRAME_UPDATED\"] = \"scene_maxFrameUpdated\";\n  SceneEvent2[\"REALTIME_STATUS_UPDATED\"] = \"scene_realtime_status_updated\";\n  SceneEvent2[\"FRAME_UPDATED\"] = \"scene_frame_updated\";\n  SceneEvent2[\"PLAY_STATE_UPDATED\"] = \"scene_play_state_updated\";\n  return SceneEvent2;\n})(SceneEvent || {});\n","export var PolyEventName = /* @__PURE__ */ ((PolyEventName2) => {\n  PolyEventName2[\"POLY_PROGRESS\"] = \"POLYProgress\";\n  PolyEventName2[\"SCENE_CREATED\"] = \"POLYSceneCreated\";\n  PolyEventName2[\"SCENE_READY\"] = \"POLYSceneReady\";\n  PolyEventName2[\"SCENE_PLAY\"] = \"POLYScenePlay\";\n  PolyEventName2[\"SCENE_PAUSE\"] = \"POLYScenePause\";\n  PolyEventName2[\"VIEWER_MOUNTED\"] = \"POLYViewerMounted\";\n  PolyEventName2[\"VIEWER_READY\"] = \"POLYViewerReady\";\n  return PolyEventName2;\n})(PolyEventName || {});\n","import { MapUtils } from \"../../../../core/MapUtils\";\nimport { PolyEventName } from \"../../../poly/utils/PolyEventName\";\nexport class PolySceneEvent extends Event {\n  constructor(type) {\n    super(type);\n  }\n  get type() {\n    return super.type;\n  }\n}\nexport const SCENE_EVENT_CREATED_EVENT_CONTEXT = {\n  event: new PolySceneEvent(PolyEventName.SCENE_CREATED)\n};\nexport const SCENE_EVENT_READY_EVENT_CONTEXT = {\n  event: new PolySceneEvent(PolyEventName.SCENE_READY)\n};\nexport const SCENE_EVENT_PLAY_EVENT_CONTEXT = {\n  event: new PolySceneEvent(PolyEventName.SCENE_PLAY)\n};\nexport const SCENE_EVENT_PAUSE_EVENT_CONTEXT = {\n  event: new PolySceneEvent(PolyEventName.SCENE_PAUSE)\n};\nexport class SceneEventsController {\n  constructor() {\n    this._observersByEventType = /* @__PURE__ */ new Map();\n  }\n  dispatch(eventContext) {\n    const event = eventContext.event;\n    if (!event) {\n      return;\n    }\n    const set = this._observersByEventType.get(event.type);\n    if (!set) {\n      return;\n    }\n    set.forEach((node) => {\n      node.processEvent(eventContext);\n    });\n  }\n  removeObserverFromAllEventTypes(eventNode) {\n    this._observersByEventType.forEach((nodes, eventType) => {\n      nodes.delete(eventNode);\n    });\n  }\n  addObserver(eventNode, eventType) {\n    MapUtils.addToSetAtEntry(this._observersByEventType, eventType, eventNode);\n  }\n}\n","import { CoreGraphNode } from \"../../../core/graph/CoreGraphNode\";\nimport { SceneEvent } from \"../../poly/SceneEvent\";\nimport { Clock } from \"three\";\nimport { SCENE_EVENT_PLAY_EVENT_CONTEXT, SCENE_EVENT_PAUSE_EVENT_CONTEXT } from \"./events/SceneEventsController\";\nconst FPS = 60;\nexport const TIME_CONTROLLER_UPDATE_TIME_OPTIONS_DEFAULT = {\n  updateClockDelta: false\n};\nconst _TimeController = class {\n  constructor(scene) {\n    this.scene = scene;\n    this._frame = 0;\n    this._timeUniform = { value: 0 };\n    this._realtimeState = true;\n    this._maxFrame = 600;\n    this._maxFrameLocked = false;\n    this._playing = false;\n    this._clock = new Clock();\n    this._delta = 0;\n    this._onBeforeTickCallbacks = [];\n    this._onAfterTickCallbacks = [];\n    this._onPlayingStateChangeCallbacks = [];\n    this._graphNode = new CoreGraphNode(scene, \"timeController\");\n  }\n  get graphNode() {\n    return this._graphNode;\n  }\n  updateClockDelta() {\n    return this._delta = this._clock.getDelta();\n  }\n  delta() {\n    return this._delta;\n  }\n  setDelta(delta) {\n    this._delta = delta;\n  }\n  frame() {\n    return this._frame;\n  }\n  timeUniform() {\n    return this._timeUniform;\n  }\n  time() {\n    return this._timeUniform.value;\n  }\n  timeDelta() {\n    return this._delta;\n  }\n  maxFrame() {\n    return this._maxFrame;\n  }\n  maxFrameLocked() {\n    return this._maxFrameLocked;\n  }\n  realtimeState() {\n    return this._realtimeState;\n  }\n  setMaxFrame(maxFrame) {\n    this._maxFrame = Math.floor(maxFrame);\n    this.scene.dispatchController.dispatch(this._graphNode, SceneEvent.MAX_FRAME_UPDATED);\n  }\n  setMaxFrameLocked(state) {\n    this._maxFrameLocked = state;\n    this.scene.dispatchController.dispatch(this._graphNode, SceneEvent.MAX_FRAME_UPDATED);\n  }\n  setRealtimeState(state) {\n    this._realtimeState = state;\n    this.scene.dispatchController.dispatch(this._graphNode, SceneEvent.REALTIME_STATUS_UPDATED);\n  }\n  setTime(time, updateFrame = true) {\n    if (time == this._timeUniform.value) {\n      return;\n    }\n    this._timeUniform.value = time;\n    this.scene.cooker.block();\n    const delta = this._delta;\n    for (const callback of this._onBeforeTickCallbacks) {\n      callback(delta);\n    }\n    if (this._playing == true && time > 0) {\n      this.scene.actorsManager.tick();\n    }\n    if (updateFrame) {\n      const newFrame = Math.floor(this._timeUniform.value * FPS);\n      const boundedFrame = this._ensureFrameWithinBounds(newFrame);\n      if (newFrame != boundedFrame) {\n        this.setFrame(boundedFrame, true);\n      } else {\n        this._frame = newFrame;\n      }\n    }\n    this.scene.dispatchController.dispatch(this._graphNode, SceneEvent.FRAME_UPDATED);\n    this.graphNode.setSuccessorsDirty();\n    this.scene.cooker.unblock();\n    for (const callback of this._onAfterTickCallbacks) {\n      callback(delta);\n    }\n  }\n  setFrame(frame, updateTime = true) {\n    if (frame == this._frame) {\n      return;\n    }\n    frame = this._ensureFrameWithinBounds(frame);\n    if (frame == this._frame) {\n      return;\n    }\n    this._frame = frame;\n    if (this._frame == _TimeController.START_FRAME) {\n      this.scene.actorsManager.runOnEventSceneReset();\n    }\n    if (updateTime) {\n      this.setTime(this._frame / FPS, false);\n    }\n  }\n  setFrameToStart() {\n    this.setFrame(_TimeController.START_FRAME, true);\n  }\n  incrementTimeIfPlaying(options) {\n    if (this._playing) {\n      if (!this.scene.root().areChildrenCooking()) {\n        this.incrementTime(options);\n      }\n    }\n  }\n  incrementTime(options) {\n    if (!((options == null ? void 0 : options.updateClockDelta) == false)) {\n      this.updateClockDelta();\n    }\n    if (this._realtimeState) {\n      const newTime = this._timeUniform.value + this._delta;\n      this.setTime(newTime, false);\n      this.setFrame(this._frame + 1, false);\n    } else {\n      this.setFrame(this.frame() + 1);\n    }\n  }\n  _ensureFrameWithinBounds(frame) {\n    if (this._playing) {\n      if (this._maxFrameLocked && frame > this._maxFrame) {\n        return _TimeController.START_FRAME;\n      }\n    } else {\n      if (this._maxFrameLocked && frame > this._maxFrame) {\n        return this._maxFrame;\n      }\n      if (frame < _TimeController.START_FRAME) {\n        return _TimeController.START_FRAME;\n      }\n    }\n    return frame;\n  }\n  playing() {\n    return this._playing === true;\n  }\n  pause() {\n    if (this._playing == false) {\n      return;\n    }\n    this._playing = false;\n    this.scene.dispatchController.dispatch(this._graphNode, SceneEvent.PLAY_STATE_UPDATED);\n    this.scene.actorsManager.runOnEventScenePause();\n    this.scene.eventsDispatcher.sceneEventsController.dispatch(SCENE_EVENT_PAUSE_EVENT_CONTEXT);\n    for (let callback of this._onPlayingStateChangeCallbacks) {\n      callback();\n    }\n  }\n  play() {\n    if (this._playing == true) {\n      return;\n    }\n    this._playing = true;\n    this.scene.actorsManager.runOnEventScenePlay();\n    this.scene.dispatchController.dispatch(this._graphNode, SceneEvent.PLAY_STATE_UPDATED);\n    this.scene.eventsDispatcher.sceneEventsController.dispatch(SCENE_EVENT_PLAY_EVENT_CONTEXT);\n    for (let callback of this._onPlayingStateChangeCallbacks) {\n      callback();\n    }\n  }\n  togglePlayPause() {\n    if (this.playing()) {\n      this.pause();\n    } else {\n      this.play();\n    }\n  }\n  registerOnBeforeTick(callbackName, callback) {\n    this._registerCallback(callbackName, callback, this.registeredBeforeTickCallbacks());\n  }\n  unRegisterOnBeforeTick(callbackName) {\n    this._unregisterCallback(callbackName, this._onBeforeTickCallbacksMap);\n  }\n  registeredBeforeTickCallbacks() {\n    return this._onBeforeTickCallbacksMap = this._onBeforeTickCallbacksMap || /* @__PURE__ */ new Map();\n  }\n  registerOnAfterTick(callbackName, callback) {\n    this._registerCallback(callbackName, callback, this.registeredAfterTickCallbacks());\n  }\n  unRegisterOnAfterTick(callbackName) {\n    this._unregisterCallback(callbackName, this._onAfterTickCallbacksMap);\n  }\n  registeredAfterTickCallbacks() {\n    return this._onAfterTickCallbacksMap = this._onAfterTickCallbacksMap || /* @__PURE__ */ new Map();\n  }\n  onPlayingStateChange(callback) {\n    this._onPlayingStateChangeCallbacksMap = this._onPlayingStateChangeCallbacksMap || /* @__PURE__ */ new Set();\n    this._onPlayingStateChangeCallbacksMap.add(callback);\n    this._updateOnPlayingStateChangeCallbacks();\n  }\n  removeOnPlayingStateChange(callback) {\n    if (this._onPlayingStateChangeCallbacksMap) {\n      this._onPlayingStateChangeCallbacksMap.delete(callback);\n      this._updateOnPlayingStateChangeCallbacks();\n    }\n  }\n  _updateOnPlayingStateChangeCallbacks() {\n    this._onPlayingStateChangeCallbacks = [];\n    if (this._onPlayingStateChangeCallbacksMap) {\n      this._onPlayingStateChangeCallbacksMap.forEach((callback) => {\n        this._onPlayingStateChangeCallbacks.push(callback);\n      });\n    }\n  }\n  _registerCallback(callbackName, callback, map) {\n    if (map.has(callbackName)) {\n      console.warn(`callback ${callbackName} already registered`);\n      return;\n    }\n    map.set(callbackName, callback);\n    this._updateCallbacks();\n  }\n  _unregisterCallback(callbackName, map) {\n    if (!map) {\n      return;\n    }\n    map.delete(callbackName);\n    this._updateCallbacks();\n  }\n  _updateCallbacks() {\n    var _a, _b;\n    this._onBeforeTickCallbacks = [];\n    (_a = this._onBeforeTickCallbacksMap) == null ? void 0 : _a.forEach((callback) => {\n      this._onBeforeTickCallbacks.push(callback);\n    });\n    this._onAfterTickCallbacks = [];\n    (_b = this._onAfterTickCallbacksMap) == null ? void 0 : _b.forEach((callback) => {\n      this._onAfterTickCallbacks.push(callback);\n    });\n  }\n};\nexport let TimeController = _TimeController;\nTimeController.START_FRAME = 0;\n","import {CoreMapboxTransform} from '../../../../core/mapbox/Transform';\nimport {MapboxCameraObjNode} from '../../../nodes/obj/MapboxCamera';\nimport {MapboxViewer} from '../../Mapbox';\nimport {Mesh, Camera, Matrix4, Scene, Vector3, WebGLRenderer, Vector2, PlaneGeometry} from 'three';\nimport mapboxgl from 'mapbox-gl';\nimport {PolyScene} from '@polygonjs/polygonjs/dist/src/engine/scene/PolyScene';\nimport {TIME_CONTROLLER_UPDATE_TIME_OPTIONS_DEFAULT} from '@polygonjs/polygonjs/dist/src/engine/scene/utils/TimeController';\nimport {\n\tCoreCameraCSSRendererController,\n\tCSSRendererConfig,\n} from '@polygonjs/polygonjs/dist/src/core/camera/CoreCameraCSSRendererController';\n\nconst ID = 'threejs_layer';\ntype RenderFunc = () => void;\n\nexport class ThreejsLayer {\n\tpublic readonly id: string = ID;\n\tpublic readonly type: 'custom' = 'custom';\n\tpublic readonly renderingMode: '3d' = '3d'; // 2d or 3d, the threejs will be either as an overlay or intersecting with buildings\n\tprivate _camera: Camera;\n\tprivate _scene: PolyScene;\n\tprivate _renderer: WebGLRenderer | undefined;\n\tprivate _map: mapboxgl.Map | undefined;\n\tprivate _gl: WebGLRenderingContext | undefined;\n\tprivate _renderCSSFunc: RenderFunc | undefined;\n\tprivate _cssRendererConfig: CSSRendererConfig | undefined;\n\n\tconstructor(private _cameraNode: MapboxCameraObjNode, private _displayScene: Scene, private _viewer: MapboxViewer) {\n\t\tthis._camera = this._cameraNode.object;\n\t\tthis._scene = this._cameraNode.scene();\n\t}\n\n\tonAdd(map: mapboxgl.Map, gl: WebGLRenderingContext) {\n\t\tthis._map = map;\n\t\tthis._gl = gl;\n\n\t\tthis.createRenderer();\n\t}\n\tonRemove() {\n\t\tthis._renderer?.dispose();\n\t}\n\tprivate createRenderer() {\n\t\tif (this._renderer != null) {\n\t\t\tthis._renderer.dispose();\n\t\t}\n\t\tif (!this._map) {\n\t\t\tconsole.error('no map given');\n\t\t\treturn;\n\t\t}\n\t\tif (!this._gl) {\n\t\t\tconsole.error('no gl context given');\n\t\t\treturn;\n\t\t}\n\t\tthis._renderer = new WebGLRenderer({\n\t\t\t// alpha: true\n\t\t\t// antialias: true,\n\t\t\tcanvas: this._map.getCanvas(),\n\t\t\tcontext: this._gl,\n\t\t});\n\t\tthis._renderer.autoClear = false;\n\t\tthis._renderer.shadowMap.enabled = true;\n\n\t\tthis._cssRendererConfig = CoreCameraCSSRendererController.cssRendererConfig({\n\t\t\tscene: this._scene,\n\t\t\tcamera: this._camera,\n\t\t\tcanvas: this._viewer.canvas(),\n\t\t});\n\t\tconst cssRendererNode = this._cssRendererConfig?.cssRendererNode;\n\t\tif (cssRendererNode) {\n\t\t\tcssRendererNode.mountRenderer(this._viewer.canvas());\n\t\t}\n\t\tconst cssRenderer = this._cssRendererConfig?.cssRenderer;\n\t\tif (cssRenderer) {\n\t\t\tcssRenderer.domElement.style.zIndex = '99999';\n\t\t}\n\t\tthis._renderCSSFunc = cssRenderer ? () => cssRenderer.render(this._displayScene, this._camera) : undefined;\n\n\t\tthis._hack();\n\t}\n\n\tresize(size: Vector2) {\n\t\t// TODO: resize is currently broken.\n\t\t// re-creating a renderer is the only way I found to reliably resize.\n\t\t// It seems that if I only resize,\n\t\t// the render will appear to be the right size (as in no antialiasing issue)\n\t\t// but 3d object end up slipping on the map (as opposed to staying anchored where they are expected to)\n\t\tthis.createRenderer();\n\t\t// this._renderer?.setSize(size.x, size.y);\n\t\tthis._cssRendererConfig?.cssRenderer.setSize(size.x, size.y);\n\t}\n\n\tasync render(gl: WebGLRenderingContext, matrix: number[]) {\n\t\tif (!this._renderer || !this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._displayScene.background) {\n\t\t\tconsole.warn('scene background is not null, this will cover the map and prevent it from being seen');\n\t\t}\n\n\t\tthis._scene.timeController.updateClockDelta();\n\t\tthis._scene.timeController.incrementTimeIfPlaying(TIME_CONTROLLER_UPDATE_TIME_OPTIONS_DEFAULT);\n\n\t\tthis._updateCameraMatrix(matrix);\n\n\t\tthis._renderer.state.reset();\n\t\tthis._renderer.render(this._displayScene, this._camera);\n\t\tthis._map.triggerRepaint();\n\n\t\tif (this._renderCSSFunc) {\n\t\t\tthis._renderCSSFunc();\n\t\t}\n\t}\n\n\t// from https://docs.mapbox.com/mapbox-gl-js/example/add-3d-model/\n\t// this now rotates objects correctly\n\tprivate _vX = new Vector3(1, 0, 0);\n\tprivate _vY = new Vector3(0, 1, 0);\n\tprivate _vZ = new Vector3(0, 0, 1);\n\tprivate mRX = new Matrix4();\n\tprivate mRY = new Matrix4();\n\tprivate mRZ = new Matrix4();\n\tprivate s = new Vector3();\n\tprivate m = new Matrix4();\n\tprivate l = new Matrix4();\n\t_updateCameraMatrix(matrix: number[]) {\n\t\tconst lng_lat = this._viewer.cameraLngLat();\n\t\tif (!lng_lat) {\n\t\t\treturn;\n\t\t}\n\t\tconst mercator = mapboxgl.MercatorCoordinate.fromLngLat([lng_lat.lng, lng_lat.lat], 0);\n\t\tconst transform = {\n\t\t\tposition: mercator,\n\t\t\trotation: {x: Math.PI / 2, y: 0, z: 0},\n\t\t\tscale: CoreMapboxTransform.WORLD_SCALE,\n\t\t};\n\n\t\tthis.mRX.identity();\n\t\tthis.mRY.identity();\n\t\tthis.mRZ.identity();\n\t\tconst rotationX = this.mRX.makeRotationAxis(this._vX, transform.rotation.x);\n\t\tconst rotationY = this.mRY.makeRotationAxis(this._vY, transform.rotation.y);\n\t\tconst rotationZ = this.mRZ.makeRotationAxis(this._vZ, transform.rotation.z);\n\n\t\tthis.s.x = transform.scale;\n\t\tthis.s.y = -transform.scale;\n\t\tthis.s.z = transform.scale;\n\t\tthis.m.fromArray(matrix);\n\t\tthis.l.identity();\n\t\tthis.l\n\t\t\t.makeTranslation(1 * transform.position.x, 1 * transform.position.y, 1 * (transform.position.z || 0))\n\t\t\t.scale(this.s)\n\t\t\t.multiply(rotationX)\n\t\t\t.multiply(rotationY)\n\t\t\t.multiply(rotationZ);\n\n\t\tthis._camera.projectionMatrix.elements = matrix;\n\t\tthis._camera.projectionMatrix = this.m.multiply(this.l);\n\t}\n\n\t// This is a very dirty hack that seems to allow objects to render properly.\n\t// If this was not called,\n\t// all objects created would render for a couple frames and then disappear.\n\t// There sometimes would be an WebGL warning along the lines of \"buffer not large enough\"\n\t// but it is completely unclear what could have caused it.\n\t//\n\t// What I tried to debug this:\n\t//\n\t// - upgrade from mapbox 1 to 2\n\t// this made no difference\n\t//\n\t// - using Babylon Spector\n\t// but I was unable to isolate which call was problematic\n\t//\n\t// - fiddle with renderes options\n\t// that solved nothing\n\t//\n\t// - integrate the mapbox example as a layer instead of this one\n\t// When using the example layer and its included THREE.Scene,\n\t// it renders just fine.\n\t// But as soon as I replace the included scene with the one created by Polygonjs,\n\t// Then the problem reappears.\n\t// That's even if the scene is as simple as a Hemisphere Light and a Plane.\n\t// So that did not allow me to find a solution.\n\t//\n\t// - use src/debug.js (I forgot now where I copied it from)\n\t// to help find bad webgl calls.\n\t// but that didn't help.\n\t//\n\t// - setting Polygonjs scene's objects to\n\t// matrixAutoUpdate = true\n\t// or\n\t// frustumCulled = false\n\t// But that solved nothing.\n\t//\n\t// In short.... WFT?!?!\n\t// But for now, with this hack, it seems to work fine.\n\tprivate _hack() {\n\t\tconst hackObject = new Mesh(new PlaneGeometry());\n\t\thackObject.frustumCulled = false;\n\t\thackObject.position.z = -1000;\n\t\thackObject.scale.set(0.01, 0.01, 0.01);\n\t\tconst scene = this._scene.threejsScene();\n\t\tscene.add(hackObject);\n\t}\n}\n","import { RopType } from \"../../engine/poly/registers/nodes/types/Rop\";\nimport { CoreObject } from \"../geometry/Object\";\nimport { CameraAttribute } from \"./CoreCamera\";\nimport { CoreType } from \"../Type\";\nexport class CoreCameraCSSRendererController {\n  static isCSSRendererNode(node) {\n    return node.type() == RopType.CSS2D || node.type() == RopType.CSS3D;\n  }\n  static cssRendererConfig(options) {\n    const { canvas, scene, camera } = options;\n    const nodeId = CoreObject.attribValue(camera, CameraAttribute.CSS_RENDERER_NODE_ID);\n    if (nodeId == null) {\n      return;\n    }\n    if (!CoreType.isNumber(nodeId)) {\n      return;\n    }\n    const foundNode = scene.graph.nodeFromId(nodeId);\n    if (!foundNode) {\n      return;\n    }\n    if (!this.isCSSRendererNode(foundNode)) {\n      return;\n    }\n    const cssRendererNode = foundNode;\n    const cssRenderer = cssRendererNode.renderer(canvas);\n    return { cssRenderer, cssRendererNode };\n  }\n}\n","export const BuildingsLayer: mapboxgl.AnyLayer = {\n\tid: '3d-buildings',\n\tsource: 'composite',\n\t'source-layer': 'building',\n\tfilter: ['==', 'extrude', 'true'],\n\ttype: 'fill-extrusion',\n\tminzoom: 15,\n\tpaint: {\n\t\t'fill-extrusion-color': '#aaa',\n\n\t\t// use an 'interpolate' expression to add a smooth transition effect to the\n\t\t// buildings as the user zooms in\n\t\t'fill-extrusion-height': ['interpolate', ['linear'], ['zoom'], 15, 0, 15.05, ['get', 'height']],\n\t\t'fill-extrusion-base': ['interpolate', ['linear'], ['zoom'], 15, 0, 15.05, ['get', 'min_height']],\n\t\t'fill-extrusion-opacity': 0.6,\n\t},\n};\n","import {MapboxViewer} from '../../Mapbox';\nimport {ThreejsLayer} from '../layers/Threejs';\nimport {BuildingsLayer} from '../layers/Buildings';\nimport {MapboxCameraObjNode} from '../../../nodes/obj/MapboxCamera';\nimport {Vector2} from 'three';\n\nexport class MapboxViewerLayersController {\n\tpublic _threejsLayer: ThreejsLayer | undefined;\n\tconstructor(private _viewer: MapboxViewer) {}\n\n\taddLayers() {\n\t\tif (!this._viewer.mapLoaded()) {\n\t\t\tconsole.warn('map not loaded');\n\t\t\treturn;\n\t\t}\n\t\tconst map = this._viewer.map();\n\t\tif (!map) {\n\t\t\tconsole.warn('no map found');\n\t\t\treturn;\n\t\t}\n\n\t\tconst current_style = map.getStyle();\n\t\tconst layers = current_style.layers;\n\t\tif (!layers) {\n\t\t\tconsole.warn('no layers found');\n\t\t\treturn;\n\t\t}\n\n\t\tlet label_layer_id = null;\n\t\tfor (let layer of layers) {\n\t\t\tif (layer.type == 'symbol' && (layer.layout as mapboxgl.SymbolLayout)['text-field']) {\n\t\t\t\tlabel_layer_id = layer.id;\n\t\t\t}\n\t\t}\n\t\tconst cameraNode = this._viewer.cameraNode();\n\n\t\tif (label_layer_id != null) {\n\t\t\tthis._addLayerBuildings(map, label_layer_id, cameraNode);\n\t\t\tthis._addLayerThreejs(map, label_layer_id);\n\t\t}\n\n\t\tthis._addLayer3D(map, cameraNode);\n\t\tthis._addLayerSky(map, cameraNode);\n\t}\n\tresize(size: Vector2) {\n\t\tthis._threejsLayer?.resize(size);\n\t}\n\tprivate _addLayer3D(map: mapboxgl.Map, cameraNode: MapboxCameraObjNode) {\n\t\tif (!cameraNode.pv.tlayer3D) {\n\t\t\treturn;\n\t\t}\n\t\tconst scene = cameraNode.scene().threejsScene();\n\t\tif (scene.background != null) {\n\t\t\tconsole.warn(\n\t\t\t\t'the scene has the background set, which may prevent the layers from displaying correctly. Make sure to remove the background.'\n\t\t\t);\n\t\t}\n\n\t\tmap.addSource('mapbox-dem', {\n\t\t\ttype: 'raster-dem',\n\t\t\turl: 'mapbox://mapbox.mapbox-terrain-dem-v1',\n\t\t\ttileSize: 512,\n\t\t\tmaxzoom: 14,\n\t\t});\n\t\t// add the DEM source as a terrain layer with exaggerated height\n\t\tmap.setTerrain({source: 'mapbox-dem', exaggeration: 1.5});\n\t}\n\tprivate _addLayerSky(map: mapboxgl.Map, cameraNode: MapboxCameraObjNode) {\n\t\tif (!cameraNode.pv.tlayerSky) {\n\t\t\treturn;\n\t\t}\n\t\t// add a sky layer that will show when the map is highly pitched\n\t\tmap.addLayer({\n\t\t\tid: 'sky',\n\t\t\ttype: 'sky',\n\t\t\tpaint: {\n\t\t\t\t'sky-type': 'atmosphere',\n\t\t\t\t'sky-atmosphere-sun': [0.0, 0.0],\n\t\t\t\t'sky-atmosphere-sun-intensity': 15,\n\t\t\t},\n\t\t});\n\t}\n\tprivate _addLayerBuildings(map: mapboxgl.Map, label_layer_id: string, cameraNode: MapboxCameraObjNode) {\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\t\tif (!cameraNode.pv.tlayerBuildings) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._hasLayerId(BuildingsLayer.id)) {\n\t\t\treturn;\n\t\t}\n\t\tmap.addLayer(BuildingsLayer, label_layer_id);\n\t}\n\n\tprivate _addLayerThreejs(map: mapboxgl.Map, label_layer_id: string) {\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\t\tconst cameraNode = this._viewer.cameraNode();\n\t\tif (!cameraNode) {\n\t\t\tconsole.warn('no cameraNode found');\n\t\t\treturn;\n\t\t}\n\t\tthis._threejsLayer = new ThreejsLayer(cameraNode, cameraNode.scene().threejsScene(), this._viewer);\n\t\tmap.addLayer(this._threejsLayer, label_layer_id);\n\t\t// const threejsScene = camera_node.scene().threejsScene();\n\t\t// const layer = Threejs3LayerBuilder(threejsScene);\n\t\t// map.addLayer(layer, label_layer_id);\n\t}\n\tprivate _hasLayerId(layer_id: string): boolean {\n\t\tconst map = this._viewer.map();\n\t\tif (map) {\n\t\t\tconst current_style = map.getStyle();\n\t\t\tconst layer_ids = current_style.layers?.map((l) => l.id) || [];\n\t\t\treturn layer_ids.includes(layer_id);\n\t\t}\n\t\treturn false;\n\t}\n}\n","import mapboxgl from 'mapbox-gl';\n\nexport class MapsRegister {\n\tprivate static _instance: MapsRegister;\n\tstatic instance() {\n\t\treturn (this._instance = this._instance || new MapsRegister());\n\t}\n\t_maps_by_id: Map<string, mapboxgl.Map> = new Map();\n\n\tregisterMap(id: string, map: mapboxgl.Map) {\n\t\tthis._maps_by_id.set(id, map);\n\t}\n\tderegisterMap(id: string) {\n\t\tthis._maps_by_id.delete(id);\n\t}\n}\n","import {Raycaster, Vector2, Vector3, Matrix4} from 'three';\nimport {MapboxPerspectiveCamera} from './MapboxPerspectiveCamera';\n\nexport class MapboxRaycaster extends Raycaster {\n\t// @ts-ignore\n\tpublic firstHitOnly = true;\n\n\tprivate _inverse_proj_mat = new Matrix4();\n\tprivate _cam_pos = new Vector3();\n\tprivate _mouse_pos = new Vector3();\n\tprivate _view_dir = new Vector3();\n\n\toverride setFromCamera(mouse: Vector2, camera: MapboxPerspectiveCamera) {\n\t\tthis._inverse_proj_mat.copy(camera.projectionMatrix);\n\t\tthis._inverse_proj_mat.invert();\n\t\tthis._cam_pos.set(0, 0, 0);\n\t\tthis._cam_pos.applyMatrix4(this._inverse_proj_mat);\n\t\tthis._mouse_pos.set(mouse.x, mouse.y, 1);\n\t\tthis._mouse_pos.applyMatrix4(this._inverse_proj_mat);\n\t\tthis._view_dir.copy(this._mouse_pos).sub(this._cam_pos).normalize();\n\t\tthis.set(this._cam_pos, this._view_dir);\n\t}\n}\n","import {Vector2} from 'three';\nimport mapboxgl from 'mapbox-gl';\nimport {MapboxCameraObjNode} from '../nodes/obj/MapboxCamera';\nimport {TypedViewer, TypedViewerOptions} from '@polygonjs/polygonjs/dist/src/engine/viewers/_Base';\nimport {MapboxViewerEventsController} from './utils/controllers/Event';\nimport {MapboxViewerStylesheetController} from './utils/controllers/Stylesheet';\nimport {MapboxViewerLayersController} from './utils/controllers/Layers';\nimport {MapsRegister} from '../../core/mapbox/MapsRegister';\nimport {MapboxPerspectiveCamera} from '../../core/mapbox/MapboxPerspectiveCamera';\nimport {MapboxRaycaster} from '../../core/mapbox/MapboxRaycaster';\nconst CSS_CLASS = 'CoreMapboxViewer';\n\nexport interface MapboxViewerOptions extends TypedViewerOptions<MapboxPerspectiveCamera> {\n\tcameraNode: MapboxCameraObjNode;\n}\n\nexport class MapboxViewer extends TypedViewer<MapboxPerspectiveCamera> {\n\tprivate _canvasContainer: HTMLElement;\n\t// private _canvas: HTMLCanvasElement | undefined;\n\t// private _camera_node: MapboxCameraObjNode | undefined;\n\n\tprivate _map: mapboxgl.Map;\n\tprivate _mapLoaded: boolean = false;\n\tprivate _cameraNode: MapboxCameraObjNode;\n\n\t// controllers\n\tprivate readonly layersController = new MapboxViewerLayersController(this);\n\tprivate readonly mapboxEventController = new MapboxViewerEventsController(this);\n\n\tconstructor(options: MapboxViewerOptions) {\n\t\tsuper(options);\n\t\tthis._cameraNode = options.cameraNode;\n\t\tthis._canvasContainer = document.createElement('div');\n\t\tthis._canvasContainer.id = `mapbox_container_id_${Math.random()}`.replace('.', '_');\n\t\tthis._canvasContainer.style.height = '100%';\n\t\tMapboxViewerStylesheetController.load();\n\t\tthis._map = this._cameraNode.createMap(this._canvasContainer);\n\t}\n\tcameraNode() {\n\t\treturn this._cameraNode;\n\t}\n\toverride async mount(element: HTMLElement) {\n\t\tsuper.mount(element);\n\t\tthis._domElement?.appendChild(this._canvasContainer);\n\t\tthis._domElement?.classList.add(CSS_CLASS);\n\n\t\tthis.mapboxEventController.init_events();\n\t\tthis._map.on('load', () => {\n\t\t\tif (this._map) {\n\t\t\t\tthis._mapLoaded = true;\n\n\t\t\t\tthis._canvas = this._findCanvas();\n\t\t\t\tthis.eventsController().init();\n\t\t\t\tMapsRegister.instance().registerMap(this._canvasContainer.id, this._map);\n\t\t\t\tthis.layersController.addLayers();\n\t\t\t\tthis.mapboxEventController.camera_node_move_end(); // to update mapbox planes\n\t\t\t\twindow.dispatchEvent(new Event('resize')); // helps making sure it is resized correctly\n\t\t\t}\n\t\t});\n\n\t\tthis._map.on('resize', () => {\n\t\t\tthis.onResize();\n\t\t});\n\t\t// window.addEventListener('resize', )\n\t}\n\n\tmapLoaded() {\n\t\treturn this._mapLoaded;\n\t}\n\tmap() {\n\t\treturn this._map;\n\t}\n\tcanvasContainer() {\n\t\treturn this._canvasContainer;\n\t}\n\toverride createRaycaster() {\n\t\treturn new MapboxRaycaster();\n\t}\n\n\tonResize() {\n\t\t// if (this._map) {\n\t\t// \tthis._map.resize();\n\t\t// }\n\t\tconst rect = this._map.getCanvas().getBoundingClientRect();\n\t\tconst size = new Vector2(rect.width, rect.height);\n\t\tthis.layersController.resize(size);\n\t\tthis.mapboxEventController.camera_node_move_end(); // to update mapbox planes\n\t}\n\toverride dispose() {\n\t\tMapsRegister.instance().deregisterMap(this._canvasContainer.id);\n\t\tthis._cameraNode?.removeMap(this._canvasContainer);\n\t\tsuper.dispose();\n\t}\n\n\twaitForMapLoaded() {\n\t\tif (this._map.loaded()) {\n\t\t\treturn;\n\t\t} else {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (this._map) {\n\t\t\t\t\tthis._map.on('load', () => {\n\t\t\t\t\t\tresolve(undefined);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t// canvas(): HTMLCanvasElement {\n\t// \treturn this._canvas;\n\t// }\n\tcameraLngLat() {\n\t\treturn this._cameraNode?.lngLat();\n\t}\n\n\t_addNavigationControls() {\n\t\tconst nav = new mapboxgl.NavigationControl();\n\t\tthis._map?.addControl(nav, 'bottom-right');\n\t}\n\n\tprivate _findCanvas() {\n\t\treturn this._canvasContainer.getElementsByTagName('canvas')[0];\n\t}\n}\n","// let component;\nimport {CoreMapboxClient} from '../../../../core/mapbox/Client';\nimport {CoreStylesheetLoader} from '@polygonjs/polygonjs/dist/src/core/loader/Stylesheet';\n\nexport class MapboxViewerStylesheetController {\n\tstatic async load() {\n\t\tawait CoreStylesheetLoader.loadUrl(CoreMapboxClient.CSS_URL);\n\t}\n}\n","import { Poly } from \"../../engine/Poly\";\nexport class CoreStylesheetLoader {\n  static loadUrl(url) {\n    return new Promise(async (resolve) => {\n      const elements = url.split(\".\");\n      const ext = elements[elements.length - 1];\n      if (ext != \"css\") {\n        url = `${url}.css`;\n      }\n      if (!Poly.inWorkerThread()) {\n        const id = url.replace(/[\\W_]+/g, \"_\");\n        let stylesheet = document.getElementById(id);\n        if (!stylesheet) {\n          stylesheet = document.createElement(\"link\");\n          stylesheet.type = \"text/css\";\n          stylesheet.rel = \"stylesheet\";\n          const performance = Poly.performance.performanceManager();\n          stylesheet.href = `${url}?${performance.now()}`;\n          stylesheet.id = id;\n          stylesheet.addEventListener(\"load\", function() {\n            resolve();\n          });\n          document.getElementsByTagName(\"head\")[0].appendChild(stylesheet);\n        }\n      }\n      resolve();\n    });\n  }\n}\n","import {PolyEngine} from '@polygonjs/polygonjs/dist/src/engine/Poly';\nimport {OnNodeRegisterCallback} from '@polygonjs/polygonjs/dist/src/engine/poly/registers/nodes/NodesRegister';\nimport type {MapboxCameraObjNode} from '../../engine/nodes/obj/MapboxCamera';\nimport {MapboxViewer} from '../../engine/viewers/Mapbox';\nimport {MapboxPerspectiveCamera} from './MapboxPerspectiveCamera';\n\nexport type MapboxCameraObjNodeType = 'mapboxCamera';\nexport const MAPBOX_CAMERA_OBJ_NODE_TYPE: MapboxCameraObjNodeType = 'mapboxCamera';\n\nexport const registerMapboxCamera: OnNodeRegisterCallback = (poly: PolyEngine) => {\n\tpoly.registerCameraNodeType(MAPBOX_CAMERA_OBJ_NODE_TYPE);\n\n\tpoly.registerCamera<MapboxPerspectiveCamera>(MapboxPerspectiveCamera, (options) => {\n\t\tconst {camera, scene} = options;\n\t\t// since the camera is only created via the obj node for now,\n\t\t// we can assume that the path of the camera object and the camera node are the same\n\t\tconst cameraPath = scene.objectsController.objectPath(camera);\n\t\tconst cameraNode = scene.node(cameraPath) as MapboxCameraObjNode;\n\n\t\tconst viewer = new MapboxViewer({\n\t\t\tcameraNode,\n\t\t\tcamera,\n\t\t\tscene,\n\t\t\tupdateCameraAspect: (aspect) => {\n\t\t\t\t// CoreCameraPerspectiveFrameMode.updateCameraAspect(camera, aspect);\n\t\t\t},\n\t\t});\n\t\treturn viewer;\n\t});\n};\n","import type {BaseViewerOptions} from '@polygonjs/polygonjs/dist/src/engine/nodes/obj/_BaseCamera';\nimport {\n\tTypedCameraObjNode,\n\tCameraMainCameraParamConfig,\n} from '@polygonjs/polygonjs/dist/src/engine/nodes/obj/_BaseCamera';\nimport mapboxgl from 'mapbox-gl';\nimport {CoreMapboxClient} from '../../../core/mapbox/Client';\nimport {ParamConfig, NodeParamsConfig} from '@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsConfig';\nimport type {BaseNodeType} from '@polygonjs/polygonjs/dist/src/engine/nodes/_Base';\nimport type {BaseParamType} from '@polygonjs/polygonjs/dist/src/engine/params/_Base';\nimport type {Number2} from '@polygonjs/polygonjs/dist/src/types/GlobalTypes';\nimport {isBooleanTrue} from '@polygonjs/polygonjs/dist/src/core/Type';\nimport {Poly} from '@polygonjs/polygonjs/dist/src/engine/Poly';\nimport {MapboxPerspectiveCamera} from '../../../core/mapbox/MapboxPerspectiveCamera';\nimport type {MapboxCameraObjNodeType} from '../../../core/mapbox/registerMapboxCamera';\nimport {MAPBOX_CAMERA_OBJ_NODE_TYPE, registerMapboxCamera} from '../../../core/mapbox/registerMapboxCamera';\n\nimport {MapboxViewer} from '../../viewers/Mapbox';\nimport {NodeContext} from '@polygonjs/polygonjs/dist/src/engine/poly/NodeContext';\nimport {RopType} from '@polygonjs/polygonjs/dist/src/engine/poly/registers/nodes/types/Rop';\nimport {CameraCSSRendererSopOperation} from '@polygonjs/polygonjs/dist/src/engine/operations/sop/CameraCSSRenderer';\n\nconst PRESETS = {\n\tLONDON: {\n\t\tstyle: 'mapbox://styles/mapbox/dark-v10',\n\t\tlngLat: [-0.07956, 51.5146] as Number2,\n\t},\n\tSAN_FRANCISCO: {\n\t\tstyle: 'mapbox://styles/mapbox/dark-v10',\n\t\tlngLat: [-122.4726194, 37.7577627] as Number2,\n\t},\n\tMOUNTAIN: {\n\t\tstyle: 'mapbox://styles/mapbox-map-design/ckhqrf2tz0dt119ny6azh975y',\n\t\tlngLat: [-114.34411, 32.6141] as Number2,\n\t},\n};\nconst PRESET = PRESETS.LONDON;\nclass MapboxCameraObjParamConfig extends CameraMainCameraParamConfig(NodeParamsConfig) {\n\tstyle = ParamConfig.STRING(PRESET.style, {\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_style(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\tlngLat = ParamConfig.VECTOR2(PRESET.lngLat, {\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_nav(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\tzoom = ParamConfig.FLOAT(15.55, {\n\t\trange: [0, 24],\n\t\trangeLocked: [true, true],\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_nav(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\tzoomRange = ParamConfig.VECTOR2([0, 24], {\n\t\t// range: [0, 24],\n\t\t// rangeLocked: [true, true]\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_nav(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\tpitch = ParamConfig.FLOAT(60, {\n\t\trange: [0, 85],\n\t\trangeLocked: [true, true],\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_nav(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\tbearing = ParamConfig.FLOAT(60.373613, {\n\t\trange: [0, 360],\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_nav(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\tupdateParamsFromMap = ParamConfig.BUTTON(null, {\n\t\tlabel: 'Set Navigation Params as Default',\n\t\tcallback: (node: BaseNodeType, param: BaseParamType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_params_from_map(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\tallowDragRotate = ParamConfig.BOOLEAN(1, {\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_nav(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\taddZoomControl = ParamConfig.BOOLEAN(1, {\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_update_nav(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\t// this.create_player_camera_params();\n\ttlayerBuildings = ParamConfig.BOOLEAN(0);\n\ttlayer3D = ParamConfig.BOOLEAN(0);\n\ttlayerSky = ParamConfig.BOOLEAN(0);\n\t/** @param toggle on to add a CSSRenderer to have html elements on top of the 3D objects */\n\tsetCSSRenderer = ParamConfig.BOOLEAN(0, {\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_updateCameraAttributes(node as MapboxCameraObjNode);\n\t\t},\n\t});\n\t/** @param add a css renderer */\n\tCSSRenderer = ParamConfig.NODE_PATH('', {\n\t\tvisibleIf: {setCSSRenderer: 1},\n\t\tnodeSelection: {\n\t\t\tcontext: NodeContext.ROP,\n\t\t\ttypes: [RopType.CSS2D, RopType.CSS3D],\n\t\t},\n\t\tdependentOnFoundNode: true,\n\t\tcallback: (node: BaseNodeType) => {\n\t\t\tMapboxCameraObjNode.PARAM_CALLBACK_updateCameraAttributes(node as MapboxCameraObjNode);\n\t\t},\n\t});\n}\nconst ParamsConfig = new MapboxCameraObjParamConfig();\n\nexport class MapboxCameraObjNode extends TypedCameraObjNode<MapboxPerspectiveCamera, MapboxCameraObjParamConfig> {\n\toverride paramsConfig = ParamsConfig;\n\tstatic override type(): Readonly<MapboxCameraObjNodeType> {\n\t\treturn MAPBOX_CAMERA_OBJ_NODE_TYPE;\n\t}\n\tstatic override onRegister = registerMapboxCamera;\n\tpublic integration_data() {\n\t\treturn CoreMapboxClient.integration_data();\n\t}\n\n\tprivate _maps_by_container_id: Map<string, mapboxgl.Map> = new Map();\n\tprivate _map_containers_by_container_id: Map<string, HTMLElement> = new Map();\n\tprivate _canvases_by_container_id: Map<string, HTMLCanvasElement> = new Map();\n\tprivate _controls_by_container_id: Map<string, mapboxgl.NavigationControl> = new Map();\n\tprivate _moving_maps = false;\n\n\toverride createObject() {\n\t\treturn new MapboxPerspectiveCamera(); // I use a PerspectiveCamera to have the picker working\n\t}\n\n\toverride async cook() {\n\t\tthis.updateMaps();\n\n\t\tthis._updateCameraAttributes();\n\n\t\tthis.cookController.endCook();\n\t}\n\n\tstatic PARAM_CALLBACK_updateCameraAttributes(node: MapboxCameraObjNode) {\n\t\tnode._updateCameraAttributes();\n\t}\n\n\tprivate _updateCameraAttributes() {\n\t\tconst objects = [this._object];\n\t\tconst node = this;\n\t\tCameraCSSRendererSopOperation.updateObject({\n\t\t\tobjects,\n\t\t\tparams: {node: this.pv.CSSRenderer},\n\t\t\tnode,\n\t\t\tactive: this.pv.setCSSRenderer,\n\t\t});\n\t}\n\n\t// private _inverse_proj_mat = new Matrix4();\n\t// private _cam_pos = new Vector3();\n\t// private _mouse_pos = new Vector3();\n\t// private _view_dir = new Vector3();\n\t// override prepareRaycaster(mouse: Vector2, raycaster: Raycaster) {\n\t// \t// adapted from https://github.com/mapbox/mapbox-gl-js/issues/7395\n\t// \t// const camInverseProjection = this._inverse_proj_mat.getInverse(this._object.projectionMatrix);\n\t// \t// this._cam_pos.set(0, 0, 0);\n\t// \t// this._cam_pos.applyMatrix4(camInverseProjection);\n\t// \t// this._mouse_pos.set(mouse.x, mouse.y, 1);\n\t// \t// this._mouse_pos.applyMatrix4(camInverseProjection);\n\t// \t// this._view_dir.copy(this._mouse_pos).sub(this._cam_pos).normalize();\n\t// \t// raycaster.set(this._cam_pos, this._view_dir);\n\t// \tthis._inverse_proj_mat.copy(this._object.projectionMatrix);\n\t// \tthis._inverse_proj_mat.invert();\n\t// \tthis._cam_pos.set(0, 0, 0);\n\t// \tthis._cam_pos.applyMatrix4(this._inverse_proj_mat);\n\t// \tthis._mouse_pos.set(mouse.x, mouse.y, 1);\n\t// \tthis._mouse_pos.applyMatrix4(this._inverse_proj_mat);\n\t// \tthis._view_dir.copy(this._mouse_pos).sub(this._cam_pos).normalize();\n\t// \traycaster.set(this._cam_pos, this._view_dir);\n\t// }\n\n\tcreateMap(container: HTMLElement) {\n\t\tconst map = new mapboxgl.Map({\n\t\t\tstyle: this.pv.style,\n\t\t\tcontainer,\n\t\t\tcenter: this.pv.lngLat.toArray() as Number2,\n\t\t\tzoom: this.pv.zoom,\n\t\t\tminZoom: this.pv.zoomRange.x,\n\t\t\tmaxZoom: this.pv.zoomRange.y,\n\t\t\tpitch: this.pv.pitch,\n\t\t\tbearing: this.pv.bearing,\n\t\t\t// preserveDrawingBuffer: true,\n\t\t\tdragRotate: this.pv.allowDragRotate,\n\t\t\tpitchWithRotate: this.pv.allowDragRotate,\n\t\t\tantialias: true,\n\t\t});\n\n\t\tthis._updateCameraAttributes();\n\t\tthis._addRemoveControls(map, container.id);\n\n\t\tthis._maps_by_container_id.set(container.id, map);\n\t\tthis._map_containers_by_container_id.set(container.id, container);\n\t\tthis._canvases_by_container_id.set(container.id, container.querySelector('canvas')!);\n\n\t\treturn map;\n\t}\n\n\t// private _fetch_token(){\n\t// \tconst token = POLY.mapbox_token()\n\t// \tif(token){\n\t// \t\treturn token\n\t// \t} else {\n\t// \t\tconst scene = this.scene();\n\t// \t\tconst scene_uuid = scene.uuid();\n\n\t// \t\tlet url;\n\t// \t\tif(scene_uuid){\n\t// \t\t\turl = `/api/scenes/${scene_uuid}/mapbox`;\n\t// \t\t} else {\n\t// \t\t\t// in case the scene has not been saved yet\n\t// \t\t\turl = `/api/account/mapbox_token`;\n\t// \t\t}\n\n\t// \t\treturn new Promise((resolve, reject)=> {\n\t// \t\t\taxios.get(url).then((response)=>{\n\t// \t\t\t\tconst token = response.data.token\n\t// \t\t\t\tPOLY.register_mapbox_token(token)\n\n\t// \t\t\t\tresolve(token)\n\t// \t\t\t}).catch(()=>{\n\t// \t\t\t\tresolve()\n\t// \t\t\t})\n\t// \t\t})\n\t// \t}\n\t// }\n\n\tupdateMaps() {\n\t\tthis._maps_by_container_id.forEach((map, container_id) => {\n\t\t\tthis.updateMapFromContainerId(container_id);\n\t\t});\n\t\tthis._updateCameraAttributes();\n\t}\n\n\t//this.object().dispatchEvent('change')\n\n\tupdateMapFromContainerId(container_id: string) {\n\t\tconst map = this._maps_by_container_id.get(container_id);\n\t\tif (!map) {\n\t\t\treturn;\n\t\t}\n\t\tthis.updateMapNav(map);\n\t\t// controls\n\t\tthis._addRemoveControls(map, container_id);\n\t\t// style\n\t\tmap.setStyle(this.pv.style);\n\t}\n\tupdateMapNav(map: mapboxgl.Map) {\n\t\t// position/zoom/pitch/bearing\n\t\tmap.jumpTo(this.cameraOptionsFromParams());\n\t\tmap.setMinZoom(this.pv.zoomRange.x);\n\t\tmap.setMaxZoom(this.pv.zoomRange.y);\n\n\t\tconst drag_rotate_handler = map.dragRotate;\n\t\tif (isBooleanTrue(this.pv.allowDragRotate)) {\n\t\t\tdrag_rotate_handler.enable();\n\t\t} else {\n\t\t\tdrag_rotate_handler.disable();\n\t\t}\n\t}\n\n\tfirstMap() {\n\t\tlet first_map: mapboxgl.Map | undefined;\n\t\tthis._maps_by_container_id.forEach((map, id) => {\n\t\t\tif (!first_map) {\n\t\t\t\tfirst_map = map;\n\t\t\t}\n\t\t});\n\t\treturn first_map;\n\t}\n\tfirstId() {\n\t\tlet first_id: string | undefined;\n\t\tthis._maps_by_container_id.forEach((map, id) => {\n\t\t\tif (!first_id) {\n\t\t\t\tfirst_id = id;\n\t\t\t}\n\t\t});\n\t\treturn first_id;\n\t}\n\tfirstMapElement() {\n\t\tconst id = this.firstId();\n\t\tif (id) {\n\t\t\treturn this._map_containers_by_container_id.get(id);\n\t\t}\n\t}\n\tbounds() {\n\t\tconst map = this.firstMap();\n\t\tif (map) {\n\t\t\treturn map.getBounds();\n\t\t}\n\t}\n\tzoom() {\n\t\tconst map = this.firstMap();\n\t\tif (map) {\n\t\t\treturn map.getZoom();\n\t\t}\n\t}\n\tcenter() {\n\t\tconst map = this.firstMap();\n\t\tif (map) {\n\t\t\treturn map.getCenter();\n\t\t}\n\t}\n\thorizontal_lng_lat_points() {\n\t\tconst id = this.firstId();\n\t\tif (id) {\n\t\t\t// const x = Math.floor(map._container.clientWidth*0.5*1.01)\n\t\t\t// const y = map._container.clientHeight / 2;\n\t\t\t// return [\n\t\t\t// \tmap.unproject([-x, y]),\n\t\t\t// \tmap.unproject([+x, y])\n\t\t\t// ]\n\t\t\tconst map = this._maps_by_container_id.get(id);\n\t\t\tconst element = this._canvases_by_container_id.get(id);\n\t\t\tif (map && element) {\n\t\t\t\tconst y = element.clientHeight / 2;\n\t\t\t\treturn [map.unproject([0, y]), map.unproject([100, y])];\n\t\t\t}\n\t\t}\n\t}\n\t// vertical_near_lng_lat_point(){\n\t// \tconst map = this.first_map()\n\t// \tif(map){\n\t// \t\tconst x = 0\n\t// \t\tconst y = map._container.clientHeight\n\t// \t\treturn map.unproject([+x, y])\n\t// \t}\n\t// }\n\tcenterLngLatPoint() {\n\t\tconst id = this.firstId();\n\t\tif (id) {\n\t\t\tconst map = this._maps_by_container_id.get(id);\n\t\t\tconst element = this._canvases_by_container_id.get(id);\n\t\t\tif (map && element) {\n\t\t\t\tconst x = element.clientWidth * 0.5;\n\t\t\t\tconst y = element.clientHeight * 0.5;\n\t\t\t\treturn map.unproject([x, y]);\n\t\t\t}\n\t\t}\n\t}\n\tverticalFarLngLatPoints() {\n\t\tconst id = this.firstId();\n\t\tif (id) {\n\t\t\tconst map = this._maps_by_container_id.get(id);\n\t\t\tconst element = this._canvases_by_container_id.get(id);\n\t\t\tif (map && element) {\n\t\t\t\tconst x = element.clientWidth;\n\t\t\t\tconst y = 0;\n\n\t\t\t\treturn [map.unproject([0, y]), map.unproject([x, y])];\n\t\t\t}\n\t\t}\n\t}\n\tverticalNearLngLatPoints() {\n\t\tconst id = this.firstId();\n\t\tif (id) {\n\t\t\tconst map = this._maps_by_container_id.get(id);\n\t\t\tconst element = this._canvases_by_container_id.get(id);\n\t\t\tif (map && element) {\n\t\t\t\tconst x = element.clientWidth;\n\t\t\t\tconst y = element.clientHeight;\n\n\t\t\t\treturn [map.unproject([0, y]), map.unproject([x, y])];\n\t\t\t}\n\t\t}\n\t}\n\t// lng_lat_corners(){\n\t// \tconst map = this.first_map()\n\t// \tif(map){\n\t// \t\tconst x = map._container.clientWidth\n\t// \t\tconst y = map._container.clientHeight\n\t// \t\treturn [\n\t// \t\t\tmap.unproject([0, 0]),\n\t// \t\t\tmap.unproject([0, y]),\n\t// \t\t\tmap.unproject([x, 0]),\n\t// \t\t\tmap.unproject([x, y])\n\t// \t\t]\n\t// \t}\n\t// }\n\n\tremoveMap(container: HTMLElement) {\n\t\tif (container) {\n\t\t\tconst map = this._maps_by_container_id.get(container.id);\n\t\t\tif (map) {\n\t\t\t\tmap.remove();\n\n\t\t\t\tthis._maps_by_container_id.delete(container.id);\n\t\t\t\tthis._map_containers_by_container_id.delete(container.id);\n\t\t\t\tthis._canvases_by_container_id.delete(container.id);\n\t\t\t\tthis._controls_by_container_id.delete(container.id);\n\t\t\t}\n\t\t}\n\t}\n\n\t// allows all mapbox viewers depending on the same camera to sync up\n\t// once one has completed a move\n\tonMoveEnd(container: HTMLElement) {\n\t\tif (this._moving_maps === true) {\n\t\t\treturn;\n\t\t}\n\t\tthis._moving_maps = true; // to avoid infinite loop, as the moved maps will trigger the same event\n\n\t\tif (container != null) {\n\t\t\tconst triggering_map = this._maps_by_container_id.get(container.id);\n\t\t\tif (triggering_map != null) {\n\t\t\t\tconst camera_options = this.cameraOptionsFromMap(triggering_map);\n\t\t\t\tthis._maps_by_container_id.forEach((map, container_id) => {\n\t\t\t\t\tif (container_id !== container.id) {\n\t\t\t\t\t\tconst map = this._maps_by_container_id.get(container_id);\n\t\t\t\t\t\tmap?.jumpTo(camera_options);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.object.dispatchEvent({type: 'moveend'});\n\n\t\tthis._moving_maps = false;\n\t}\n\tlngLat() {\n\t\tconst val = this.pv.lngLat;\n\t\treturn {\n\t\t\tlng: val.x,\n\t\t\tlat: val.y,\n\t\t};\n\t}\n\n\tcameraOptionsFromParams() {\n\t\treturn {\n\t\t\tcenter: this.lngLat(),\n\t\t\tpitch: this.pv.pitch,\n\t\t\tbearing: this.pv.bearing,\n\t\t\tzoom: this.pv.zoom,\n\t\t};\n\t}\n\n\tcameraOptionsFromMap(map: mapboxgl.Map) {\n\t\t// let data;\n\t\t// this.pv.lng_lat.toArray();\n\n\t\treturn {\n\t\t\tcenter: map.getCenter(),\n\t\t\tpitch: map.getPitch(),\n\t\t\tbearing: map.getBearing(),\n\t\t\tzoom: map.getZoom(),\n\t\t};\n\t}\n\n\t_addRemoveControls(map: mapboxgl.Map, container_id: string) {\n\t\tlet nav_control = this._controls_by_container_id.get(container_id);\n\t\tif (nav_control) {\n\t\t\tif (!isBooleanTrue(this.pv.addZoomControl)) {\n\t\t\t\tmap.removeControl(nav_control);\n\t\t\t\tthis._controls_by_container_id.delete(container_id);\n\t\t\t}\n\t\t} else {\n\t\t\tif (isBooleanTrue(this.pv.addZoomControl)) {\n\t\t\t\tnav_control = new mapboxgl.NavigationControl();\n\t\t\t\tmap.addControl(nav_control, 'bottom-right');\n\t\t\t\tthis._controls_by_container_id.set(container_id, nav_control);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateParamsFromMap() {\n\t\tconst map = this.firstMap();\n\t\tif (map) {\n\t\t\tconst center = map.getCenter();\n\t\t\tconst zoom = map.getZoom();\n\t\t\tconst pitch = map.getPitch();\n\t\t\tconst bearing = map.getBearing();\n\t\t\tthis.p.lngLat.set([center.lng, center.lat]);\n\t\t\tthis.p.zoom.set(zoom);\n\t\t\tthis.p.pitch.set(pitch);\n\t\t\tthis.p.bearing.set(bearing);\n\t\t}\n\t}\n\tstatic PARAM_CALLBACK_update_params_from_map(node: MapboxCameraObjNode) {\n\t\tnode.updateParamsFromMap();\n\t}\n\tstatic PARAM_CALLBACK_update_style(node: MapboxCameraObjNode) {\n\t\tnode.updateStyle();\n\t}\n\tstatic PARAM_CALLBACK_update_nav(node: MapboxCameraObjNode) {\n\t\tnode.updateNav();\n\t}\n\tupdateStyle() {\n\t\tthis._maps_by_container_id.forEach((map, container_id) => {\n\t\t\tmap.setStyle(this.pv.style);\n\t\t});\n\t}\n\tupdateNav() {\n\t\tthis._maps_by_container_id.forEach((map) => {\n\t\t\tthis.updateMapNav(map);\n\t\t});\n\t}\n\n\tasync createViewer(options?: BaseViewerOptions | HTMLElement): Promise<MapboxViewer | undefined> {\n\t\tconst viewer = Poly.camerasRegister.createViewer<MapboxPerspectiveCamera>({\n\t\t\tcamera: this.object,\n\t\t\tscene: this.scene() as any,\n\t\t}) as MapboxViewer | undefined;\n\t\tlet element: HTMLElement | undefined;\n\t\tif (options && options instanceof HTMLElement) {\n\t\t\telement = options;\n\t\t} else {\n\t\t\telement = options?.element;\n\t\t}\n\t\tif (viewer && element) {\n\t\t\tviewer.mount(element);\n\t\t}\n\n\t\treturn viewer;\n\t}\n}\n","import type {Vector2} from 'three';\nimport {ArrayUtils} from '@polygonjs/polygonjs/dist/src/core/ArrayUtils';\n\nexport class CoordinatesCollection {\n\tconstructor(public coordinates: Vector2[]) {}\n\tfirst() {\n\t\treturn this.coordinates[0];\n\t}\n\tlast() {\n\t\treturn this.coordinates[this.coordinates.length - 1];\n\t}\n\tprivate distanceTo(features_coordinates: CoordinatesCollection): number {\n\t\tconst d00 = this.first().distanceTo(features_coordinates.first());\n\t\tconst d01 = this.first().distanceTo(features_coordinates.last());\n\t\tconst d10 = this.last().distanceTo(features_coordinates.first());\n\t\tconst d11 = this.last().distanceTo(features_coordinates.last());\n\t\treturn ArrayUtils.min([d00, d01, d10, d11]) as number;\n\t}\n\t// previous_id(features_coordinates_array: CoordinatesCollection[]): number{\n\t// }\n\tnext_id(features_coordinates_array: CoordinatesCollection[]): number {\n\t\tlet nearest_id = -1;\n\t\tlet dist = -1;\n\t\tlet i = 0;\n\t\tfor (let features_coordinates of features_coordinates_array) {\n\t\t\tconst current_dist = this.distanceTo(features_coordinates);\n\t\t\tif (dist == -1 || current_dist < dist) {\n\t\t\t\tdist = current_dist;\n\t\t\t\tnearest_id = i;\n\t\t\t}\n\t\t\ti += 1;\n\t\t}\n\t\treturn nearest_id;\n\t}\n\tperimeter(): number {\n\t\tlet perimeter = 0;\n\t\tlet prev_coordinate = this.coordinates[0];\n\t\tfor (let coordinate of this.coordinates) {\n\t\t\tperimeter += coordinate.distanceTo(prev_coordinate);\n\t\t\tprev_coordinate = coordinate;\n\t\t}\n\n\t\treturn perimeter;\n\t}\n\n\tstatic sort(features_coordinates_array: CoordinatesCollection[]): CoordinatesCollection[] {\n\t\tlet current_feature = features_coordinates_array.shift() as CoordinatesCollection;\n\t\tconst remaining_features = features_coordinates_array;\n\t\tconst sorted_features = [current_feature];\n\n\t\twhile (remaining_features.length > 0) {\n\t\t\tconst next_id = current_feature.next_id(remaining_features);\n\t\t\tcurrent_feature = remaining_features.splice(next_id, 1)[0];\n\t\t\tsorted_features.push(current_feature);\n\t\t}\n\t\treturn sorted_features;\n\t}\n}\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFloat32BufferAttribute,\n\tInstancedBufferAttribute,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tMathUtils,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tTrianglesDrawMode,\n\tVector3,\n} from 'three';\n\nfunction computeTangents() {\n\n\tthrow new Error( 'BufferGeometryUtils: computeTangents renamed to computeMikkTSpaceTangents.' );\n\n}\n\nfunction computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) {\n\n\tif ( ! MikkTSpace || ! MikkTSpace.isReady ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Initialized MikkTSpace library required.' );\n\n\t}\n\n\tif ( ! geometry.hasAttribute( 'position' ) || ! geometry.hasAttribute( 'normal' ) || ! geometry.hasAttribute( 'uv' ) ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Tangents require \"position\", \"normal\", and \"uv\" attributes.' );\n\n\t}\n\n\tfunction getAttributeArray( attribute ) {\n\n\t\tif ( attribute.normalized || attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst srcArray = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\t\t\tconst dstArray = new Float32Array( attribute.getCount() * attribute.itemSize );\n\n\t\t\tfor ( let i = 0, j = 0; i < attribute.getCount(); i ++ ) {\n\n\t\t\t\tdstArray[ j ++ ] = MathUtils.denormalize( attribute.getX( i ), srcArray );\n\t\t\t\tdstArray[ j ++ ] = MathUtils.denormalize( attribute.getY( i ), srcArray );\n\n\t\t\t\tif ( attribute.itemSize > 2 ) {\n\n\t\t\t\t\tdstArray[ j ++ ] = MathUtils.denormalize( attribute.getZ( i ), srcArray );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn dstArray;\n\n\t\t}\n\n\t\tif ( attribute.array instanceof Float32Array ) {\n\n\t\t\treturn attribute.array;\n\n\t\t}\n\n\t\treturn new Float32Array( attribute.array );\n\n\t}\n\n\t// MikkTSpace algorithm requires non-indexed input.\n\n\tconst _geometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\n\t// Compute vertex tangents.\n\n\tconst tangents = MikkTSpace.generateTangents(\n\n\t\tgetAttributeArray( _geometry.attributes.position ),\n\t\tgetAttributeArray( _geometry.attributes.normal ),\n\t\tgetAttributeArray( _geometry.attributes.uv )\n\n\t);\n\n\t// Texture coordinate convention of glTF differs from the apparent\n\t// default of the MikkTSpace library; .w component must be flipped.\n\n\tif ( negateSign ) {\n\n\t\tfor ( let i = 3; i < tangents.length; i += 4 ) {\n\n\t\t\ttangents[ i ] *= - 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\t_geometry.setAttribute( 'tangent', new BufferAttribute( tangents, 4 ) );\n\n\tif ( geometry !== _geometry ) {\n\n\t\tgeometry.copy( _geometry );\n\n\t}\n\n\treturn geometry;\n\n}\n\n/**\n * @param  {Array<BufferGeometry>} geometries\n * @param  {Boolean} useGroups\n * @return {BufferGeometry}\n */\nfunction mergeBufferGeometries( geometries, useGroups = false ) {\n\n\tconst isIndexed = geometries[ 0 ].index !== null;\n\n\tconst attributesUsed = new Set( Object.keys( geometries[ 0 ].attributes ) );\n\tconst morphAttributesUsed = new Set( Object.keys( geometries[ 0 ].morphAttributes ) );\n\n\tconst attributes = {};\n\tconst morphAttributes = {};\n\n\tconst morphTargetsRelative = geometries[ 0 ].morphTargetsRelative;\n\n\tconst mergedGeometry = new BufferGeometry();\n\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\tconst geometry = geometries[ i ];\n\t\tlet attributesCount = 0;\n\n\t\t// ensure that all geometries are indexed, or none\n\n\t\tif ( isIndexed !== ( geometry.index !== null ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather attributes, exit early if they're different\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tif ( ! attributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure \"' + name + '\" attribute exists among all geometries, or in none of them.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( attributes[ name ] === undefined ) attributes[ name ] = [];\n\n\t\t\tattributes[ name ].push( geometry.attributes[ name ] );\n\n\t\t\tattributesCount ++;\n\n\t\t}\n\n\t\t// ensure geometries have the same number of attributes\n\n\t\tif ( attributesCount !== attributesUsed.size ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather morph attributes, exit early if they're different\n\n\t\tif ( morphTargetsRelative !== geometry.morphTargetsRelative ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tif ( ! morphAttributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '.  .morphAttributes must be consistent throughout all geometries.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];\n\n\t\t\tmorphAttributes[ name ].push( geometry.morphAttributes[ name ] );\n\n\t\t}\n\n\t\t// gather .userData\n\n\t\tmergedGeometry.userData.mergedUserData = mergedGeometry.userData.mergedUserData || [];\n\t\tmergedGeometry.userData.mergedUserData.push( geometry.userData );\n\n\t\tif ( useGroups ) {\n\n\t\t\tlet count;\n\n\t\t\tif ( isIndexed ) {\n\n\t\t\t\tcount = geometry.index.count;\n\n\t\t\t} else if ( geometry.attributes.position !== undefined ) {\n\n\t\t\t\tcount = geometry.attributes.position.count;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.addGroup( offset, count, i );\n\n\t\t\toffset += count;\n\n\t\t}\n\n\t}\n\n\t// merge indices\n\n\tif ( isIndexed ) {\n\n\t\tlet indexOffset = 0;\n\t\tconst mergedIndex = [];\n\n\t\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\t\tconst index = geometries[ i ].index;\n\n\t\t\tfor ( let j = 0; j < index.count; ++ j ) {\n\n\t\t\t\tmergedIndex.push( index.getX( j ) + indexOffset );\n\n\t\t\t}\n\n\t\t\tindexOffset += geometries[ i ].attributes.position.count;\n\n\t\t}\n\n\t\tmergedGeometry.setIndex( mergedIndex );\n\n\t}\n\n\t// merge attributes\n\n\tfor ( const name in attributes ) {\n\n\t\tconst mergedAttribute = mergeBufferAttributes( attributes[ name ] );\n\n\t\tif ( ! mergedAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + name + ' attribute.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tmergedGeometry.setAttribute( name, mergedAttribute );\n\n\t}\n\n\t// merge morph attributes\n\n\tfor ( const name in morphAttributes ) {\n\n\t\tconst numMorphTargets = morphAttributes[ name ][ 0 ].length;\n\n\t\tif ( numMorphTargets === 0 ) break;\n\n\t\tmergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {};\n\t\tmergedGeometry.morphAttributes[ name ] = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; ++ i ) {\n\n\t\t\tconst morphAttributesToMerge = [];\n\n\t\t\tfor ( let j = 0; j < morphAttributes[ name ].length; ++ j ) {\n\n\t\t\t\tmorphAttributesToMerge.push( morphAttributes[ name ][ j ][ i ] );\n\n\t\t\t}\n\n\t\t\tconst mergedMorphAttribute = mergeBufferAttributes( morphAttributesToMerge );\n\n\t\t\tif ( ! mergedMorphAttribute ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + name + ' morphAttribute.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );\n\n\t\t}\n\n\t}\n\n\treturn mergedGeometry;\n\n}\n\n/**\n * @param {Array<BufferAttribute>} attributes\n * @return {BufferAttribute}\n */\nfunction mergeBufferAttributes( attributes ) {\n\n\tlet TypedArray;\n\tlet itemSize;\n\tlet normalized;\n\tlet arrayLength = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( itemSize === undefined ) itemSize = attribute.itemSize;\n\t\tif ( itemSize !== attribute.itemSize ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( normalized === undefined ) normalized = attribute.normalized;\n\t\tif ( normalized !== attribute.normalized ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.array.length;\n\n\t}\n\n\tconst array = new TypedArray( arrayLength );\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tarray.set( attributes[ i ].array, offset );\n\n\t\toffset += attributes[ i ].array.length;\n\n\t}\n\n\treturn new BufferAttribute( array, itemSize, normalized );\n\n}\n\n/**\n * @param {Array<BufferAttribute>} attributes\n * @return {Array<InterleavedBufferAttribute>}\n */\nfunction interleaveAttributes( attributes ) {\n\n\t// Interleaves the provided attributes into an InterleavedBuffer and returns\n\t// a set of InterleavedBufferAttributes for each attribute\n\tlet TypedArray;\n\tlet arrayLength = 0;\n\tlet stride = 0;\n\n\t// calculate the the length and type of the interleavedBuffer\n\tfor ( let i = 0, l = attributes.length; i < l; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'AttributeBuffers of different types cannot be interleaved' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.array.length;\n\t\tstride += attribute.itemSize;\n\n\t}\n\n\t// Create the set of buffer attributes\n\tconst interleavedBuffer = new InterleavedBuffer( new TypedArray( arrayLength ), stride );\n\tlet offset = 0;\n\tconst res = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\tfor ( let j = 0, l = attributes.length; j < l; j ++ ) {\n\n\t\tconst attribute = attributes[ j ];\n\t\tconst itemSize = attribute.itemSize;\n\t\tconst count = attribute.count;\n\t\tconst iba = new InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, attribute.normalized );\n\t\tres.push( iba );\n\n\t\toffset += itemSize;\n\n\t\t// Move the data for each attribute into the new interleavedBuffer\n\t\t// at the appropriate offset\n\t\tfor ( let c = 0; c < count; c ++ ) {\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\tiba[ setters[ k ] ]( c, attribute[ getters[ k ] ]( c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn res;\n\n}\n\n// returns a new, non-interleaved version of the provided attribute\nexport function deinterleaveAttribute( attribute ) {\n\n\tconst cons = attribute.data.array.constructor;\n\tconst count = attribute.count;\n\tconst itemSize = attribute.itemSize;\n\tconst normalized = attribute.normalized;\n\n\tconst array = new cons( count * itemSize );\n\tlet newAttribute;\n\tif ( attribute.isInstancedInterleavedBufferAttribute ) {\n\n\t\tnewAttribute = new InstancedBufferAttribute( array, itemSize, normalized, attribute.meshPerAttribute );\n\n\t} else {\n\n\t\tnewAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t}\n\n\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\tnewAttribute.setX( i, attribute.getX( i ) );\n\n\t\tif ( itemSize >= 2 ) {\n\n\t\t\tnewAttribute.setY( i, attribute.getY( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 3 ) {\n\n\t\t\tnewAttribute.setZ( i, attribute.getZ( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 4 ) {\n\n\t\t\tnewAttribute.setW( i, attribute.getW( i ) );\n\n\t\t}\n\n\t}\n\n\treturn newAttribute;\n\n}\n\n// deinterleaves all attributes on the geometry\nexport function deinterleaveGeometry( geometry ) {\n\n\tconst attributes = geometry.attributes;\n\tconst morphTargets = geometry.morphTargets;\n\tconst attrMap = new Map();\n\n\tfor ( const key in attributes ) {\n\n\t\tconst attr = attributes[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tattributes[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n\tfor ( const key in morphTargets ) {\n\n\t\tconst attr = morphTargets[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tmorphTargets[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {Array<BufferGeometry>} geometry\n * @return {number}\n */\nfunction estimateBytesUsed( geometry ) {\n\n\t// Return the estimated memory used by this geometry in bytes\n\t// Calculate using itemSize, count, and BYTES_PER_ELEMENT to account\n\t// for InterleavedBufferAttributes.\n\tlet mem = 0;\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst attr = geometry.getAttribute( name );\n\t\tmem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n\n\t}\n\n\tconst indices = geometry.getIndex();\n\tmem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n\treturn mem;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} tolerance\n * @return {BufferGeometry>}\n */\nfunction mergeVertices( geometry, tolerance = 1e-4 ) {\n\n\ttolerance = Math.max( tolerance, Number.EPSILON );\n\n\t// Generate an index buffer if the geometry doesn't have one, or optimize it\n\t// if it's already available.\n\tconst hashToIndex = {};\n\tconst indices = geometry.getIndex();\n\tconst positions = geometry.getAttribute( 'position' );\n\tconst vertexCount = indices ? indices.count : positions.count;\n\n\t// next value for triangle indices\n\tlet nextIndex = 0;\n\n\t// attributes and new attribute arrays\n\tconst attributeNames = Object.keys( geometry.attributes );\n\tconst attrArrays = {};\n\tconst morphAttrsArrays = {};\n\tconst newIndices = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\n\t// initialize the arrays\n\tfor ( let i = 0, l = attributeNames.length; i < l; i ++ ) {\n\n\t\tconst name = attributeNames[ i ];\n\n\t\tattrArrays[ name ] = [];\n\n\t\tconst morphAttr = geometry.morphAttributes[ name ];\n\t\tif ( morphAttr ) {\n\n\t\t\tmorphAttrsArrays[ name ] = new Array( morphAttr.length ).fill().map( () => [] );\n\n\t\t}\n\n\t}\n\n\t// convert the error tolerance to an amount of decimal places to truncate to\n\tconst decimalShift = Math.log10( 1 / tolerance );\n\tconst shiftMultiplier = Math.pow( 10, decimalShift );\n\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\tconst index = indices ? indices.getX( i ) : i;\n\n\t\t// Generate a hash for the vertex attributes at the current index 'i'\n\t\tlet hash = '';\n\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\tconst name = attributeNames[ j ];\n\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t// double tilde truncates the decimal value\n\t\t\t\thash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * shiftMultiplier ) },`;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add another reference to the vertex if it's already\n\t\t// used by another index\n\t\tif ( hash in hashToIndex ) {\n\n\t\t\tnewIndices.push( hashToIndex[ hash ] );\n\n\t\t} else {\n\n\t\t\t// copy data to the new index in the attribute arrays\n\t\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\t\tconst name = attributeNames[ j ];\n\t\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\t\tconst morphAttr = geometry.morphAttributes[ name ];\n\t\t\t\tconst itemSize = attribute.itemSize;\n\t\t\t\tconst newarray = attrArrays[ name ];\n\t\t\t\tconst newMorphArrays = morphAttrsArrays[ name ];\n\n\t\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t\tconst getterFunc = getters[ k ];\n\t\t\t\t\tnewarray.push( attribute[ getterFunc ]( index ) );\n\n\t\t\t\t\tif ( morphAttr ) {\n\n\t\t\t\t\t\tfor ( let m = 0, ml = morphAttr.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\t\tnewMorphArrays[ m ].push( morphAttr[ m ][ getterFunc ]( index ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\thashToIndex[ hash ] = nextIndex;\n\t\t\tnewIndices.push( nextIndex );\n\t\t\tnextIndex ++;\n\n\t\t}\n\n\t}\n\n\t// Generate typed arrays from new attribute arrays and update\n\t// the attributeBuffers\n\tconst result = geometry.clone();\n\tfor ( let i = 0, l = attributeNames.length; i < l; i ++ ) {\n\n\t\tconst name = attributeNames[ i ];\n\t\tconst oldAttribute = geometry.getAttribute( name );\n\n\t\tconst buffer = new oldAttribute.array.constructor( attrArrays[ name ] );\n\t\tconst attribute = new BufferAttribute( buffer, oldAttribute.itemSize, oldAttribute.normalized );\n\n\t\tresult.setAttribute( name, attribute );\n\n\t\t// Update the attribute arrays\n\t\tif ( name in morphAttrsArrays ) {\n\n\t\t\tfor ( let j = 0; j < morphAttrsArrays[ name ].length; j ++ ) {\n\n\t\t\t\tconst oldMorphAttribute = geometry.morphAttributes[ name ][ j ];\n\n\t\t\t\tconst buffer = new oldMorphAttribute.array.constructor( morphAttrsArrays[ name ][ j ] );\n\t\t\t\tconst morphAttribute = new BufferAttribute( buffer, oldMorphAttribute.itemSize, oldMorphAttribute.normalized );\n\t\t\t\tresult.morphAttributes[ name ][ j ] = morphAttribute;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tresult.setIndex( newIndices );\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} drawMode\n * @return {BufferGeometry>}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tif ( drawMode === TrianglesDrawMode ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.' );\n\t\treturn geometry;\n\n\t}\n\n\tif ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) {\n\n\t\tlet index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tconst indices = [];\n\n\t\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst numberOfTriangles = index.count - 2;\n\t\tconst newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tconst newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\t\tnewGeometry.clearGroups();\n\n\t\treturn newGeometry;\n\n\t} else {\n\n\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode );\n\t\treturn geometry;\n\n\t}\n\n}\n\n/**\n * Calculates the morphed attributes of a morphed/skinned BufferGeometry.\n * Helpful for Raytracing or Decals.\n * @param {Mesh | Line | Points} object An instance of Mesh, Line or Points.\n * @return {Object} An Object with original position/normal attributes and morphed ones.\n */\nfunction computeMorphedAttributes( object ) {\n\n\tif ( object.geometry.isBufferGeometry !== true ) {\n\n\t\tconsole.error( 'THREE.BufferGeometryUtils: Geometry is not of type BufferGeometry.' );\n\t\treturn null;\n\n\t}\n\n\tconst _vA = new Vector3();\n\tconst _vB = new Vector3();\n\tconst _vC = new Vector3();\n\n\tconst _tempA = new Vector3();\n\tconst _tempB = new Vector3();\n\tconst _tempC = new Vector3();\n\n\tconst _morphA = new Vector3();\n\tconst _morphB = new Vector3();\n\tconst _morphC = new Vector3();\n\n\tfunction _calculateMorphedAttributeData(\n\t\tobject,\n\t\tattribute,\n\t\tmorphAttribute,\n\t\tmorphTargetsRelative,\n\t\ta,\n\t\tb,\n\t\tc,\n\t\tmodifiedAttributeArray\n\t) {\n\n\t\t_vA.fromBufferAttribute( attribute, a );\n\t\t_vB.fromBufferAttribute( attribute, b );\n\t\t_vC.fromBufferAttribute( attribute, c );\n\n\t\tconst morphInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphAttribute && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\t\t\t_morphB.set( 0, 0, 0 );\n\t\t\t_morphC.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morph = morphAttribute[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morph, a );\n\t\t\t\t_tempB.fromBufferAttribute( morph, b );\n\t\t\t\t_tempC.fromBufferAttribute( morph, c );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_vA.add( _morphA );\n\t\t\t_vB.add( _morphB );\n\t\t\t_vC.add( _morphC );\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tobject.boneTransform( a, _vA );\n\t\t\tobject.boneTransform( b, _vB );\n\t\t\tobject.boneTransform( c, _vC );\n\n\t\t}\n\n\t\tmodifiedAttributeArray[ a * 3 + 0 ] = _vA.x;\n\t\tmodifiedAttributeArray[ a * 3 + 1 ] = _vA.y;\n\t\tmodifiedAttributeArray[ a * 3 + 2 ] = _vA.z;\n\t\tmodifiedAttributeArray[ b * 3 + 0 ] = _vB.x;\n\t\tmodifiedAttributeArray[ b * 3 + 1 ] = _vB.y;\n\t\tmodifiedAttributeArray[ b * 3 + 2 ] = _vB.z;\n\t\tmodifiedAttributeArray[ c * 3 + 0 ] = _vC.x;\n\t\tmodifiedAttributeArray[ c * 3 + 1 ] = _vC.y;\n\t\tmodifiedAttributeArray[ c * 3 + 2 ] = _vC.z;\n\n\t}\n\n\tconst geometry = object.geometry;\n\tconst material = object.material;\n\n\tlet a, b, c;\n\tconst index = geometry.index;\n\tconst positionAttribute = geometry.attributes.position;\n\tconst morphPosition = geometry.morphAttributes.position;\n\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\tconst normalAttribute = geometry.attributes.normal;\n\tconst morphNormal = geometry.morphAttributes.position;\n\n\tconst groups = geometry.groups;\n\tconst drawRange = geometry.drawRange;\n\tlet i, j, il, jl;\n\tlet group;\n\tlet start, end;\n\n\tconst modifiedPosition = new Float32Array( positionAttribute.count * positionAttribute.itemSize );\n\tconst modifiedNormal = new Float32Array( normalAttribute.count * normalAttribute.itemSize );\n\n\tif ( index !== null ) {\n\n\t\t// indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = index.getX( i );\n\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// non-indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = j;\n\t\t\t\t\tb = j + 1;\n\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = i;\n\t\t\t\tb = i + 1;\n\t\t\t\tc = i + 2;\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst morphedPositionAttribute = new Float32BufferAttribute( modifiedPosition, 3 );\n\tconst morphedNormalAttribute = new Float32BufferAttribute( modifiedNormal, 3 );\n\n\treturn {\n\n\t\tpositionAttribute: positionAttribute,\n\t\tnormalAttribute: normalAttribute,\n\t\tmorphedPositionAttribute: morphedPositionAttribute,\n\t\tmorphedNormalAttribute: morphedNormalAttribute\n\n\t};\n\n}\n\nfunction mergeGroups( geometry ) {\n\n\tif ( geometry.groups.length === 0 ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.' );\n\t\treturn geometry;\n\n\t}\n\n\tlet groups = geometry.groups;\n\n\t// sort groups by material index\n\n\tgroups = groups.sort( ( a, b ) => {\n\n\t\tif ( a.materialIndex !== b.materialIndex ) return a.materialIndex - b.materialIndex;\n\n\t\treturn a.start - b.start;\n\n\t} );\n\n\t// create index for non-indexed geometries\n\n\tif ( geometry.getIndex() === null ) {\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\t\tconst indices = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i += 3 ) {\n\n\t\t\tindices.push( i, i + 1, i + 2 );\n\n\t\t}\n\n\t\tgeometry.setIndex( indices );\n\n\t}\n\n\t// sort index\n\n\tconst index = geometry.getIndex();\n\n\tconst newIndices = [];\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tconst groupStart = group.start;\n\t\tconst groupLength = groupStart + group.count;\n\n\t\tfor ( let j = groupStart; j < groupLength; j ++ ) {\n\n\t\t\tnewIndices.push( index.getX( j ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dispose(); // Required to force buffer recreation\n\tgeometry.setIndex( newIndices );\n\n\t// update groups indices\n\n\tlet start = 0;\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tgroup.start = start;\n\t\tstart += group.count;\n\n\t}\n\n\t// merge groups\n\n\tlet currentGroup = groups[ 0 ];\n\n\tgeometry.groups = [ currentGroup ];\n\n\tfor ( let i = 1; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tif ( currentGroup.materialIndex === group.materialIndex ) {\n\n\t\t\tcurrentGroup.count += group.count;\n\n\t\t} else {\n\n\t\t\tcurrentGroup = group;\n\t\t\tgeometry.groups.push( currentGroup );\n\n\t\t}\n\n\t}\n\n\treturn geometry;\n\n}\n\nexport {\n\tcomputeTangents,\n\tcomputeMikkTSpaceTangents,\n\tmergeBufferGeometries,\n\tmergeBufferAttributes,\n\tinterleaveAttributes,\n\testimateBytesUsed,\n\tmergeVertices,\n\ttoTrianglesDrawMode,\n\tcomputeMorphedAttributes,\n\tmergeGroups\n};\n","import {Vector2} from 'three';\nimport {Object3D} from 'three';\nimport {LineSegments} from 'three';\nimport {Float32BufferAttribute} from 'three';\nimport {BufferGeometry} from 'three';\nimport {CoreGeometry} from '@polygonjs/polygonjs/dist/src/core/geometry/Geometry';\nimport {ObjectType} from '@polygonjs/polygonjs/dist/src/core/geometry/Constant';\nimport {BaseSopNodeType} from '@polygonjs/polygonjs/dist/src/engine/nodes/sop/_Base';\nimport {CoordinatesCollection} from './CoordinatesCollection';\nimport {ArrayUtils} from '@polygonjs/polygonjs/dist/src/core/ArrayUtils';\nimport {CoreGeometryBuilderMerge} from '@polygonjs/polygonjs/dist/src/core/geometry/builders/Merge';\nimport {CoreMapboxString} from './String';\n\nconst MULTILINESTRING = 'MultiLineString';\nconst LINESTRING = 'LineString';\n\nexport class FeatureConverter {\n\tid: number | undefined;\n\tconstructor(private node: BaseSopNodeType, private name: string, private features: any[]) {}\n\n\tcreateObject(): Object3D | undefined {\n\t\tconst coordinatesCollections = this._createAllCoordinatesCollections();\n\t\tconst perimeter: number = ArrayUtils.sum(coordinatesCollections.map((f) => f.perimeter()));\n\t\tconst sortedFeatures = CoordinatesCollection.sort(coordinatesCollections);\n\n\t\tconst lines = sortedFeatures.map((feature) => {\n\t\t\treturn this._createLine(feature);\n\t\t});\n\t\tlines.forEach((line) => {\n\t\t\tconst geometry = line.geometry as BufferGeometry;\n\t\t\tconst core_geometry = new CoreGeometry(geometry);\n\t\t\tcore_geometry.addNumericAttrib('perimeter', 1, perimeter);\n\t\t});\n\n\t\tconst geometries = lines.map((l) => l.geometry) as BufferGeometry[];\n\t\tconst merged_geometry = CoreGeometryBuilderMerge.merge(geometries);\n\t\tif (!merged_geometry) {\n\t\t\treturn;\n\t\t}\n\n\t\t// pti\n\t\tconst core_geometry = new CoreGeometry(merged_geometry);\n\t\tcore_geometry.addNumericAttrib('pti', 1, 0);\n\t\tconst points = core_geometry.points();\n\t\tconst points_count = points.length;\n\t\tfor (let i = 0; i < points.length; i++) {\n\t\t\tconst point = points[i];\n\t\t\tconst pti = i / (points_count - 1);\n\t\t\tpoint.setAttribValue('pti', pti);\n\t\t}\n\n\t\tconst mergedObject = this.node.createObject(merged_geometry, ObjectType.LINE_SEGMENTS);\n\t\treturn mergedObject;\n\t}\n\n\t_createLine(coordinates_collection: CoordinatesCollection): LineSegments {\n\t\tconst points_count = coordinates_collection.coordinates.length;\n\n\t\tconst positions: number[] = [];\n\t\tconst indices: number[] = [];\n\t\tfor (let i = 0; i < points_count; i++) {\n\t\t\tconst coordinates = coordinates_collection.coordinates[i];\n\n\t\t\tpositions.push(coordinates.x);\n\t\t\tpositions.push(0);\n\t\t\tpositions.push(coordinates.y);\n\n\t\t\tif (i > 0) {\n\t\t\t\tindices.push(i - 1);\n\t\t\t\tindices.push(i);\n\t\t\t}\n\t\t}\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute('position', new Float32BufferAttribute(positions, 3));\n\t\tgeometry.setIndex(indices);\n\t\tconst object = this.node.createObject(geometry, ObjectType.LINE_SEGMENTS);\n\n\t\tconst core_geometry = new CoreGeometry(geometry);\n\t\tconst id_from_name = CoreMapboxString.toId(this.name) % 10000000;\n\t\t// console.log(this.name, id_from_name)\n\t\tcore_geometry.addNumericAttrib('id', 1, this.id);\n\t\tcore_geometry.addNumericAttrib('name_id', 1, id_from_name);\n\n\t\treturn object;\n\t}\n\n\tprivate _createAllCoordinatesCollections(): CoordinatesCollection[] {\n\t\tconst coordinates_collections: CoordinatesCollection[] = [];\n\t\tthis.features.forEach((feature) => {\n\t\t\tthis.id = this.id || feature['id'];\n\n\t\t\tconst feature_geometry = feature.geometry;\n\t\t\tif (feature_geometry) {\n\t\t\t\tconst type = feature_geometry['type'];\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase MULTILINESTRING:\n\t\t\t\t\t\tconst multi_coordinates = feature_geometry['coordinates'];\n\t\t\t\t\t\tif (multi_coordinates) {\n\t\t\t\t\t\t\tfor (let i = 0; i < multi_coordinates.length; i++) {\n\t\t\t\t\t\t\t\tconst coordinates = multi_coordinates[i];\n\t\t\t\t\t\t\t\tcoordinates_collections.push(this._create_coordinates(coordinates));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LINESTRING:\n\t\t\t\t\t\tcoordinates_collections.push(this._create_coordinates(feature_geometry['coordinates']));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn(`type ${type} not taken into account`);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn coordinates_collections;\n\t}\n\tprivate _create_coordinates(raw_coordinates: [number, number][]): CoordinatesCollection {\n\t\tconst vectors = raw_coordinates.map((raw_coordinate) => {\n\t\t\treturn new Vector2(raw_coordinate[0], raw_coordinate[1]);\n\t\t});\n\t\treturn new CoordinatesCollection(vectors);\n\t}\n}\n","import { CoreGeometry } from \"../Geometry\";\nimport { mergeBufferGeometries } from \"../../../modules/three/examples/jsm/utils/BufferGeometryUtils\";\nimport { CoreGeometryIndexBuilder } from \"../util/IndexBuilder\";\nexport class CoreGeometryBuilderMerge {\n  static merge(geometries) {\n    if (geometries.length === 0) {\n      return;\n    }\n    for (let geometry of geometries) {\n      CoreGeometryIndexBuilder.createIndexIfNone(geometry);\n    }\n    const core_geometries = geometries.map((geometry) => new CoreGeometry(geometry));\n    const indexed_attribute_names = core_geometries[0].indexedAttributeNames();\n    const new_values_by_attribute_name = {};\n    for (let indexed_attribute_name of indexed_attribute_names) {\n      const index_by_values = {};\n      const all_geometries_points = [];\n      for (let core_geometry of core_geometries) {\n        const geometry_points = core_geometry.points();\n        for (let point of geometry_points) {\n          all_geometries_points.push(point);\n          const value = point.indexedAttribValue(indexed_attribute_name);\n          index_by_values[value] != null ? index_by_values[value] : index_by_values[value] = Object.keys(index_by_values).length;\n        }\n      }\n      const values = Object.keys(index_by_values);\n      for (let point of all_geometries_points) {\n        const value = point.indexedAttribValue(indexed_attribute_name);\n        const new_index = index_by_values[value];\n        point.setAttribIndex(indexed_attribute_name, new_index);\n      }\n      new_values_by_attribute_name[indexed_attribute_name] = values;\n    }\n    const merged_geometry = mergeBufferGeometries(geometries);\n    const merged_core_geometry = new CoreGeometry(merged_geometry);\n    Object.keys(new_values_by_attribute_name).forEach((indexed_attribute_name) => {\n      const values = new_values_by_attribute_name[indexed_attribute_name];\n      merged_core_geometry.setIndexedAttributeValues(indexed_attribute_name, values);\n    });\n    if (merged_geometry) {\n      delete merged_geometry.userData.mergedUserData;\n    }\n    return merged_geometry;\n  }\n}\n","export class CoreMapboxString {\n\tstatic toId(val: string): number {\n\t\tif (val == null) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst elements = val.split('').reverse();\n\t\tlet id = 0;\n\t\tlet exp = 0;\n\t\tfor (let i = 0; i < elements.length; i++) {\n\t\t\tlet index = elements[i].charCodeAt(0);\n\n\t\t\tif (index >= 0) {\n\t\t\t\texp = i % 10;\n\t\t\t\tid += index * 10 ** exp;\n\t\t\t\tid = id % Number.MAX_SAFE_INTEGER;\n\t\t\t}\n\t\t}\n\t\treturn id;\n\t}\n}\n","var EVENT = /* @__PURE__ */ ((EVENT2) => {\n  EVENT2[\"CHANGE\"] = \"change\";\n  EVENT2[\"MOVEEND\"] = \"moveend\";\n  return EVENT2;\n})(EVENT || {});\nexport class CameraController {\n  constructor(_callback) {\n    this._callback = _callback;\n    this._updateAlways = true;\n    this._listenerAdded = false;\n    this._listener = this._executeCallback.bind(this);\n  }\n  removeTarget() {\n    this.setTarget(void 0);\n  }\n  setTarget(target) {\n    if (!target) {\n      this._removeCameraEvent();\n    }\n    const old_target = this._target;\n    this._target = target;\n    if (this._target != null) {\n      this._executeCallback();\n    }\n    if ((this._target != null ? this._target.uuid : void 0) !== (old_target != null ? old_target.uuid : void 0)) {\n      this._addCameraEvent();\n    }\n  }\n  setUpdateAlways(newUpdateAlways) {\n    this._removeCameraEvent();\n    this._updateAlways = newUpdateAlways;\n    this._addCameraEvent();\n  }\n  _currentEventName() {\n    if (this._updateAlways) {\n      return \"change\" /* CHANGE */;\n    } else {\n      return \"moveend\" /* MOVEEND */;\n    }\n  }\n  _addCameraEvent() {\n    if (this._listenerAdded) {\n      return;\n    }\n    if (this._target != null) {\n      this._target.addEventListener(this._currentEventName(), this._listener);\n      this._listenerAdded = true;\n    }\n  }\n  _removeCameraEvent() {\n    if (this._listenerAdded !== true) {\n      return;\n    }\n    if (this._target != null) {\n      this._target.removeEventListener(this._currentEventName(), this._listener);\n      this._listenerAdded = false;\n    }\n  }\n  _executeCallback() {\n    if (this._target != null) {\n      this._callback(this._target);\n    }\n  }\n}\n","import { TypedNode } from \"../_Base\";\nimport { CoreGroup } from \"../../../core/geometry/Group\";\nimport { ObjectType } from \"../../../core/geometry/Constant\";\nimport { NodeContext } from \"../../poly/NodeContext\";\nimport { FlagsControllerDBO } from \"../utils/FlagsController\";\nimport { BaseSopOperation } from \"../../operations/sop/_Base\";\nvar MESSAGE = /* @__PURE__ */ ((MESSAGE2) => {\n  MESSAGE2[\"FROM_SET_CORE_GROUP\"] = \"from set_core_group\";\n  MESSAGE2[\"FROM_SET_GROUP\"] = \"from set_group\";\n  MESSAGE2[\"FROM_SET_OBJECTS\"] = \"from set_objects\";\n  MESSAGE2[\"FROM_SET_OBJECT\"] = \"from set_object\";\n  MESSAGE2[\"FROM_SET_GEOMETRIES\"] = \"from set_geometries\";\n  MESSAGE2[\"FROM_SET_GEOMETRY\"] = \"from set_geometry\";\n  return MESSAGE2;\n})(MESSAGE || {});\nconst INPUT_GEOMETRY_NAME = \"input geometry\";\nconst DEFAULT_INPUT_NAMES = [INPUT_GEOMETRY_NAME, INPUT_GEOMETRY_NAME, INPUT_GEOMETRY_NAME, INPUT_GEOMETRY_NAME];\nexport class TypedSopNode extends TypedNode {\n  constructor() {\n    super(...arguments);\n    this.flags = new FlagsControllerDBO(this);\n  }\n  static context() {\n    return NodeContext.SOP;\n  }\n  static displayedInputNames() {\n    return DEFAULT_INPUT_NAMES;\n  }\n  initializeBaseNode() {\n    this.flags.display.set(false);\n    this.flags.display.onUpdate(() => {\n      if (this.flags.display.active()) {\n        const parent = this.parent();\n        if (parent && parent.displayNodeController) {\n          parent.displayNodeController.setDisplayNode(this);\n        }\n      }\n    });\n    this.io.outputs.setHasOneOutput();\n  }\n  setCoreGroup(core_group) {\n    this._setContainer(core_group, \"from set_core_group\" /* FROM_SET_CORE_GROUP */);\n  }\n  setObject(object) {\n    this._setContainerObjects([object], \"from set_object\" /* FROM_SET_OBJECT */);\n  }\n  setObjects(objects) {\n    this._setContainerObjects(objects, \"from set_objects\" /* FROM_SET_OBJECTS */);\n  }\n  setGeometry(geometry, type = ObjectType.MESH) {\n    const object = this.createObject(geometry, type);\n    this._setContainerObjects([object], \"from set_geometry\" /* FROM_SET_GEOMETRY */);\n  }\n  setGeometries(geometries, type = ObjectType.MESH) {\n    const objects = [];\n    let object;\n    for (let geometry of geometries) {\n      object = this.createObject(geometry, type);\n      objects.push(object);\n    }\n    this._setContainerObjects(objects, \"from set_geometries\" /* FROM_SET_GEOMETRIES */);\n  }\n  _setContainerObjects(objects, message) {\n    const core_group = this.containerController.container().coreContent() || new CoreGroup();\n    core_group.setObjects(objects);\n    core_group.touch();\n    this._setContainer(core_group);\n  }\n  static createObject(geometry, type, material) {\n    return BaseSopOperation.createObject(geometry, type, material);\n  }\n  createObject(geometry, type, material) {\n    return TypedSopNode.createObject(geometry, type, material);\n  }\n  static createIndexIfNone(geometry) {\n    BaseSopOperation.createIndexIfNone(geometry);\n  }\n  _createIndexIfNone(geometry) {\n    TypedSopNode.createIndexIfNone(geometry);\n  }\n}\nexport class BaseSopNodeClass extends TypedSopNode {\n}\n","import {CameraController} from '@polygonjs/polygonjs/dist/src/core/CameraController';\nimport {NodeContext} from '@polygonjs/polygonjs/dist/src/engine/poly/NodeContext';\nimport {MapboxCameraObjNode} from '../../../nodes/obj/MapboxCamera';\nimport {TypedSopNode} from '@polygonjs/polygonjs/dist/src/engine/nodes/sop/_Base';\nimport {NodeParamsConfig, ParamConfig} from '@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsConfig';\nimport {BaseNodeType} from '@polygonjs/polygonjs/dist/src/engine/nodes/_Base';\nimport {PerspectiveCamera} from 'three';\nimport {Constructor} from '@polygonjs/polygonjs/dist/src/types/GlobalTypes';\nexport function MapboxListenerParamConfig<TBase extends Constructor>(Base: TBase) {\n\treturn class Mixin extends Base {\n\t\t// if use bounds\n\t\tuseBounds = ParamConfig.BOOLEAN(0, {hidden: true});\n\t\tsouthWest = ParamConfig.VECTOR2([-0.11, 51.51], {\n\t\t\tvisibleIf: {useBounds: 1},\n\t\t});\n\t\tnorthEast = ParamConfig.VECTOR2([-0.1, 51.52], {\n\t\t\tvisibleIf: {useBounds: 1},\n\t\t});\n\t\t// if use zoom\n\t\tuseZoom = ParamConfig.BOOLEAN(0, {hidden: true});\n\t\tzoom = ParamConfig.FLOAT(0, {\n\t\t\tvisibleIf: {useZoom: 1},\n\t\t});\n\t\t// always\n\t\tmapboxCamera = ParamConfig.NODE_PATH('', {\n\t\t\tnodeSelection: {\n\t\t\t\tcontext: NodeContext.OBJ,\n\t\t\t\ttypes: [MapboxCameraObjNode.type()],\n\t\t\t},\n\t\t\tcallback: (node: BaseNodeType) => {\n\t\t\t\tMapboxListenerSopNode.PARAM_CALLBACK_update_mapbox_camera(\n\t\t\t\t\tnode as MapboxListenerSopNode<MapboxListenerParamsConfig>\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t\tzoomRange = ParamConfig.VECTOR2([0, 24]);\n\t\t// if updateAlwaysAllowed\n\t\tupdateAlwaysAllowed = ParamConfig.BOOLEAN(0, {hidden: true});\n\t\tupdateAlways = ParamConfig.BOOLEAN(0, {\n\t\t\tvisibleIf: {updateAlwaysAllowed: 1},\n\t\t});\n\t};\n}\n\nclass MapboxListenerParamsConfig extends MapboxListenerParamConfig(NodeParamsConfig) {}\nexport abstract class MapboxListenerSopNode<M extends MapboxListenerParamsConfig> extends TypedSopNode<M> {\n\tprotected _mapboxListener: MapboxListener = new MapboxListener(this as MapboxListenerSopNodeWithParams);\n\tprotected _cameraNode: MapboxCameraObjNode | undefined;\n\n\tstatic PARAM_CALLBACK_update_mapbox_camera(node: MapboxListenerSopNode<MapboxListenerParamsConfig>) {\n\t\tnode.updateMapboxCamera();\n\t}\n\tupdateMapboxCamera() {\n\t\tthis._cameraNode = this.findCameraNode();\n\t}\n\tcameraNode() {\n\t\treturn this._cameraNode;\n\t}\n\tcameraObject(): PerspectiveCamera | undefined {\n\t\treturn this._cameraNode?.object;\n\t}\n\tfindCameraNode(): MapboxCameraObjNode | undefined {\n\t\tconst node = this.pv.mapboxCamera.nodeWithContext(NodeContext.OBJ, this.states.error);\n\t\tif (node) {\n\t\t\tif (node.type() == MapboxCameraObjNode.type()) {\n\t\t\t\treturn node as MapboxCameraObjNode;\n\t\t\t} else {\n\t\t\t\tthis.states.error.set('found node is not a mapbox camera');\n\t\t\t}\n\t\t}\n\t}\n\tabstract _postInitController(): void;\n}\n\nclass MapboxListenerSopNodeWithParams extends MapboxListenerSopNode<MapboxListenerParamsConfig> {\n\toverride paramsConfig = new MapboxListenerParamsConfig();\n\t_postInitController() {}\n}\n\nexport class MapboxListener {\n\tprivate _current_camera_path: string | undefined;\n\tprivate _camera_controller: CameraController;\n\tconstructor(private _node: MapboxListenerSopNodeWithParams) {\n\t\tthis._camera_controller = new CameraController(this._updateFromCamera.bind(this));\n\t}\n\n\t// _init_mapbox_listener() {\n\t// \t// POLY.register_map_listener(this);\n\t// }\n\t// init_camera_controller() {\n\n\t// }\n\tasync cook() {\n\t\tlet cameraNode = this._node.cameraNode();\n\t\tif (!cameraNode) {\n\t\t\tthis._node.updateMapboxCamera();\n\t\t\tthis._updateCameraController();\n\t\t}\n\t\tcameraNode = this._node.cameraNode();\n\t\tif (!cameraNode) {\n\t\t\tthis._node.setObjects([]);\n\t\t\treturn;\n\t\t}\n\n\t\tlet zoom = cameraNode.zoom();\n\t\tconst isMapboxActive = cameraNode != null;\n\t\tconst isZoomInRange = zoom != null && zoom > this._node.pv.zoomRange.x && zoom < this._node.pv.zoomRange.y;\n\n\t\tconst doPostInitController = !isMapboxActive || isZoomInRange;\n\n\t\tif (doPostInitController) {\n\t\t\tthis._node._postInitController();\n\t\t} else {\n\t\t\tthis._node.setObjects([]);\n\t\t}\n\t}\n\n\t_updateCameraController() {\n\t\tthis._camera_controller.setUpdateAlways(this._node.pv.updateAlways || false);\n\n\t\tif (this._current_camera_path == null || this._current_camera_path !== this._node.pv.mapboxCamera.path()) {\n\t\t\tconst cameraObject = this._node.cameraObject();\n\t\t\tif (cameraObject) {\n\t\t\t\t// if (this._is_mapbox_camera(this._camera_object)) {\n\t\t\t\tthis._camera_controller.setTarget(cameraObject);\n\t\t\t\t// } else {\n\t\t\t\t// \tthis.set_error(\"camera must be a mapbox camera\");\n\t\t\t\t// \tthis._camera_controller.remove_target();\n\t\t\t\t// }\n\t\t\t} else {\n\t\t\t\tthis._camera_controller.removeTarget();\n\t\t\t}\n\n\t\t\tthis._current_camera_path = this._node.pv.mapboxCamera.path();\n\t\t}\n\t}\n\n\t_updateFromCamera() {\n\t\tif (this._node.cookController.isCooking()) {\n\t\t\t// TODO: this should be added to a queue instead\n\t\t\t// or once the params are safer, simple run now\n\t\t\tsetTimeout(this._updateFromCamera.bind(this), 1000);\n\t\t} else {\n\t\t\tconst hasZoomParam = this._node.pv.useZoom;\n\t\t\tconst hasBoundsParams = this._node.pv.useBounds;\n\n\t\t\tconst cooker = this._node.scene().cooker;\n\t\t\tif (hasBoundsParams || hasZoomParam) {\n\t\t\t\tcooker.block();\n\t\t\t}\n\t\t\tconst cameraNode = this._node.cameraNode();\n\n\t\t\tif (hasBoundsParams) {\n\t\t\t\tconst sw_param = this._node.p.southWest;\n\t\t\t\tconst ne_param = this._node.p.northEast;\n\t\t\t\tif (cameraNode) {\n\t\t\t\t\tconst bounds = cameraNode.bounds();\n\t\t\t\t\tif (cameraNode != null && bounds != null) {\n\t\t\t\t\t\tconst sw = bounds.getSouthWest();\n\t\t\t\t\t\tconst ne = bounds.getNorthEast();\n\n\t\t\t\t\t\tsw_param.set([sw.lng, sw.lat]);\n\t\t\t\t\t\tne_param.set([ne.lng, ne.lat]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasZoomParam) {\n\t\t\t\tif (cameraNode) {\n\t\t\t\t\tconst zoom = cameraNode.zoom();\n\t\t\t\t\tif (zoom) {\n\t\t\t\t\t\tthis._node.p.zoom.set(zoom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hasBoundsParams || hasZoomParam) {\n\t\t\t\tcooker.unblock();\n\t\t\t}\n\n\t\t\tif (!hasBoundsParams && !hasZoomParam) {\n\t\t\t\tthis._node.setDirty();\n\t\t\t}\n\t\t}\n\t}\n\n\t// update_mapbox_camera() {\n\t// \tthis._node.camera_node = this._found_camera_node();\n\t// }\n\t// private _found_camera_node() {\n\t// \tconst node = this._node.p.mapbox_camera.found_node();\n\t// \tif (node) {\n\t// \t\tif (\n\t// \t\t\tnode.node_context() == NodeContext.OBJ &&\n\t// \t\t\tnode.type == MapboxCameraObjNode.type()\n\t// \t\t) {\n\t// \t\t\treturn node as MapboxCameraObjNode;\n\t// \t\t}\n\t// \t}\n\t// }\n\n\t// private _found_camera_object() {\n\t// \treturn this._camera_node?.object;\n\t// }\n\n\t// _is_mapbox_camera() {\n\t// \t// TODO\n\t// \treturn true;\n\t// }\n}\n","/**\n * Creates Mapbox layers.\n *\n * @remarks\n * This is best used with the Mapbox camera.\n * Note that you will need a mapbox key to use this node.\n */\nimport {Object3D} from 'three';\nimport {CoreString} from '@polygonjs/polygonjs/dist/src/core/String';\nimport {FeatureConverter} from '../../../core/mapbox/FeatureConverter';\n\n// const MULTILINESTRING = 'MultiLineString'\n// const LINESTRING = 'LineString'\n\nconst DEFAULT_LIST: Readonly<string> = [\n\t// 'road-motorway-trunk', // not found in prod, need to investigate\n\t'road-primary',\n\t'road-secondary-tertiary',\n\t'road-street',\n].join(' ');\n\nimport {NodeParamsConfig, ParamConfig} from '@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsConfig';\nimport {MapboxListenerParamConfig, MapboxListenerSopNode} from './utils/MapboxListener';\nimport {MapUtils} from '@polygonjs/polygonjs/dist/src/core/MapUtils';\nimport {ArrayUtils} from '@polygonjs/polygonjs/dist/src/core/ArrayUtils';\n// use_bounds: false,\n// update_always_allowed: false\nclass MapboxLayerSopParamsConfig extends MapboxListenerParamConfig(NodeParamsConfig) {\n\t/** @param names of layers to create */\n\tlayers = ParamConfig.STRING(DEFAULT_LIST);\n}\nconst ParamsConfig = new MapboxLayerSopParamsConfig();\n\nexport class MapboxLayerSopNode extends MapboxListenerSopNode<MapboxLayerSopParamsConfig> {\n\toverride paramsConfig = ParamsConfig;\n\tstatic override type() {\n\t\treturn 'mapboxLayer';\n\t}\n\n\toverride cook() {\n\t\tthis._mapboxListener.cook();\n\t}\n\n\t_postInitController() {\n\t\tif (!this._cameraNode) {\n\t\t\treturn;\n\t\t}\n\t\tconst firstMap = this._cameraNode.firstMap();\n\t\tif (firstMap == null) {\n\t\t\tthis.states.error.set('map not initialized yet');\n\t\t\treturn;\n\t\t}\n\t\tconst layerNames = CoreString.attribNames(this.pv.layers);\n\t\tconst existingLayerNames: string[] = [];\n\t\tfor (let layerName of layerNames) {\n\t\t\tif (firstMap.getLayer(layerName)) {\n\t\t\t\texistingLayerNames.push(layerName);\n\t\t\t} else {\n\t\t\t\t// const layers = first_map.getStyle().layers;\n\t\t\t\tthis.states.error.set(`layer ${layerName} does not exist`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst features = firstMap.queryRenderedFeatures(undefined, {\n\t\t\tlayers: existingLayerNames,\n\t\t});\n\n\t\tconst objects: Object3D[] = [];\n\t\tif (features) {\n\t\t\tconst featuresByName = this._groupFeaturesByName(features);\n\n\t\t\tfeaturesByName.forEach((featuresForName, featureName) => {\n\t\t\t\tconst converter = new FeatureConverter(this, featureName, featuresForName);\n\t\t\t\tconst new_object = converter.createObject();\n\t\t\t\tif (new_object) {\n\t\t\t\t\tobjects.push(new_object);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis.setObjects(objects);\n\t}\n\n\tprivate _features_by_name: Map<string, mapboxgl.MapboxGeoJSONFeature[]> = new Map();\n\tprivate _groupFeaturesByName(\n\t\tfeatures: mapboxgl.MapboxGeoJSONFeature[]\n\t): Map<string, mapboxgl.MapboxGeoJSONFeature[]> {\n\t\tthis._features_by_name.clear();\n\t\tfor (let feature of features) {\n\t\t\tconst name = this._feature_name(feature);\n\t\t\tif (name) {\n\t\t\t\tMapUtils.pushOnArrayAtEntry(this._features_by_name, name, feature);\n\t\t\t}\n\t\t}\n\t\treturn this._features_by_name;\n\t}\n\n\tprivate _feature_name(feature: mapboxgl.MapboxGeoJSONFeature): string | undefined {\n\t\tconst properties = feature['properties'];\n\t\tlet name: string | undefined;\n\t\tif (properties) {\n\t\t\tname = properties['name'] || properties['name_en']; //|| Math.floor(Math.random()*100000000)\n\t\t\tif (name == null) {\n\t\t\t\tname = this._id_from_feature(feature);\n\t\t\t}\n\t\t}\n\t\treturn name;\n\t}\n\tprivate _id_from_feature(feature: mapboxgl.MapboxGeoJSONFeature): string {\n\t\tconst json_str = JSON.stringify(feature.geometry).replace(/{|}|\"|:|\\[|\\]|,|\\./g, '');\n\t\tconst json_str_elements = json_str.split('');\n\t\tconst letters_count = 30;\n\t\tconst chunks = ArrayUtils.chunk(json_str_elements, json_str_elements.length / letters_count);\n\t\tconst first_elements = chunks.map((c) => c[0]);\n\n\t\treturn first_elements.join('');\n\t}\n}\n","import { BufferGeometry } from \"three\";\nimport { BufferAttribute } from \"three\";\nexport class CoreGeometryOperationHexagon {\n  constructor(_param_size, _param_hexagon_radius, _param_points_only) {\n    this._param_size = _param_size;\n    this._param_hexagon_radius = _param_hexagon_radius;\n    this._param_points_only = _param_points_only;\n  }\n  process() {\n    const side_length = this._param_hexagon_radius;\n    const half_side_length = side_length * 0.5;\n    const step_size = {\n      x: side_length,\n      y: Math.cos(Math.PI / 6) * this._param_hexagon_radius\n    };\n    const steps_count = {\n      x: Math.floor(this._param_size.x / step_size.x),\n      y: Math.floor(this._param_size.y / step_size.y)\n    };\n    let positions = [];\n    let indices = [];\n    for (let y = 0; y < steps_count.y; y++) {\n      for (let x = 0; x < steps_count.x; x++) {\n        positions.push([\n          -(this._param_size.x * 0.5) + x * step_size.x + (y % 2 == 0 ? half_side_length : 0),\n          0,\n          -(this._param_size.y * 0.5) + y * step_size.y\n        ]);\n        if (!this._param_points_only) {\n          if (y >= 1) {\n            if (x == 0 || x == steps_count.x - 1) {\n              if (x == 0) {\n                indices.push([\n                  x + 1 + (y - 1) * steps_count.x,\n                  x + (y - 1) * steps_count.x,\n                  x + y * steps_count.x\n                ]);\n              } else {\n                indices.push([\n                  x + y * steps_count.x,\n                  x + (y - 1) * steps_count.x,\n                  x - 1 + y * steps_count.x\n                ]);\n              }\n            } else {\n              indices.push([\n                x + y * steps_count.x,\n                x + (y - 1) * steps_count.x,\n                x - 1 + y * steps_count.x\n              ]);\n              indices.push([\n                x + y * steps_count.x,\n                x + 1 + (y - 1) * steps_count.x,\n                x + (y - 1) * steps_count.x\n              ]);\n            }\n          }\n        }\n      }\n    }\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new BufferAttribute(new Float32Array(positions.flat()), 3));\n    if (!this._param_points_only) {\n      geometry.setIndex(indices.flat());\n      geometry.computeVertexNormals();\n    }\n    return geometry;\n  }\n}\n","import {MapboxPlaneSopNode} from '../../MapboxPlane';\nimport {Vector2} from 'three';\nimport {Vector3} from 'three';\nimport {BufferGeometry} from 'three';\nimport {CoreGeometryOperationHexagon} from '@polygonjs/polygonjs/dist/src/core/geometry/operation/Hexagon';\nimport {CoreTransform} from '@polygonjs/polygonjs/dist/src/core/Transform';\nimport {Vector2Like} from '@polygonjs/polygonjs/dist/src/types/GlobalTypes';\n\nconst DIR_ORIGIN = new Vector3(0, 1, 0);\nconst DIR_DEST = new Vector3(0, 0, 1);\nexport class MapboxPlaneHexagonsController {\n\tprivate _coreTransform = new CoreTransform();\n\tconstructor(private node: MapboxPlaneSopNode) {}\n\n\tgeometry(plane_dimensions: Vector2, segments_counts: Vector2Like): BufferGeometry {\n\t\t// for the hexagons, we have a constraint which is that\n\t\t// we cannot have different segment_counts for x and y,\n\t\t// we can only give a hexagon radius\n\t\t// therefore we need to compensate the scale.\n\t\t// not doing so, in the case of creating the plane in world pos\n\t\t// and after pluging it in a mapbox_transform\n\t\t// would result in uneven hexagons.\n\t\tconst hexagons_radius = Math.max(\n\t\t\tplane_dimensions.x / segments_counts.x,\n\t\t\tplane_dimensions.y / segments_counts.y\n\t\t);\n\t\tlet hexagons_scale_compensate: Vector3 | undefined;\n\t\tif (!this.node.pv.mapboxTransform) {\n\t\t\tconst new_plane_dimensions = {\n\t\t\t\tx: segments_counts.x * hexagons_radius,\n\t\t\t\ty: segments_counts.y * hexagons_radius,\n\t\t\t};\n\t\t\thexagons_scale_compensate = new Vector3(1, plane_dimensions.y / new_plane_dimensions.y, 1);\n\t\t\tplane_dimensions.x = new_plane_dimensions.x;\n\t\t\tplane_dimensions.y = new_plane_dimensions.y;\n\t\t}\n\t\tconst operation = new CoreGeometryOperationHexagon(\n\t\t\tplane_dimensions,\n\t\t\thexagons_radius,\n\t\t\ttrue // always as points in the case of hexagons. too complicated otherwise\n\t\t);\n\t\tconst geometry = operation.process();\n\t\tthis._coreTransform.rotateGeometry(geometry, DIR_ORIGIN, DIR_DEST);\n\t\tif (!this.node.pv.mapboxTransform && hexagons_scale_compensate) {\n\t\t\tgeometry.scale(hexagons_scale_compensate.x, hexagons_scale_compensate.y, hexagons_scale_compensate.z);\n\t\t}\n\t\treturn geometry;\n\t}\n}\n","/**\n * Creates a plane visible by a mapbox camera.\n *\n * @remarks\n * Note that you will need a mapbox key to use this node.\n */\nimport {BufferGeometry, Box2, Matrix4, Vector2, Vector3, PlaneGeometry} from 'three';\nimport mapboxgl from 'mapbox-gl';\nimport {CoreObject} from '@polygonjs/polygonjs/dist/src/core/geometry/Object';\nimport {ObjectType} from '@polygonjs/polygonjs/dist/src/core/geometry/Constant';\nimport {CoreGeometry} from '@polygonjs/polygonjs/dist/src/core/geometry/Geometry';\nimport {CoreMath} from '@polygonjs/polygonjs/dist/src/core/math/_Module';\n\nimport {MapboxListenerParamConfig, MapboxListenerSopNode} from './utils/MapboxListener';\nimport {CoreMapboxTransform} from '../../../core/mapbox/Transform';\n\n// const PSCALE_ATTRIB_NAME = 'pscale'\nconst SCALE_ATTRIB_NAME = 'scale';\nconst NORMAL_ATTRIB_NAME = 'normal';\nconst R_MAT_MAPBOX = new Matrix4().makeRotationAxis(new Vector3(1, 0, 0), -Math.PI * 0.5);\nconst R_MAT_WORLD = new Matrix4().makeRotationAxis(new Vector3(1, 0, 0), Math.PI * 0.5);\n\nenum MapboxPlaneType {\n\tPLANE = 'plane',\n\tHEXAGONS = 'hexagon',\n}\nconst MAPBOX_PLANE_TYPES: Array<MapboxPlaneType> = [MapboxPlaneType.PLANE, MapboxPlaneType.HEXAGONS];\n\nimport {NodeParamsConfig, ParamConfig} from '@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsConfig';\nimport {MapboxPlaneHexagonsController} from './utils/mapbox_plane/HexagonsController';\nimport {Number3} from '@polygonjs/polygonjs/dist/src/types/GlobalTypes';\nimport {isBooleanTrue} from '@polygonjs/polygonjs/dist/src/core/Type';\n// import { MapboxPlaneFrustumController } from \"./utils/mapbox_plane/OutofViewController\";\n// update_always_allowed: true,\n// use_zoom: true\nclass MapboxPlaneSopParamsConfig extends MapboxListenerParamConfig(NodeParamsConfig) {\n\t/** @param type of plane (grid or hexagons) */\n\ttype = ParamConfig.INTEGER(0, {\n\t\tmenu: {\n\t\t\tentries: MAPBOX_PLANE_TYPES.map((name, i) => {\n\t\t\t\treturn {name: name, value: i};\n\t\t\t}),\n\t\t},\n\t});\n\t/** @param plane resolution */\n\tresolution = ParamConfig.INTEGER(10, {\n\t\trange: [1, 20],\n\t\trangeLocked: [true, false],\n\t});\n\t/** @param multiplies the size of the plane. This can be useful to scale down the plane. While it would cover a smaller part of the view, it would be faster to create  */\n\tsizeMult = ParamConfig.FLOAT(1, {\n\t\trange: [0, 1],\n\t\trangeLocked: [true, false],\n\t});\n\t/** @param toggle on to make sure the plane will cover the full view */\n\tfullView = ParamConfig.BOOLEAN(1);\n\t// delete_out_of_view = ParamConfig.BOOLEAN(1);\n\t/** @param do not create polygons, only points */\n\tasPoints = ParamConfig.BOOLEAN(0, {\n\t\tvisibleIf: {\n\t\t\ttype: MAPBOX_PLANE_TYPES.indexOf(MapboxPlaneType.PLANE),\n\t\t},\n\t});\n\t/** @param creates within mapbox camera space */\n\tmapboxTransform = ParamConfig.BOOLEAN(1);\n}\nconst ParamsConfig = new MapboxPlaneSopParamsConfig();\n\nexport class MapboxPlaneSopNode extends MapboxListenerSopNode<MapboxPlaneSopParamsConfig> {\n\toverride paramsConfig = ParamsConfig;\n\tstatic override type() {\n\t\treturn 'mapboxPlane';\n\t}\n\tprivate _hexagonsController = new MapboxPlaneHexagonsController(this);\n\n\toverride cook() {\n\t\tthis._mapboxListener.cook();\n\t}\n\n\t_postInitController() {\n\t\tconst geometry = this._buildPlane();\n\t\tif (geometry) {\n\t\t\tlet type: ObjectType = ObjectType.MESH;\n\t\t\tif (isBooleanTrue(this.pv.asPoints) || this._asHexagons()) {\n\t\t\t\ttype = ObjectType.POINTS;\n\t\t\t}\n\t\t\tconst object = this.createObject(geometry, type);\n\n\t\t\tconst core_object = new CoreObject(object, 0);\n\t\t\tcore_object.addAttribute('mapbox_sw', this.pv.southWest);\n\t\t\tcore_object.addAttribute('mapbox_ne', this.pv.northEast);\n\n\t\t\tthis.setObject(object);\n\t\t}\n\t}\n\n\t_buildPlane() {\n\t\tif (!this._cameraNode) {\n\t\t\treturn;\n\t\t}\n\t\tconst map_center = this._cameraNode.center();\n\t\tif (!map_center) {\n\t\t\tthis.states.error.set('map is not yet loaded');\n\t\t\treturn;\n\t\t}\n\t\tconst transformer = new CoreMapboxTransform(this._cameraNode);\n\t\tconst mapbox_center_3d = new Vector3(map_center.lng, 0, map_center.lat);\n\t\ttransformer.transform_position_FINAL(mapbox_center_3d);\n\t\tconst mapbox_center = new Vector2(mapbox_center_3d.x, mapbox_center_3d.z);\n\n\t\tconst vertical_far_lng_lat_points = this._cameraNode.verticalFarLngLatPoints();\n\t\tconst vertical_near_lng_lat_points = this._cameraNode.verticalNearLngLatPoints();\n\t\tconst lng_lat_points = this.pv.fullView ? vertical_far_lng_lat_points : vertical_near_lng_lat_points;\n\n\t\tif (!lng_lat_points) {\n\t\t\treturn;\n\t\t}\n\t\t//\n\t\t//\n\t\t// we mirror the requested points from the map center, to know how much of the map we cover\n\t\t//\n\t\t//\n\t\tconst mirrored_near_lng_lat_points = lng_lat_points.map((p) => this._mirrorLngLat(p, map_center));\n\t\tlng_lat_points.push(map_center);\n\t\tfor (let p of mirrored_near_lng_lat_points) {\n\t\t\tlng_lat_points.push(p);\n\t\t}\n\t\tconst box = new Box2();\n\t\tfor (let p of lng_lat_points) {\n\t\t\tbox.expandByPoint(new Vector2(p.lng, p.lat));\n\t\t}\n\n\t\t//\n\t\t//\n\t\t// get mapbox box\n\t\t//\n\t\t//\n\t\tconst mapbox_box = new Box2();\n\t\tfor (let p of lng_lat_points) {\n\t\t\tconst pt3d = new Vector3(p.lng, 0, p.lat);\n\t\t\ttransformer.transform_position_FINAL(pt3d);\n\t\t\tmapbox_box.expandByPoint(new Vector2(pt3d.x, pt3d.z));\n\t\t}\n\t\tconst mapbox_dimensions = new Vector2();\n\t\tmapbox_box.getSize(mapbox_dimensions);\n\n\t\t//\n\t\t//\n\t\t// get visible distance\n\t\t//\n\t\t//\n\t\tconst horizontal_lng_lat_points = this._cameraNode.horizontal_lng_lat_points();\n\t\tif (!horizontal_lng_lat_points) {\n\t\t\treturn;\n\t\t}\n\t\tconst mapbox_horizontal_lng_lat_points = horizontal_lng_lat_points.map((p: mapboxgl.LngLat) => {\n\t\t\tconst pt3d = new Vector3(p.lng, 0, p.lat);\n\t\t\ttransformer.transform_position_FINAL(pt3d);\n\t\t\treturn {lng: pt3d.x, lat: pt3d.z};\n\t\t});\n\t\tconst mapbox_horizontal_distances = {\n\t\t\tlng: Math.abs(mapbox_horizontal_lng_lat_points[0].lng - mapbox_horizontal_lng_lat_points[1].lng),\n\t\t\tlat: Math.abs(mapbox_horizontal_lng_lat_points[0].lat - mapbox_horizontal_lng_lat_points[1].lat),\n\t\t};\n\t\tconst mapbox_horizontal_distance = Math.sqrt(\n\t\t\tmapbox_horizontal_distances.lng * mapbox_horizontal_distances.lng +\n\t\t\t\tmapbox_horizontal_distances.lat * mapbox_horizontal_distances.lat\n\t\t);\n\t\tconst mapbox_segment_size = mapbox_horizontal_distance / this.pv.resolution;\n\n\t\t//\n\t\t//\n\t\t//\n\t\t//\n\t\t// Segments count should always be a multiple of 2\n\t\t// to ensure that we always have a point in the center.\n\t\t// Otherwise, we would just from having a point in the center to not having one on every move,\n\t\t// which is jarring\n\t\tconst segments_counts = {\n\t\t\tx: CoreMath.highest_even(this.pv.sizeMult * Math.ceil(mapbox_dimensions.x / mapbox_segment_size)),\n\t\t\ty: CoreMath.highest_even(this.pv.sizeMult * Math.ceil(mapbox_dimensions.y / mapbox_segment_size)),\n\t\t};\n\t\tmapbox_dimensions.x = segments_counts.x * mapbox_segment_size;\n\t\tmapbox_dimensions.y = segments_counts.y * mapbox_segment_size;\n\n\t\t//\n\t\t//\n\t\t// untransform mapbox\n\t\t//\n\t\t//\n\t\t// untransforming is a way to find the world pos\n\t\t// as we've done every operation before in mapbox space\n\t\tconst mapbox_box_untransformed = new Box2();\n\t\tconst mapbox_corners = [\n\t\t\tmapbox_center.clone().sub(mapbox_dimensions.clone().multiplyScalar(0.5)),\n\t\t\tmapbox_center.clone().sub(mapbox_dimensions.clone().multiplyScalar(-0.5)),\n\t\t\tmapbox_center.clone().add(mapbox_dimensions.clone().multiplyScalar(0.5)),\n\t\t\tmapbox_center.clone().add(mapbox_dimensions.clone().multiplyScalar(-0.5)),\n\t\t];\n\t\tfor (let p of mapbox_corners) {\n\t\t\tconst untransformed_3d = transformer.untransform_position_FINAL(new Vector3(p.x, 0, p.y));\n\t\t\tconst untransformed = new Vector2(untransformed_3d.x, untransformed_3d.z);\n\t\t\t// const retransformed = transformer.transform_position_FINAL(new Vector3(untransformed.x, 0, untransformed.y))\n\t\t\tmapbox_box_untransformed.expandByPoint(untransformed);\n\t\t}\n\t\tconst world_dimensions = new Vector2();\n\t\tmapbox_box_untransformed.getSize(world_dimensions);\n\n\t\t//\n\t\t//\n\t\t// round mapbox center to sense the grid is not moving, but we display a section of the world\n\t\t// NOTE: this may not be possible, due to having to the projections/transformations required\n\t\t//\n\t\t//\n\t\t// const world_segment_sizes = {\n\t\t// \tx: (world_dimensions.x / segments_counts.x),\n\t\t// \ty: (world_dimensions.y / segments_counts.y)\n\t\t// }\n\t\tconst world_plane_center = new Vector2(map_center.lng, map_center.lat);\n\t\t// const map_center_transformed = transformer.transform_position_FINAL(new Vector3(world_plane_center.x, 0, world_plane_center.y))\n\t\t// world_plane_center.x = CoreMath.round(world_plane_center.x, world_segment_sizes.x)\n\t\t// world_plane_center.y = CoreMath.round(world_plane_center.y, world_segment_sizes.y) //world_segment_sizes.y * Math.floor(world_plane_center.y / world_segment_sizes.y)\n\t\t// const segments_count = Math.max(segments_counts.x, segments_counts.y)\n\t\t// const mapbox_segments_count = Math.max(mapbox_segments_counts.x, mapbox_segments_counts.y)\n\n\t\t//\n\t\t//\n\t\t// create geometries\n\t\t//\n\t\t//\n\t\tconst horizontal_scale = mapbox_dimensions.x / segments_counts.x;\n\t\tlet core_geo;\n\t\tconst plane_dimensions = this.pv.mapboxTransform ? mapbox_dimensions : world_dimensions;\n\t\tconst rotation_matrix = this.pv.mapboxTransform ? R_MAT_MAPBOX : R_MAT_WORLD;\n\t\tconst geometry_center = this.pv.mapboxTransform ? mapbox_center : world_plane_center;\n\n\t\tlet geometry: BufferGeometry;\n\t\tif (this._asHexagons()) {\n\t\t\tgeometry = this._hexagonsController.geometry(plane_dimensions, segments_counts);\n\t\t} else {\n\t\t\tgeometry = new PlaneGeometry(plane_dimensions.x, plane_dimensions.y, segments_counts.x, segments_counts.y);\n\t\t}\n\n\t\t// rotate and translate to expected center\n\t\tgeometry.applyMatrix4(rotation_matrix);\n\t\tgeometry.translate(geometry_center.x, 0, geometry_center.y);\n\n\t\t// add attributes scale and normal\n\t\tcore_geo = new CoreGeometry(geometry);\n\t\tconst z_scale = [horizontal_scale, 1][0];\n\t\tconst scale: Number3 = [horizontal_scale, horizontal_scale, z_scale];\n\t\tcore_geo.addNumericAttrib(SCALE_ATTRIB_NAME, 3, scale);\n\t\tcore_geo.addNumericAttrib(NORMAL_ATTRIB_NAME, 3, [0, 1, 0]); // mostly important for hexagons points\n\n\t\t//\n\t\t//\n\t\t// if delete out of view\n\t\t//\n\t\t//\n\t\t// not yet working. I suspect that the margin is too high, and is in the wrong coordinate\n\t\t// (in mapbox or world, but should be in the other)\n\t\t// if (this.pv.delete_out_of_view) {\n\t\t// \tconst reconstructed_geo = this._frustum_controller.delete_out_of_view(\n\t\t// \t\tgeometry,\n\t\t// \t\tcore_geo,\n\t\t// \t\tthis._camera_node,\n\t\t// \t\ttransformer,\n\t\t// \t\tplane_dimensions,\n\t\t// \t\tsegments_counts\n\t\t// \t);\n\t\t// \tif (reconstructed_geo) {\n\t\t// \t\tgeometry = reconstructed_geo;\n\t\t// \t}\n\t\t// }\n\n\t\treturn geometry;\n\t}\n\n\tprivate _mirrorLngLat(p: mapboxgl.LngLat, map_center: mapboxgl.LngLat) {\n\t\tconst delta = {\n\t\t\tlng: map_center.lng - p.lng,\n\t\t\tlat: map_center.lat - p.lat,\n\t\t};\n\t\treturn new mapboxgl.LngLat(map_center.lng + delta.lng, map_center.lat + delta.lat);\n\t}\n\tprivate _asHexagons(): boolean {\n\t\treturn this.pv.type == MAPBOX_PLANE_TYPES.indexOf(MapboxPlaneType.HEXAGONS);\n\t}\n}\n","/**\n * Transforms a geometry from the world space to the mapbox space\n *\n * @remarks\n * The mapbox space is very specific to mapbox, as it is very small (several orders of magnitude) compared to the threejs space.\n */\nimport {CoreMapboxTransform} from '../../../core/mapbox/Transform';\nimport {InputCloneMode} from '@polygonjs/polygonjs/dist/src/engine/poly/InputCloneMode';\nimport {CoreGroup} from '@polygonjs/polygonjs/dist/src/core/geometry/Group';\nimport {MapboxListenerParamConfig, MapboxListenerSopNode} from './utils/MapboxListener';\n\nconst INPUT_NAMES = ['points to transform in mapbox space'];\n\nimport {NodeParamsConfig} from '@polygonjs/polygonjs/dist/src/engine/nodes/utils/params/ParamsConfig';\nclass MapboxTransformSopParamsConfig extends MapboxListenerParamConfig(NodeParamsConfig) {}\nconst ParamsConfig = new MapboxTransformSopParamsConfig();\n\nexport class MapboxTransformSopNode extends MapboxListenerSopNode<MapboxTransformSopParamsConfig> {\n\toverride paramsConfig = ParamsConfig;\n\n\tstatic override type() {\n\t\treturn 'mapboxTransform';\n\t}\n\n\tstatic override displayedInputNames(): string[] {\n\t\treturn INPUT_NAMES;\n\t}\n\n\toverride initializeNode() {\n\t\tthis.io.inputs.setCount(1);\n\t\tthis.io.inputs.initInputsClonedState(InputCloneMode.FROM_NODE);\n\n\t\t// this.uiData.set_icon(\"map-marker-alt\");\n\t\t// this._init_mapbox_listener();\n\t}\n\n\toverride cook(inputContents: CoreGroup[]) {\n\t\tconst coreGroup = inputContents[0];\n\t\tif (!this._cameraNode) {\n\t\t\tthis.updateMapboxCamera();\n\t\t\tif (!this._cameraNode) {\n\t\t\t\tthis.states.error.set('mapbox camera not found');\n\t\t\t\tthis.setCoreGroup(coreGroup);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// No need to error here, as it would prevent scene.wait_all_cooks()\n\t\t// to complete in the export\n\t\t// if (!this._camera_node.first_map()) {\n\t\t// \tthis.states.error.set('mapbox not yet loaded');\n\t\t// \treturn;\n\t\t// }\n\t\tthis._transformInput(coreGroup);\n\t}\n\n\tprivate _transformInput(core_group: CoreGroup) {\n\t\tif (this._cameraNode) {\n\t\t\tconst transformer = new CoreMapboxTransform(this._cameraNode);\n\t\t\tfor (let object of core_group.objects()) {\n\t\t\t\ttransformer.transform_group_FINAL(object);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.states.error.set('no camera node found');\n\t\t}\n\t\tthis.setCoreGroup(core_group);\n\t}\n\n\t_postInitController() {}\n}\n","import type {PolyEngine} from '@polygonjs/polygonjs/dist/src/engine/Poly';\n\nimport {MapboxTileCopNode} from './engine/nodes/cop/MapboxTile';\nimport {MapboxCameraObjNode} from './engine/nodes/obj/MapboxCamera';\nimport {MapboxLayerSopNode} from './engine/nodes/sop/MapboxLayer';\nimport {MapboxPlaneSopNode} from './engine/nodes/sop/MapboxPlane';\nimport {MapboxTransformSopNode} from './engine/nodes/sop/MapboxTransform';\nimport {PolyPluginMapbox} from './PolyPluginMapbox';\nfunction PolygonjsPluginMapbox(poly: PolyEngine) {\n\tpoly.registerNode(MapboxTileCopNode, 'mapbox');\n\tpoly.registerNode(MapboxCameraObjNode, 'mapbox');\n\tpoly.registerNode(MapboxLayerSopNode, 'mapbox');\n\tpoly.registerNode(MapboxPlaneSopNode, 'mapbox');\n\tpoly.registerNode(MapboxTransformSopNode, 'mapbox');\n}\nexport const polyPluginMapbox = new PolyPluginMapbox('mapbox', PolygonjsPluginMapbox, {\n\tlibraryName: '@polygonjs/plugin-mapbox',\n\tlibraryImportPath: '@polygonjs/plugin-mapbox/dist',\n});\n","import {PolyPlugin} from '@polygonjs/polygonjs/dist/src/engine/poly/registers/plugins/Plugin';\n\nimport mapboxgl from 'mapbox-gl';\nexport class PolyPluginMapbox extends PolyPlugin {\n\tprivate _token: string | undefined;\n\tsetToken(token: string) {\n\t\tthis._token = token;\n\t\tmapboxgl.accessToken = this._token;\n\t}\n\ttoken() {\n\t\treturn this._token;\n\t}\n}\n"],"names":["cssColors","module","exports","s","toLowerCase","flatten","geom2","geom3","path2","poly3","color","objects","Array","isArray","Error","length","results","map","object","isA","newgeom2","clone","colorGeom2","newgeom3","colorGeom3","newpath2","colorPath2","newpoly","colorPoly3","black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","notation","replace","r","parseInt","substring","g","b","hueToColorComponent","values","h","l","q","p","v","i","Math","floor","f","t","colorize","colorNameToRgb","hexToRgb","hslToRgb","hsvToRgb","rgbToHex","rgbToHsl","rgbToHsv","Number","toString","max","min","d","getPermutations","c","permutations","push","factorial","out","points","pointType","firstPointType","forEach","point","pType","isFinite","val","getPointType","dimensions","tangentPermutations","create","valueAt","tangentAt","bezierTangent","bezier","n","result","pow","singleDimensionPoints","j","bezierFunction","mat4","vec2","geometry","isIdentity","transforms","sides","side","transform","Object","assign","undefined","data","created","slice","point0","fromValues","point1","equals","prevpoint","fromPoints","fromCompactBinary","reverse","toOutlines","toPoints","toSides","toCompactBinary","validate","newsides","compacted","Float32Array","ci","popNextSide","startSide","nextSides","pop","v0","startAngle","angleDegrees","subtract","bestAngle","bestIndex","nextSide","index","angle","splice","vertexMap","Map","edges","unique","getUniqueVertex","vertex","key","has","get","set","toSharedVertices","edge","toVertexMap","outlines","shift","delete","connectedVertexPoints","startVertex","nextVertex","nextPossibleSides","clear","applyTransforms","matrix","multiply","every","polygons","polygon","vec3","numberOfVertices","vi","verticesPerPolygon","vertices","listofpoints","invert","toPolygons","newpolygons","numberOfPolygons","reduce","count","edgeCount","nonManifold","complementEdge","split","join","validateManifold","poly2","options","endpoint","radius","xaxisrotation","clockwise","large","segments","decimals","isClosed","xradius","yradius","startpoint","round","sweepFlag","newpoints","abs","phi","cosphi","cos","sinphi","sin","minushalfdistance","scale","x","y","startTranslated","biglambda","sqrtbiglambda","sqrt","multiplier1","centerTranslated","center","add","vector1","vector2","theta1","angleRadians","deltatheta","PI","numsteps","ceil","step","theta","costheta","sintheta","concat","appendPoints","controlPoints","lastBezierControlPoint","controlpoint","unshift","bezierOrder","factorials","fact","binomials","binomial","v1","v3","getPointForT","tk","oneMinusTNMinusK","invOneMinusT","k","bernsteinCoefficient","derivativePoint","newpointsT","subdivideBase","maxangle","maxsinangle","dir1","normalize","dir2","sinangle","cross","t0","t1","newt0","newt1","EPS","cloned","p0","pn","distance","paths","path","tmp","closed","a","apoints","bpoints","offset","unequal","close","appendArc","appendBezier","measureArea","flip","acc","numverts","tx","ty","vtx0","vtx1","yflag0","insideFlag","yflag1","xflag0","xflag1","isPointInside","arePointsInside","area","params","vec","plane","poly","fromPointsAndPlane","isConvex","measureBoundingBox","measureBoundingSphere","measureSignedVolume","inverted","isConvexPoint","nextpoint","normal","crossproduct","dot","numvertices","prevprevpos","prevpos","pos","areVerticesConvex","ax","ay","az","coord","box","signedVolume","mplane","isMirroring","signedDistanceToPoint","NEPS","dist","colors","curves","geometries","maths","measurements","primitives","text","utils","booleans","expansions","extrusions","hulls","modifiers","OrthoNormalBasis","rightvector","arguments","orthogonal","this","u","planeorigin","GetCartesian","xaxisid","yaxisid","axisid","planenormal","Plane","Vector3D","Z0Plane","prototype","getProjectionMatrix","getInverseProjectionMatrix","to2D","to3D","v2","line3Dto2D","line3d","direction","plus","a2d","b2d","Line2D","line2Dto3D","line2d","origin","a3d","b3d","Line3D","matrix4x4","newplane","rightpointTransformed","originTransformed","newrighthandvector","minus","spatialResolution","constants","line2","line3","vec4","line","m1","m2","closest","vector","negate","line1","point2","closestPoint","copy","distanceToPoint","intersectPointOfLines","xAtY","solve2Linear","toFixed","org","dir","isNaN","lpoint","ldirection","closestpoint","distancevector","fromPointAndDirection","plane1","plane2","absx","absy","absz","unit","fromPlanes","intersectPointOfLineAndPlane","pnormal","pw","labda","pointPlusDirection","newpoint","newPointPlusDirection","newdirection","EPSILON","identity","rad","axis","z","len","hypot","yaw","pitch","roll","sy","cy","sp","cp","sr","cr","m00","m01","m02","m03","m10","m11","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","fromRotation","source","target","sourceNormal","targetNormal","cosA","radians","fromScaling","fromTaitBryanRotation","fromTranslation","fromVectorRotation","fromXRotation","fromYRotation","fromZRotation","isOnlyTransformScale","mirrorByPlane","rotate","rotateX","rotateY","rotateZ","translate","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","det","w","ismirror","isZero","num","nx","ny","nz","b0","b1","b2","b3","b12","b20","b21","b22","mat","offsets","ba","ca","vertexNormal","fromNormalAndPoint","fromPointsRandom","projectionOfPoint","fromScalar","point3","aboutEqualNormals","interpolateBetween2DPointsForY","intersect","f1","f2","p1","p2","p3","p4","denominator","MIN_VALUE","ua","ub","invdet","atan2","fromAngleRadians","degrees","scalar","divide","fromAngleDegrees","lerp","snap","squaredDistance","squaredLength","amount","epsilon","bx","by","bz","mag","cosine","acos","fromVec2","bV","bounds","total","measureAggregateArea","measureAggregateBoundingBox","measureAggregateEpsilon","measureAggregateVolume","measureCenter","measureCenterOfMass","measureDimensions","measureEpsilon","measureVolume","areas","vec3min","vec3max","MAX_VALUE","item","calculateEpsilonFromBounds","volumes","volume","cache","WeakMap","measureAreaOfGeom2","measureAreaOfGeom3","boundingBox","minpoint","maxpoint","measureBoundingBoxOfPath2","measureBoundingBoxOfGeom2","measureBoundingBoxOfGeom3","cacheOfBoundingSpheres","boundingSphere","centroid","numPoints","temp","measureBoundingSphereOfPath2","measureBoundingSphereOfGeom2","measureBoundingSphereOfGeom3","cacheOfCenterOfMass","centerOfMass","measureCenterOfMassGeom2","totalVolume","weightedCenter","measureCenterOfMassGeom3","measureEpsilonOfPath2","measureEpsilonOfGeom3","measureVolumeOfGeom3","vert1Indices","points3D","filter","points2D","fromFakePolygon","scission","union","areAllShapesTheSameType","intersectGeom2","intersectGeom3","fromFakePolygons","to3DWalls","newgeometries","z0","z1","retessellate","intersectSub","newgeometry","mayOverlap","Tree","geometry1","geometry2","clipTo","addPolygons","allPolygons","bounds1","min1","max1","bounds2","min2","max2","scissionGeom3","eps","pl","indexesPerPoint","mapping","insertMapping","indexesPerPolygon","indexes","findMapping","e","array","sort","ary","merges","ippl","mapi","mapj","subtractGeom2","subtractGeom3","subtractSub","to3DWall","Node","constructor","parent","front","back","polygontreenodes","queue","node","clipPolygons","alsoRemovecoplanarFront","current","stack","backnodes","frontnodes","coplanarfrontnodes","numpolygontreenodes","treenode","isRemoved","splitByPlane","numbacknodes","remove","tree","rootnode","addPolygonTreeNodes","newpolygontreenodes","bestpoly","getPolygon","splitPolygonByPlane","PolygonTreeNode","children","removed","isRootNode","_this","addChild","parentschildren","indexOf","recursivelyInvalidatePolygon","invertSub","getPolygons","coplanarbacknodes","nodes","_splitByPlane","splane","bound","sphereradius","spherecenter","splitresult","type","frontnode","backnode","newchild","prefix","repeat","polygonTree","lambda","splitLineSegmentByPlane","pplane","hasfront","hasback","vertexIsBack","MINEPS","isback","frontvertices","backvertices","vertexindex","nextvertexindex","nextisback","intersectionpoint","EPS_SQUARED","prevvertex","unionGeom2","unionGeom3","unionSub","unionForNonIntersecting","expandGeom2","expandGeom3","expandPath2","offsetFromPoints","delta","corners","allsides","outline","newoutline","expandShell","expanded","external","internal","externalPath","internalPath","externalSides","internalSides","createGeometryFromClosedOffsets","capSegments","e2iCap","i2eCap","eCorner","e2iStart","iCorner","i2eStart","allPoints","createGeometryFromExpandedOpenPath","fnNumberSort","sphere","unionGeom3Sub","extrudePolygon","mapPlaneToVertex","entry","mapPlaneToEdge","key0","key1","addUniqueAngle","findIndex","vertices2planes","edges2planes","extrudevector","translatedpolygon","extrudedface","planes","zbase","xbase","ybase","angles","iMax","si","co","numangles","prevp1","prevp2","startfacevertices","endfacevertices","skip","cylinder","xaxis","bestzaxis","bestzaxisorthogonality","crosslength","yaxis","zaxis","corner","axes","offsetvector","polygon1","polygon2","nexti","sideFacePolygon","expand","offsetGeom2","offsetPath2","rotation","orientation","previousSegment","newPoints","newCorners","of","n0","n1","currentSegment","ip","s0","s1","cursegment","pointIndex","line0","cornersegments","start","cornerpoints","level","defaults","solids","holes","parents","solid","hole","directParent","list","score","best","value","minIndex","filterPoints","linkedPolygon","locallyInside","splitPolygon","pointInTriangle","eliminateHole","outerNode","bridge","findHoleBridge","bridgeReverse","filteredBridge","next","hx","hy","m","qx","stop","mx","my","tanMin","Infinity","sectorContainsSector","prev","getLeftmost","leftmost","holeIndices","dim","end","steiner","eliminateHoles","removeNode","sortLinked","cureLocalIntersections","isValidDiagonal","earcutLinked","ear","triangles","minX","minY","invSize","pass","indexCurve","isEarHashed","isEar","splitEarcut","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","prevZ","nextZ","hasHoles","outerLen","maxX","maxY","insertNode","last","fn","numMerges","inSize","tail","pSize","qSize","again","intersects","q1","q2","o1","sign","o2","o3","o4","onSegment","intersectsPolygon","inside","px","py","middleInside","sum","signedArea","a2","an","bp","calculatePlane","assignHoles","perp","basisMap","projected","roots","vector3","original","console","log","planeOrigin","cx","repairSlice","extrudeWalls","defaultCallback","progress","base","baseSlice","fromSides","numberOfSlices","capStart","capEnd","repair","callback","generate","sMax","startSlice","endSlice","prevSlice","currentSlice","toEdges","endPolygons","startPolygons","extrudeLinearGeom2","extrudeLinearPath2","height","twistAngle","twistSteps","extrudeFromSlices","offsetv","baseSides","Zrotation","Zoffset","extrudeRectangularPath2","extrudeRectangularGeom2","size","part","mirrorX","overflow","endAngle","totalRotation","anglePerSegment","shapeSides","pointsWithNegativeX","pointsWithPositiveX","rotationPerSlice","isCapped","gcd","repartitionEdges","newlength","multiple","divisor","newEdges","increment","EPSAREA","slice0","slice1","edges0","edges1","walls","edge0","edge1","poly0","poly0area","poly1","poly1area","extrudeLinear","extrudeRectangular","extrudeRotate","project","projplane","epsilonArea","projpolys","projgeoms","projectGeom3","midpoint","farthestEdge","beforeEdge","find","aedges","bedges","aedge","bedge","isEqual","inKey","outKey","missingIn","keys","missingOut","bestReplacement","bestDistance","key2","warn","earcut","PolygonHierarchy","hierarchy","holesIndex","flat","getVertex","indices","tri","hullPath2","hullGeom2","hullGeom3","hull","hullPoints2","toUniquePoints","hullPoints","quickhull","skipTriangulation","face","uniquePoints","distSq","pt1","pt2","cnt","hullChain","HalfEdge","Face","outside","mark","nVertices","getEdge","it","computeNormal","e0","e1","e2","head","computeNormalMinArea","minArea","maxEdge","maxSquaredLength","lengthSquared","maxVector","maxLength","maxProjection","computeCentroid","computeNormalAndCentroid","distanceToPlane","connectHalfEdges","discardedFace","opposite","oppositeFace","oppositeEdge","setOpposite","mergeAdjacentFaces","adjacentEdge","discardedFaces","adjacentEdgePrev","adjacentEdgeNext","oppositeEdgePrev","oppositeEdgeNext","collectIndices","static","VISIBLE","NON_CONVEX","DELETED","pointLineDistance","getPlaneNormal","VertexList","Vertex","TypeError","tolerance","nFaces","nPoints","faces","newFaces","claimed","unclaimed","vertexPointIndices","addVertexToFace","insertBefore","removeVertexFromFace","removeAllVerticesFromFace","removeChain","deleteFaceVertices","absorbingFace","faceVertices","addAll","resolveUnclaimedPoints","vertexNext","first","maxFace","maxDistance","computeExtremes","minVertices","maxVertices","createInitialSimplex","indexMax","distPO","createTriangle","reindexFaceAndVertices","activeFaces","collectFaces","faceIndices","nextVertexToAdd","isEmpty","eyeVertex","eyeFace","computeHorizon","eyePoint","crossEdge","horizon","addAdjoiningFace","horizonEdge","addNewFaces","firstSideEdge","previousSideEdge","sideEdge","oppositeFaceDistance","doAdjacentMerge","mergeType","convex","merge","addVertexToHull","build","insertAfter","QuickHull","instance","ab","ap","distanceSquared","found","Set","addPoint","snapPolygons","mergePolygons","insertTjunctions","triangulatePolygons","generalizePath2","generalizeGeom2","simplify","triangulate","generalizeGeom3","generalize","getTag","addSide","sidemap","vertextag2sidestart","vertextag2sideend","vertex0","vertex1","polygonindex","starttag","endtag","newsidetag","reversesidetag","deleteSide","newsideobj","sidetag","idx","sideobjs","sideobj","vertextag","nextvertex","nextvertextag","ar","sidestocheck","donesomething","sidetags","sidetagtocheck","donewithside","directionindex","startvertex","endvertex","startvertextag","endvertextag","matchingsides","matchingsideindex","matchingsidetag","matchingside","matchingsidestartvertex","matchingsideendvertex","matchingsidestartvertextag","startpos","endpos","checkpos","insertionvertextag","insertionvertextagindex","newvertices","newpolygon","newsidetag1","newsidetag2","createEdges","insertEdge","deleteEdge","findOppositeEdge","calculateAnglesBetween","angle1","calculateAngle","d0","d1","polygonsPerPlane","element","coplanar","destpolygons","retesselayedpolygons","sourcepolygons","edgeList","edge2","mergeEdges","newedge","createPolygonAnd","mergeCoplanarPolygons","insertSorted","numpolygons","orthobasis","polygonvertices2d","polygontopvertexindexes","topy2polygonindexes","ycoordinatetopolygonindexes","ycoordinatebins","ycoordinateBinningFactor","poly3d","vertices2d","minindex","miny","maxy","pos2d","ycoordinatebin","newy","ycoordinates","ycoordinate","activepolygons","prevoutpolygonrow","yindex","newoutpolygonrow","ycoordinateasstring","polygonindexeswithcorner","activepolygonindex","activepolygon","newleftvertexindex","leftvertexindex","newrightvertexindex","rightvertexindex","nextleftvertexindex","nextrightvertexindex","topleft","topright","bottomleft","bottomright","nextycoordinate","middleycoordinate","startingpolygonindexes","polygonindexKey","topvertexindex","topleftvertexindex","toprightvertexindex","newactivepolygon","el1","el2","x1","x2","activepolygonKey","outpolygon","leftline","rightline","prevoutpolygon","d2","prevcontinuedindexes","matchedindexes","thispolygon","ii","prevpolygon","v4","leftlinecontinues","rightlinecontinues","rightlineisconvex","rightpoints","leftpoints","vertices3d","point2d","reTesselateCoplanarPolygons","isRetesselated","snapPath2","snapGeom2","snapGeom3","snapvertices","vertice","isValidPoly3","nv","triangulatePolygon","padArrayToLength","alignGeometries","modes","relativeTo","translation","mode","includes","alignVal","grouped","validateOptions","populateRelativeToFromBounds","centerGeometry","centerX","centerY","centerZ","align","mirror","mirrorY","mirrorZ","scaleX","scaleY","scaleZ","translateX","translateY","translateZ","planeOfMirror","factors","factor","isGT","isGTE","isNumberArray","makeTangent","minangle","centerv","pointArray","edgestepsize","totalsteps","ellipse","dimension","constant","cuboid","info","cylinderElliptic","startRadius","endRadius","minradius","slices","ray","axisX","axisY","xvector","yvector","zvector","qsegments","prevcylinderpoint","cylinderpoint","prevcospitch","prevsinpitch","slice2","cospitch","sinpitch","polyhedron","frequency","ti","geodesicSubDivide","s2","mix3","s3","_f","arc","circle","cube","ellipsoid","geodesicSphere","rectangle","roundedCuboid","roundedCylinder","roundedRectangle","square","star","torus","triangle","listofpolys","listofpaths","allpoints","setofpoints","findex","pindex","pswap","createCorners","positive","layersegments","layerradius","layeroffset","corner0","corner1","corner2","corner3","corner0Points","corner1Points","corner2Points","corner3Points","point3d","stitchCorners","previousCorners","currentCorners","previous","stitchWalls","c0","c1","stitchSides","bottomCorners","topCorners","bottomPoints","topPoints","roundRadius","prevCornersPos","prevCornersNeg","cornersPos","cornersNeg","defaultnormal","getPoints","outerRadius","innerRadius","density","getRadiusRatio","outerPoints","innerPoints","innerSegments","outerSegments","innerRotation","outerRotation","innerCircle","solveAngleFromSSS","A","B","C","toUpperCase","solveAAA","solveAAS","solveASA","solveSideFromSAS","solveSAS","asin","solveSSA","lengths","solveSSS","vectorChar","vectorText","vectorParams","char","xOffset","yOffset","input","font","extrudeOffset","code","charCodeAt","glyph","ratio","extrudeYOffset","width","polyline","il","gx","gy","defaultsVectorParams","lineSpacing","letterSpacing","translateLine","segment","jl","vect","diff","lines","output","maxWidth","lineStart","pushLine","shapes","previousType","shape","currentType","arr","degToRad","radiusToSegments","radToDeg","comparefunc","leftbound","rightbound","testindex","anArray","padding","targetLength","minimumLength","minimumAngle","ss","as","rezero","shared","worker","mapboxgl","define","_","chunk","workerBundleString","sharedChunk","window","URL","createObjectURL","workerUrl","Blob","p1x","p1y","p2x","p2y","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","o","solve","_add","sub","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","div","_div","_rotate","rotateAround","_rotateAround","matMult","_matMult","_unit","_perp","_round","distSqr","angleTo","angleWith","angleWithSep","convert","self","S","I","M","T","P","E","D","V","F","L","R","U","$","O","N","G","Z","X","K","Y","H","J","W","Q","tt","et","rt","nt","random","LN2","st","test","at","bind","ot","lt","call","ut","ct","ht","pt","dt","ft","yt","WorkerGlobalScope","mt","gt","xt","vt","bt","wt","navigator","userAgent","safari","match","_t","setItem","removeItem","At","now","performance","setNow","restoreNow","frame","requestAnimationFrame","cancel","cancelAnimationFrame","getImageData","document","createElement","getContext","drawImage","resolveURL","href","devicePixelRatio","prefersReducedMotion","matchMedia","matches","kt","St","API_URL","API_URL_REGEX","process","env","RegExp","EVENTS_URL","SESSION_PATH","FEEDBACK_URL","TILE_URL_VERSION","RASTER_URL_PREFIX","REQUIRE_ACCESS_TOKEN","ACCESS_TOKEN","MAX_PARALLEL_IMAGE_REQUESTS","It","supported","testSupport","Tt","Mt","Bt","Ct","zt","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","isContextLost","deleteTexture","onload","onerror","src","Pt","Et","Dt","Vt","Ft","Lt","protocol","authority","Rt","Ut","JSON","parse","decodeURIComponent","atob","$t","anonId","eventData","pendingRequest","getStorageKey","btoa","encodeURIComponent","String","fromCharCode","fetchEventData","localStorage","getItem","saveEventData","stringify","processRequests","postEvent","event","Date","toISOString","sdkIdentifier","sdkVersion","skuId","userId","url","headers","body","oe","queueRequest","Ot","super","_customAccessToken","postTurnstileEvent","some","lastSuccess","tokenU","getDate","jt","qt","success","skuToken","postMapLoadEvent","errorCb","id","timestamp","Nt","Gt","getSession","le","getSessionAPI","Zt","Xt","Kt","Yt","Ht","Jt","Wt","Qt","caches","open","te","ee","re","Unknown","Style","Source","Tile","Glyphs","SpriteImage","SpriteJSON","Image","freeze","ne","status","name","message","ie","referrer","location","se","fetch","Request","AbortController","hasOwnProperty","method","credentials","signal","then","ok","statusText","catch","arrayBuffer","json","Headers","toUTCString","getTime","Response","ReadableStream","blob","put","abort","actor","send","XMLHttpRequest","responseType","setRequestHeader","withCredentials","response","getResponseHeader","ae","ue","host","ce","he","pe","de","accept","requestParameters","cancelled","createImageBitmap","Uint8Array","revokeObjectURL","byteLength","fe","ye","me","ge","error","xe","on","_listeners","off","_oneTimeListeners","once","Promise","fire","listens","_eventedParent","_eventedParentData","setEventedParent","ve","be","identifier","__line__","we","_e","Ae","Boolean","valueOf","ke","Se","Ie","bindings","ze","kind","Me","Te","Be","Ce","Pe","Ee","De","Ve","Fe","Le","itemType","Re","Ue","$e","Oe","je","qe","Ne","transparent","rebeccapurple","parseFloat","parseCSSColor","substr","Ge","toArray","Ze","sensitivity","locale","collator","Intl","Collator","usage","compare","resolvedLocale","resolvedOptions","Xe","image","fontStack","textColor","Ke","sections","fromString","serialize","Ye","available","He","Je","We","Qe","tr","expectedType","evaluate","eachChild","outputDefined","er","toJSON","rr","string","number","boolean","nr","args","ir","content","availableImages","or","parseColor","lr","ur","globals","feature","featureState","formattedSection","_parseColorCache","canonical","featureTileCoord","featureDistanceData","geometryType","canonicalID","properties","distanceFromCenter","bearing","_evaluate","definitions","overloads","Er","registry","scope","checkSubtype","errors","hr","caseSensitive","diacriticSensitive","pr","dr","fr","yr","mr","gr","xr","vr","br","wr","_r","Ar","kr","Sr","Ir","zr","Mr","geojson","features","coordinates","Tr","Br","Cr","Pr","boundExpression","_parse","typeAnnotation","Dr","Vr","Fr","labels","outputs","Lr","Rr","__proto__","Ur","$r","Or","jr","qr","Nr","Gr","Zr","Xr","Kr","Yr","Hr","alpha","Jr","Wr","Qr","forward","interpolate","tn","en","lab","hcl","rn","operator","interpolation","nn","interpolationFactor","sn","ln","needle","haystack","un","fromIndex","cn","inputType","cases","otherwise","MAX_SAFE_INTEGER","hn","branches","beginIndex","endIndex","dn","yn","lhs","rhs","hasUntypedArgument","mn","gn","xn","vn","bn","wn","_n","currency","minFractionDigits","maxFractionDigits","NumberFormat","style","minimumFractionDigits","maximumFractionDigits","format","An","kn","case","coalesce","in","let","literal","var","within","Sn","In","zn","Mn","Tn","Bn","Cn","Pn","expression","parameters","En","interpolated","Dn","Vn","Fn","Ln","stops","property","default","colorSpace","On","$n","Un","jn","zoom","interpolationType","zoomStops","Rn","apply","register","typeof","rgb","rgba","heatmapDensity","lineProgress","skyRadialProgress","accumulated","ln2","pi","log10","LN10","log2","atan","all","any","isSupportedScript","upcase","downcase","qn","_warningHistory","_evaluator","_defaultValue","_enumValues","evaluateWithoutErrorHandling","Nn","Gn","enum","formatted","resolvedImage","Zn","_styleExpression","isStateDependent","Xn","Kn","Hn","Yn","_parameters","_specification","Jn","valueSpec","objectElementValidators","styleSpec","Bi","objectKey","required","Wn","arrayElementValidator","minimum","maximum","$version","function","arrayIndex","Qn","ei","expressionContext","propertyKey","propertyType","ri","ni","needGeometry","needFeature","li","oi","ai","dynamicFilter","hi","ui","di","mi","fi","yi","gi","layerType","xi","filter_operator","geometry_type","transition","tokens","exec","glyphs","bi","wi","_i","ref","layers","sources","paint","lineMetrics","layer","layout","Ai","ki","promoteId","Si","source_geojson","cluster","clusterProperties","source_video","source_image","Ii","light","zi","terrain","Mi","fog","Ti","projection","Ci","Pi","$root","Ei","Di","paintProperty","layoutProperty","Vi","Fi","Li","Ri","Ui","$i","Oi","ji","cells","ArrayBuffer","Int32Array","subarray","bboxes","insert","_insertReadonly","extent","uid","_forEachCell","_insertCell","query","_queryCell","_convertToCellCoord","_convertFromCellCoord","toArrayBuffer","buffer","ImageData","qi","ImageBitmap","Ni","Gi","Zi","defineProperty","writeable","klass","omit","shallow","deserialize","_classRegistryKey","Xi","Ki","Yi","isView","$name","Hi","Ji","update","lastIntegerZoom","lastIntegerZoomTime","lastZoom","lastFloorZoom","Wi","Qi","ts","es","rs","ns","is","os","ls","us","cs","hs","ps","ds","fs","ys","ms","gs","xs","vs","bs","ws","_s","As","ks","Ss","Ms","Is","zs","Ts","Bs","Cs","Ps","Es","Ds","Vs","Fs","Ls","Rs","Us","$s","Os","pluginStatus","pluginURL","js","qs","Ns","applyArabicShaping","processBidirectionalText","processStyledBidirectionalText","isLoaded","isLoading","setState","isParsed","getPluginURL","Gs","fadeDuration","zoomHistory","crossFadingFactor","getCrossfadeParameters","fromScale","toScale","Zs","specification","isDataDriven","possiblyEvaluate","Xs","transitioned","Ys","untransitioned","Ks","_properties","_values","defaultTransitionablePropertyValues","getValue","setValue","getTransition","setTransition","Hs","delay","duration","begin","prior","defaultTransitioningPropertyValues","Qs","hasTransition","Js","defaultPropertyValues","Ws","isConstant","constantOr","defaultPossiblyEvaluatedValues","ta","ea","overrides","ra","_calculate","from","to","other","na","ia","sa","overridableProperties","overridable","aa","oa","Int8","Int8Array","Uint8","Int16","Int16Array","Uint16","Uint16Array","Int32","Uint32","Uint32Array","Float32","la","_structArray","_pos1","_pos2","_pos4","_pos8","isTransferred","capacity","resize","_trim","bytesPerElement","_refreshViews","reserve","uint8","members","BYTES_PER_ELEMENT","ha","components","alignment","pa","int16","emplaceBack","emplace","da","fa","float32","ya","ma","uint16","ga","xa","va","uint32","wa","_a","Aa","ka","Sa","Ia","za","Ma","Ta","Ba","Ca","Pa","Ea","Da","Va","projectedAnchorX","projectedAnchorY","projectedAnchorZ","tileAnchorX","tileAnchorY","y1","y2","featureIndex","sourceLayerIndex","bucketIndex","Fa","La","glyphStartIndex","numGlyphs","vertexStartIndex","lineStartIndex","lineLength","lowerSize","upperSize","lineOffsetX","lineOffsetY","writingMode","placedOrientation","hidden","crossTileID","associatedIconIndex","flipState","Ra","Ua","rightJustifiedTextSymbolIndex","centerJustifiedTextSymbolIndex","leftJustifiedTextSymbolIndex","verticalPlacedTextSymbolIndex","placedIconSymbolIndex","verticalPlacedIconSymbolIndex","textBoxStartIndex","textBoxEndIndex","verticalTextBoxStartIndex","verticalTextBoxEndIndex","iconBoxStartIndex","iconBoxEndIndex","verticalIconBoxStartIndex","verticalIconBoxEndIndex","numHorizontalGlyphVertices","numVerticalGlyphVertices","numIconVertices","numVerticalIconVertices","useRuntimeCollisionCircles","textOffset0","textOffset1","collisionCircleDiameter","$a","Oa","getoffsetX","ja","getx","gety","gettileUnitDistanceFromAnchor","qa","layoutVertexArrayOffset","Na","Ga","a_centroid_pos0","a_centroid_pos1","Za","Xa","Ka","Ya","Ha","Ja","Wa","murmur3","murmur2","Qa","ids","positions","indexed","getPositions","Float64Array","eo","MIN_SAFE_INTEGER","ro","no","gl","io","uniform1f","so","uniform4f","ao","oo","lo","uo","ho","uniformNames","setUniform","getBinding","po","patternFrom","patternTo","pixelRatioFrom","pixelRatioTo","setConstantPatternPositions","pixelRatio","tl","fo","maxValue","paintVertexAttributes","paintVertexArray","populatePaintArray","_setPaintValue","updatePaintArray","upload","paintVertexBuffer","updateData","createVertexBuffer","destroy","yo","useIntegerZoom","mo","layerId","zoomInPaintVertexArray","zoomOutPaintVertexArray","_setPaintValues","patterns","mid","zoomInPaintVertexBuffer","zoomOutPaintVertexBuffer","go","binders","_buffers","bo","Ao","cacheKey","getMaxValue","populatePaintArrays","updatePaintArrays","defines","getBinderAttributes","getBinderUniforms","getPaintVertexBuffers","getUniforms","binding","setUniforms","updatePaintBuffers","xo","programConfigurations","needsUpload","_featureMap","_bufferOffset","vo","wo","composite","_o","ko","So","_featureFilter","_filterCompiled","metadata","minzoom","maxzoom","sourceLayer","_unevaluatedLayout","_transitionablePaint","setPaintProperty","setLayoutProperty","_transitioningPaint","_crossfadeParameters","getLayoutProperty","visibility","_validate","getPaintProperty","_handleSpecialPaintPropertyUpdate","_handleOverridablePaintPropertyUpdate","getProgramIds","getProgramConfiguration","isHidden","updateTransitions","recalculate","sprite","is3D","isSky","isTileClipped","hasOffscreenPass","compileFilter","invalidateCompiledFilter","dynamicFilterNeedsFeature","Io","zo","Mo","prepareSegment","MAX_VERTEX_ARRAY_LENGTH","vertexLength","sortKey","vertexOffset","primitiveOffset","primitiveLength","vaos","To","Bo","setSouthWest","setNorthEast","_ne","Po","lng","lat","_sw","extend","getCenter","getSouthWest","getNorthEast","getNorthWest","getWest","getNorth","getSouthEast","getEast","getSouth","contains","Co","wrap","distanceTo","toBounds","lon","Eo","Do","Vo","Fo","Lo","Ro","Uo","exp","$o","Oo","jo","toLngLat","toAltitude","meterInMercatorCoordinateUnits","qo","No","Go","Zo","Xo","Ko","loadGeometry","isReprojectedInTileSpace","Yo","Ho","Jo","overscaling","layerIds","hasPattern","layoutVertexArray","indexArray","stateDependentLayerIds","populate","addFeature","stateDependentLayers","uploadPending","uploaded","layoutVertexBuffer","indexBuffer","createIndexBuffer","Wo","ol","rl","Qo","al","el","nl","sl","ll","ul","cl","hl","dl","fl","layout_circle","yl","paint_circle","ml","quadrant","distanceX","distanceY","distanceZ","getCorners","xl","queryGeometry","isAboveHorizon","pixelToTileUnitsFactor","elevation","exaggeration","getElevationAt","vl","tilespaceRays","_l","screenGeometry","cameraToCenterDistance","bl","wl","intersectsPlane","Al","kl","Uint8ClampedArray","RangeError","Sl","Il","zl","Ml","Tl","paint_heatmap","Bl","resolution","clips","evaluationKey","Cl","paint_hillshade","Pl","El","Dl","Fl","Vl","Ll","Kl","Nl","Rl","Gl","Ul","ou","iu","Wl","su","Jl","Xl","Ol","$l","ql","Yl","Ql","ru","Hl","nu","Zl","eu","tu","au","lu","uu","hu","cu","pu","du","fu","patternDependencies","yu","deviation","mu","patternFeatures","indexArray2","segments2","addFeatures","indexBuffer2","gu","layout_fill","xu","paint_fill","vu","bu","wu","_u","Au","_pbf","_geometry","_keys","readFields","ku","readVarint","Su","types","readSVarint","bbox","toGeoJSON","Iu","zu","version","_features","Mu","readString","readFloat","readDouble","readVarint64","readBoolean","Tu","Bu","VectorTile","VectorTileFeature","VectorTileLayer","Cu","Pu","Eu","Du","polyCount","startRing","currentPolyCount","top","append","borders","processBorderOverlap","checkBorderIntersection","addBorderIntersection","span","intersectsCount","Vu","centroidVertexArray","enableTerrain","featuresOnBorder","borderDone","tileToMeter","sortBorders","uploadCentroid","centroidVertexBuffer","needsCentroidUpdate","Fu","vertexArrayOffset","encodeCentroid","Lu","Ru","Uu","$u","Ou","getMeterToDEM","tileCoordToPixel","getElevationAtPixel","ju","qu","Nu","Gu","Zu","Xu","Ku","lineClipsArray","gradients","layoutVertexArray2","maxLineLength","lineAtlas","addConstantDashes","addFeatureDashes","addDash","getKey","layoutVertexBuffer2","lineFeatureClips","mapbox_clip_start","mapbox_clip_end","lineClips","addLine","scaledDistance","totalDistance","lineSoFar","updateScaledDistance","updateDistance","addCurrentVertex","addHalfVertex","Yu","layout_line","Hu","paint_line","Ju","Wu","Qu","tc","ec","rc","nc","ic","sc","ac","oc","layoutSize","minZoom","maxZoom","minSize","maxSize","lc","uSize","uSizeT","uc","cc","getSizeData","evaluateSizeForFeature","evaluateSizeForZoom","SIZE_PACK_FACTOR","hc","toLocaleUpperCase","toLocaleLowerCase","pc","dc","fc","yc","NaN","mc","gc","xc","buf","Varint","Fixed64","Bytes","Fixed32","vc","bc","wc","TextDecoder","_c","Ac","kc","realloc","Sc","writeVarint","Ic","writeSVarint","zc","writeFloat","Mc","writeDouble","Tc","writeBoolean","Bc","writeFixed32","Cc","writeSFixed32","Pc","writeFixed64","Ec","writeSFixed64","Dc","Vc","Fc","Lc","readMessage","Rc","bitmap","left","advance","Uc","metrics","ascender","descender","readBytes","$c","fill","readFixed32","readSFixed32","readFixed64","readSFixed64","decode","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","finish","writeString","writeBytes","writeRawMessage","writeMessage","writePackedVarint","writePackedSVarint","writePackedBoolean","writePackedFloat","writePackedDouble","writePackedFixed32","writePackedSFixed32","writePackedFixed64","writePackedSFixed64","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","Oc","stretchX","stretchY","paddedRect","displaySize","jc","haveRenderCallbacks","addImages","iconPositions","patternPositions","hasRenderCallback","patchUpdatedImages","dispatchRenderCallbacks","updatedImages","patchUpdatedImage","getImage","qc","horizontal","vertical","horizontalOnly","Nc","imageName","Gc","sectionIndex","imageSectionID","addImageSection","addTextSection","getSection","getSections","getSectionIndex","getCharCode","verticalizePunctuation","trim","Xc","getMaxScale","forText","getNextImageSectionCharCode","forImage","Zc","fromFeature","th","positionedLines","bottom","right","iconsInText","verticalizable","hasBaseline","positionedGlyphs","lineOffset","localGlyph","rect","rh","horizontalAlign","verticalAlign","eh","Kc","Yc","Hc","Jc","Wc","badness","priorBreak","Qc","nh","ih","collisionPadding","sh","ah","angleDelta","oh","lh","uh","ch","hh","ph","dh","fh","yh","mh","gh","none","ideographs","xh","requestManager","localGlyphMode","localFontFamily","entries","localGlyphs","setURL","getGlyphs","requests","ranges","_tinySDF","loadGlyphRange","_doesCharSupportLocalGlyph","tinySDF","TinySDF","fontFamily","fontWeight","fontSize","glyphWidth","glyphHeight","glyphLeft","glyphTop","glyphAdvance","draw","vh","bh","_h","stretch","Ah","fixed","tex","glyphOffset","pixelOffsetTL","pixelOffsetBR","minFontScaleX","minFontScaleY","isSDF","wh","kh","transformRequest","normalizeGlyphsURL","cutoff","fontStyle","_createCanvas","ctx","willReadFrequently","textBaseline","textAlign","fillStyle","gridOuter","gridInner","actualBoundingBoxAscent","actualBoundingBoxDescent","actualBoundingBoxLeft","actualBoundingBoxRight","measureText","clearRect","fillText","Sh","Ih","_down","_up","peek","zh","Mh","Th","SQRT2","Bh","POSITIVE_INFINITY","Ch","Ph","Eh","createArrays","tilePixelRatio","compareText","iconsNeedLinear","textSizeData","compositeTextSizes","iconSizeData","compositeIconSizes","layoutTextSize","layoutIconSize","textMaxSize","allowVerticalPlacement","Dh","icon","sdf","sdfIcons","Rh","Vh","generateCollisionDebugBuffers","collisionBoxArray","projectTilePoint","addToLineVertexArray","$h","Uh","Fh","addSymbols","placedSymbolArray","Lh","glyphOffsetArray","Yh","MAX_GLYPHS","addToSortKeyRanges","symbolInstances","Oh","jh","qh","Nh","Gh","Zh","Xh","dynamicLayoutVertexArray","opacityVertexArray","dynamicLayoutVertexBuffer","opacityVertexBuffer","itemSize","Kh","layoutAttributes","collisionVertexArray","collisionVertexArrayExt","collisionVertexBuffer","collisionVertexBufferExt","hasRTLText","fullyClipped","sortKeyRanges","collisionCircleArray","placementInvProjMatrix","placementViewportMatrix","canOverlap","sortFeaturesByKey","sortFeaturesByY","writingModes","sourceID","lineVertexArray","calculateGlyphDependencies","charAt","iconDependencies","glyphDependencies","getValueAndResolveTokens","factory","hasDebugData","textCollisionBox","iconCollisionBox","destroyDebugData","tileUnitDistanceFromAnchor","_commitLayoutVertex","_addCollisionDebugVertices","_addTextDebugCollisionBoxes","getSymbolInstanceTextSize","_addIconDebugCollisionBoxes","getSymbolInstanceIconSize","_commitDebugCollisionVertexUpdate","_updateTextDebugCollisionBoxes","_updateIconDebugCollisionBoxes","updateCollisionDebugBuffers","hasTextCollisionBoxData","hasIconCollisionBoxData","_deserializeCollisionBoxesForSymbol","textBox","textFeatureIndex","verticalTextBox","verticalTextFeatureIndex","iconBox","iconFeatureIndex","verticalIconBox","verticalIconFeatureIndex","deserializeCollisionBoxes","collisionArrays","hasTextData","hasIconData","addIndicesForPlacedSymbol","getSortedSymbolIndexes","sortedAngle","symbolInstanceIndexes","symbolInstanceEnd","symbolInstanceStart","sortFeatures","featureSortOrder","addDynamicAttributes","Hh","layout_symbol","Jh","paint_symbol","runtimeType","getOverride","hasOverride","Wh","defaultValue","Qh","_setPaintOverrides","createBucket","queryRadius","queryIntersectsFeature","hasPaintOverride","_interpolationType","tp","paint_background","ep","paint_raster","rp","implementation","renderingMode","prerender","onAdd","painter","context","onRemove","np","paint_sky","heatmap","_updateColorRamp","colorRamp","colorRampTexture","heatmapFbo","hillshade","tilespaceGeometry","tile","getBucket","isPointQuery","screenBounds","gradientVersion","stepInterpolant","gradientExpression","symbol","background","raster","sky","_skyboxInvalidated","needsSkyboxCapture","skyboxTexture","skyboxGeometry","_lightPosition","azimuthal","polar","markSkyboxValid","HTMLImageElement","HTMLCanvasElement","op","HTMLVideoElement","lp","up","hp","texture","pixelStoreUnpackFlipY","pixelStoreUnpack","pixelStoreUnpackPremultiplyAlpha","premultiply","texSubImage2D","useMipmap","isSizePowerOfTwo","generateMipmap","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","NEAREST","NEAREST_MIPMAP_NEAREST","LINEAR_MIPMAP_NEAREST","TEXTURE_WRAP_S","TEXTURE_WRAP_T","pp","nextRow","getDash","getDashRanges","isDash","zeroLength","addRoundDash","addRegularDash","dp","_callback","_triggered","MessageChannel","_channel","port2","onmessage","trigger","port1","postMessage","setTimeout","fp","yp","getEntriesByName","mp","tasks","taskQueue","invoker","nextId","isSymbolTile","priority","pick","gp","xp","wp","vp","overscaledZ","scaledTo","calculateScaledKey","isChildOf","isLessThan","wrapped","unwrapTo","overscaleFactor","toUnwrapped","_p","func","mask","range","ReadOnly","ReadWrite","disabled","Ap","kp","fail","depthFail","Sp","blendFunction","blendColor","Replace","unblended","alphaBlended","Ip","zp","Mp","enable","frontFace","backCCW","backCW","frontCW","frontCCW","Tp","_stringToNumber","_numberToString","encode","Bp","_vectorTileFeature","_z","_x","_y","Cp","state","stateChanges","deletedStates","updateState","removeFeatureState","getState","initializeTileState","setFeatureState","coalesceChanges","Pp","minimums","maximums","leaves","getElevation","toIdx","isLeaf","Ep","Dp","Vp","Fp","Lp","childOffsets","nodeCount","dem","_siblingOffset","Up","_addNode","_construct","raycastRoot","raycast","nodex","nodey","depth","Rp","$p","mapbox","terrarium","Op","_tree","_buildQuadTree","stride","encoding","borderReady","_idx","_unpackTerrarium","_unpackMapbox","unpackVector","getUnpackVector","getPixels","backfillBorder","onDeserialize","jp","reset","timeout","clearTimeout","order","_getAndRemoveByKey","getAndRemove","getByKey","setMaxSize","tileID","qp","_onlySymbols","dataType","sourceDataType","_sourceLoaded","_paused","reload","_sourceErrored","_source","_tiles","_cache","_unloadTile","_timers","_cacheTimers","_minTileCacheSize","_maxTileCacheSize","_loadedParentTiles","_coveredTiles","_state","loaded","getSource","pause","resume","_shouldReloadOnResume","_loadTile","loadTile","unloadTile","_abortTile","abortTile","prepare","imageManager","getIds","Np","getRenderableIds","_isIdRenderable","hasRenderableParent","findLoadedParent","hasData","holdingForFade","_reloadTile","_tileLoaded","usedForTerrain","getScaledDemTileSize","resetTileLookupCache","timeAdded","refreshedUponExpiration","_setTileReloadTimer","_backfillDEM","sourceCacheId","neighboringTiles","getTileByID","needsHillshadePrepare","needsDEMTextureUpload","backfilled","getTile","_retainLoadedChildren","_getLoadedTile","reparseOverscaled","updateCacheSize","tileSize","handleWrapJump","_prevLng","freezeTileCoverage","used","getVisibleUnwrappedCoordinates","coveringTiles","roundZoom","isTerrainDEM","hasTile","_updateRetainedTiles","Gp","fadeEndTime","maxOverzooming","_addTile","clearFadeHold","hasSymbolBuckets","setHoldDuration","_fadeDuration","symbolFadeFinished","_removeTile","_updateLoadedParentTileCache","afterUpdate","releaseSymbolFadeTiles","maxUnderzooming","wasRequested","ad","tileZoom","uses","getExpiryTimeout","aborted","clearTiles","_clear","tilesIn","clearQueryDebugViz","containsTile","getVisibleCoordinates","projMatrix","calculateProjMatrix","getFeatureState","setDependencies","reloadTilesForDependencies","hasDependency","_preloadTiles","updateElevation","Zp","_demTile","_dem","_scale","_offset","findDEMTileFor","Xp","grid","featureIndexArray","loadVTLayers","vtLayers","rawTileData","sourceLayerCoder","vtFeatures","tileResult","bufferedTilespaceBounds","bufferedTilespaceGeometry","Yp","loadMatchingFeature","tileTransform","pixelPosMatrix","bucketLayerIDs","getId","Kp","intersectionZ","lookupSymbolFeatures","loadFeature","hasLayer","Hp","Jp","Wp","Qp","td","ed","rd","nd","sd","buckets","expirationTime","queryPadding","dependencies","isRaster","expiredRequestCount","registerFadeDuration","_tileTransform","Ad","loadVectorData","unloadVectorData","latestFeatureIndex","latestRawTileData","getLayer","justReloaded","imageAtlas","glyphAtlasImage","imageAtlasTexture","glyphAtlasTexture","lineAtlasTexture","_tileBoundsBuffer","_tileBoundsIndexBuffer","_tileBoundsSegments","_tileDebugBuffer","_tileDebugIndexBuffer","_tileDebugSegments","globeGridBuffer","globePoleBuffer","ALPHA","queryRenderedFeatures","querySourceFeatures","_geojsonTileLayer","patternsLoaded","setExpiryData","cacheControl","expires","listImages","_getSourceCache","_terrain","enabled","_clearRenderCacheForTile","symbolFadeHoldUntil","_makeDebugTileBoundsBuffers","simpleSegment","_makeTileBoundsBuffers","od","ld","ud","cd","fovAboveCenter","getMinElevationBelowMSL","_camera","position","worldSize","_pitch","_horizonShift","hd","pd","dd","fd","yd","md","xd","gd","vd","bd","wd","_center","_d","_createGridIndices","gridIndexBuffer","gridSegments","_createPoleTriangleIndices","poleIndexBuffer","poleSegments","atmosphereVertexBuffer","atmosphereIndexBuffer","atmosphereSegments","wireframeIndexBuffer","wireframeSegments","getWirefameBuffer","_createWireframeGrid","kd","Sd","showCollisionBoxes","collectResourceTiming","returnDependencies","familiesBySource","Id","stacks","icons","glyphMap","iconMap","glyphPositions","zd","scheduler","request","callbacks","Md","deduped","vectorTile","rawData","Td","Bd","_tr","_worldSize","createInversionMatrix","createTileMatrix","pixelsPerMeter","zoomScale","pointCoordinate","horizonLineFromTop","rayIntersectionCoordinate","pointRayIntersection","upVector","upVectorScale","Cd","parallels","zAxisUnit","conic","unsupportedLayers","initializeConstants","r0","unproject","locationPoint","_coordinatePoint","locationCoordinate","farthestPixelDistance","createTileTransform","Pd","Ed","Dd","Vd","Fd","Ld","Rd","supportsWorldCopies","Ud","$d","Od","jd","requiresDraping","supportsTerrain","supportsFog","supportsFreeCamera","qd","Nd","Gd","Zd","albers","equalEarth","equirectangular","lambertConformalConic","mercator","naturalEarth","winkelTripel","ARRAY_TYPE","AUTH_ERR_MSG","Aabb","Actor","mapId","cancelCallbacks","addEventListener","receive","globalScope","hasCallback","targetMapId","mustQueue","sourceMapId","processTask","getWorkerSource","removeEventListener","CanonicalTileID","Color","ColorMode","CullFaceMode","DEMData","DataConstantProperty","DedupedRequest","DepthMode","EXTENT","Elevation","getAtPointOrZero","getAtPoint","getAtTileOffset","getAtTileOffsetFunc","getForTilePoints","getMinMaxForTile","visibleDemTiles","ErrorEvent","EvaluationParameters","Event","Evented","Frustum","GLOBE_ZOOM_THRESHOLD_MAX","GlobeSharedBuffers","GlyphManager","ImagePosition","LineAtlas","LngLat","LngLatBounds","LocalGlyphMode","MAX_MERCATOR_LATITUDE","MercatorCoordinate","ONE_EM","OverscaledTileID","Properties","RGBAImage","Ray","closestPointOnSphere","RequestManager","_transformRequestFn","_silenceAuthErrors","_createSkuToken","token","tokenExpiresAt","_skuToken","_skuTokenExpiresAt","_isSkuTokenExpired","normalizeStyleURL","_makeAPIURL","normalizeSourceURL","normalizeSpriteURL","normalizeTileURL","canonicalizeTileURL","canonicalizeTileset","tiles","ResourceType","SegmentVector","SourceCache","StencilMode","StructArrayLayout1ui2","StructArrayLayout2f1f2i16","StructArrayLayout2i4","StructArrayLayout2ui4","StructArrayLayout3f12","StructArrayLayout3ui6","StructArrayLayout4i8","Texture","Transitionable","Uniform1f","Uniform1i","uniform1i","Uniform2f","uniform2f","Uniform3f","uniform3f","Uniform4f","UniformColor","UniformMatrix2f","uniformMatrix2fv","UniformMatrix3f","uniformMatrix3fv","UniformMatrix4f","uniformMatrix4fv","UnwrappedTileID","ValidationError","VectorTileWorkerSource","layerIndex","loading","isSpriteLoaded","resourceTiming","reloadTile","reloadCallback","removeTile","WritingMode","ZoomHistory","adjoint","asyncAll","bindAll","boundsAttributes","bufferConvexPolygon","cacheEntryPossiblyAdded","getActor","calculateGlobeMatrix","calculateGlobeMercatorMatrix","clamp","clearTileCache","clipLine","clone$1","collisionCircleLayout","config","conjugate","create$1","createExpression","createLayout","createStyleLayer","ease","easeCubicInOut","emitValidationErrors","endsWith","enforceCacheSizeLimit","evaluateVariableOffset","evented","exactEquals","exactEquals$1","exported","exported$1","extend$1","filterObject","fromMat4","fromQuat","furthestTileCorner","getAABBPointSquareDist","getAnchorAlignment","getAnchorJustification","getBounds","getColumn","getJSON","getMapSessionAPI","getPerformanceMeasurement","getProjection","getRTLTextPluginStatus","getReferrer","getTilePoint","getTileVec3","getVideo","muted","onloadstart","crossOrigin","appendChild","globeBuffersForTileMesh","createGridVertices","createPoleTriangleVertices","globeDenormalizeECEF","globeMatrixForTile","globePoleMatrixForTile","globeTileBounds","globeToMercatorTransition","identity$1","isMapAuthenticated","isMapboxURL","isSafariWithAntialiasingBug","latFromMercatorY","length$1","loadVectorTile","makeRequest","mercatorXfromLng","mercatorYfromLat","mercatorZfromAltitude","mul","mul$1","multiply$1","multiply$2","nextPowerOfTwo","normalize$1","ortho","pbf","perspective","plugin","pointGeometry","polygonIntersectsBox","polygonIntersectsPolygon","polygonizeBounds","posAttributes","potpack","prevPowerOfTwo","refProperties","registerForPluginStateChange","removeAuthState","renderColorRamp","rotateX$1","rotateZ$1","scale$1","scale$2","scaleAndAdd","setCacheLimits","setColumn","setRTLTextPlugin","smoothstep","spec","storeAuthState","symbolSize","tileAABB","transformMat3","transformMat4","transformMat4$1","transformQuat","transpose","triggerPluginCompletionEvent","uniqueId","validateCustomStyleLayer","render","validateFog","validateLight","validateStyle","warnOnce","keyCache","_layerConfigs","_layers","rawImageData","buildQuadTree","offscreenCanvas","offscreenCanvasContext","OffscreenCanvas","_feature","tags","rawGeometry","keycache","valuecache","fromVectorTileJs","fromGeojsonVt","GeoJSONWrapper","nodeSize","coords","minPoints","generateId","fround","trees","load","time","timeEnd","_cluster","getClusters","_limitZoom","getChildren","_getOriginId","_getOriginZoom","parentId","getLeaves","_appendLeaves","_addTileFeatures","getClusterExpansionZoom","cluster_id","point_count","_map","point_count_abbreviated","transformed","numSimplified","numFeatures","debug","tileCoords","indexMaxZoom","indexMaxPoints","stats","splitTile","_geoJSONIndex","byteOffset","loadGeoJSON","loadData","superclusterOptions","geojsonVtOptions","clusterId","getClusterChildren","getClusterLeaves","limit","layerIndexes","projections","defaultProjection","workerSourceTypes","workerSources","demWorkerSources","registerWorkerSource","registerRTLTextPlugin","clearCaches","checkIfReady","setReferrer","spriteLoaded","setImages","setProjection","setLayers","getLayerIndex","updateLayers","removedIds","loadDEMTile","getDEMWorkerSource","removeSource","loadWorkerSource","importScripts","syncRTLPluginState","getAvailableImages","getWorkerPerformanceMetrics","lastIndexOf","reduceRight","Function","getPrototypeOf","getOwnPropertyNames","isSealed","isFrozen","isExtensible","getOwnPropertyDescriptor","defineProperties","seal","preventExtensions","Worker","terminate","failIfMajorPerformanceCaveat","webGLContextAttributes","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","documentMode","antialias","stencil","className","createSVG","createElementNS","setAttributeNS","documentElement","userSelect","disableDrag","enableDrag","preventDefault","stopPropagation","offsetWidth","clientX","clientY","userImage","suppressClick","mousePos","getBoundingClientRect","touchPos","mouseButton","InstallTrigger","button","ctrlKey","platform","images","callbackDispatchedThisFrame","requestors","atlasImage","dirty","setLoaded","_notify","addImage","_validateStretch","_validateContent","updateImage","removeImage","getImages","getPixelSize","getPattern","bin","_updatePatternAtlas","atlasTexture","LINEAR","CLAMP_TO_EDGE","beginFrame","anchor","intensity","_transitionable","setLight","_transitioning","getLight","drapeRenderMode","_transform","horizonBlend","getOpacity","getOpacityAtLatLng","fromLngLat","mercatorFogMatrix","_fov","getFovAdjustedRange","workerPool","actors","currentActor","acquire","ready","broadcast","release","createBuffer","dynamicDraw","unbindVAO","bindElementBuffer","bufferData","ELEMENT_ARRAY_BUFFER","DYNAMIC_DRAW","STATIC_DRAW","bufferSubData","deleteBuffer","attributes","bindVertexBuffer","ARRAY_BUFFER","enableAttributes","enableVertexAttribArray","setVertexAttribPointers","vertexAttribPointer","getDefault","setDefault","clearColor","clearDepth","clearStencil","colorMask","depthMask","stencilMask","ALWAYS","stencilFunc","KEEP","stencilOp","STENCIL_TEST","disable","depthRange","DEPTH_TEST","LESS","depthFunc","BLEND","ONE","ZERO","blendFunc","FUNC_ADD","blendEquation","CULL_FACE","BACK","cullFace","CCW","useProgram","TEXTURE0","activeTexture","drawingBufferWidth","drawingBufferHeight","viewport","bindFramebuffer","FRAMEBUFFER","bindRenderbuffer","RENDERBUFFER","bindBuffer","vao","extVertexArrayObject","bindVertexArrayOES","pixelStorei","UNPACK_ALIGNMENT","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_FLIP_Y_WEBGL","setDirty","framebufferTexture2D","COLOR_ATTACHMENT0","attachment","DEPTH_ATTACHMENT","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","framebuffer","createFramebuffer","colorAttachment","depthAttachment","deleteRenderbuffer","deleteFramebuffer","getExtension","stencilTest","depthTest","blend","cullFaceSide","program","extTextureFilterAnisotropic","extTextureFilterAnisotropicMax","getParameter","MAX_TEXTURE_MAX_ANISOTROPY_EXT","extTextureFilterAnisotropicForceOff","extTextureHalfFloat","extRenderToTextureHalfFloat","extTimerQuery","maxTextureSize","MAX_TEXTURE_SIZE","createRenderbuffer","renderbufferStorage","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","setCullFace","setDepthMode","setStencilMode","setColorMode","cameraPoint","_screenRaycastCache","_cameraRaycastCache","bufferedScreenGeometry","screenGeometryMercator","pointCoordinate3D","cameraGeometry","bufferedCameraGeometry","isPointAboveHorizon","getCameraPoint","_bufferedCameraMercator","_bufferedScreenMercator","getFreeCameraOptions","vector_layers","vectorLayers","vectorLayerIds","validateBounds","dispatcher","scheme","_loaded","_options","_tileJSONRequest","_requestManager","tileBounds","_refreshExpiredTiles","getTileTexture","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","saveTileTexture","_finishLoading","setCoordinates","_boundsArray","_makeBoundsArray","perspectiveTransform","boundsBuffer","boundsSegments","_collectResourceTiming","_tileWorkers","_deduped","setSourceProperty","_getSourceCaches","setTiles","setUrl","_getNeighboringTiles","demTexture","fbo","_data","attribution","workerOptions","clusterMaxZoom","clusterMinPoints","clusterRadius","setData","_updateWorkerData","_pendingLoad","_coalesce","_metadataFired","video","urls","loop","setAttribute","triggerRepaint","play","seek","seekable","currentTime","readyState","paused","videoWidth","videoHeight","canvas","animate","getElementById","_hasInvalidDimensions","_playing","getCanvas","wrappedTileID","queryResults","workerClass","active","workers","workerCount","numActive","isPreloaded","setStyle","addLayer","removeLayer","setFilter","addSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","setTerrain","setFog","command","_distances","paddedLength","boxCells","circleCells","xCellCount","yCellCount","circleKeys","boxKeys","circles","xScale","yScale","boxUid","circleUid","keysLength","_insertBoxCell","insertCircle","_insertCircleCell","_query","hitTest","seenUids","_queryCircle","_queryCellCircle","hitTestCircle","_circleAndRectCollide","_circlesCollide","_convertToXCellCoord","_convertToYCellCoord","_projectionScaler","labelPlaneMatrix","glCoordMatrix","signedDistanceFromCamera","useVertical","needsFlipping","notEnoughRoom","tilePath","ignoredGrid","pitchfactor","screenRightBoundary","screenBottomBoundary","gridRightBoundary","gridBottomBoundary","fogState","placeCollisionBox","projectAndGetPerspectiveRatio","perspectiveRatio","aboveHorizon","isInsideGrid","offscreen","isOffscreen","placeCollisionCircles","collisionDetected","queryRenderedSymbols","bucketInstanceId","insertCollisionBox","collisionGroupID","insertCollisionCircles","calculateFogTileMatrix","getViewportMatrix","opacity","placed","clipped","skipFade","invProjMatrix","viewportMatrix","crossSourceCollisions","maxGroupID","collisionGroups","ID","predicate","collisionIndex","placements","opacities","variableOffsets","stale","commitTime","retainedQueryData","collisionCircleArrays","prevPlacement","placedOrientations","getBucketParts","calculatePixelsToTileUnitsMatrix","unwrappedTileID","bucket","posMatrix","textLabelPlaneMatrix","labelToScreenMatrix","clippingData","textPixelRatio","partiallyEvaluatedTextSize","partiallyEvaluatedIconSize","collisionGroup","attemptAnchorPlacement","textOffset","textScale","prevAnchor","markUsedJustification","markUsedOrientation","placedGlyphBoxes","placeLayerBucketPart","calculateDistanceTileData","commit","zoomAtLastRecencyCheck","prevZoomAdjustment","zoomAdjustment","symbolFadeChange","lastPlacementChangeTime","updateLayerOpacities","updateBucketOpacities","hasTransitions","stillRecent","setStale","_sortAcrossTiles","_currentTileIndex","_currentPartIndex","_seenCrossTileIDs","_bucketParts","continuePlacement","placement","_currentPlacementIndex","_forceFullPlacement","_showCollisionBoxes","_done","isDone","_inProgressLayer","indexedSymbolInstances","getScaledCoordinates","findMatches","maxCrossTileID","usedCrossTileIDs","addBucket","removeBucketCrossTileIDs","removeStaleBuckets","crossTileIDs","maxBucketInstanceId","bucketsInCurrentPlacement","pruneUnusedLayers","glyphManager","localIdeographFontFamily","crossTileSymbolIndex","_num3DLayers","_numSymbolLayers","_numCircleLayers","_serializedLayers","_sourceCaches","_otherSourceCaches","_symbolSourceCaches","_availableImages","_order","_drapedFirstOrder","_markersNeedUpdate","_resetUpdates","_rtlTextPluginCallback","sourceId","_validateLayer","loadURL","accessToken","_request","_load","loadJSON","loadEmpty","_updateLayerCount","stylesheet","updateProjection","_changed","_loadSprite","_serializeLayers","terrainSetForDrapingOnly","_createTerrain","_createFog","_updateDrapeFirstLayers","_runtimeProjection","getTerrain","setTerrainForDraping","projectionOptions","clearBackgroundTiles","_forceSymbolLayerUpdate","_update","_spriteRequest","_updatedSources","_optimizeForTerrain","isLayerDraped","_checkLoaded","_updatedLayers","_removedLayers","_updateWorkerLayers","_reloadSource","_clearSource","_updateTilesForChangedImages","_updatedPaintProps","_getLayerSourceCache","_updateMarkersOpacity","_changedImages","_afterImageUpdated","isSourceLoaded","_layerOrderChanged","_updateLayer","moveLayer","hasLayerType","getFilter","_flattenAndSortRenderedFeatures","has3DLayers","createFromScreenPoints","_showQueryGeometry","addSourceType","getSourceType","setSourceType","workerSourceURL","_force3DLayerUpdate","_markers","_requestDomTask","_evaluateOpacity","getFog","_remove","_updateSources","_generateCollisionBoxes","_updatePlacement","pauseablePlacement","_releaseSymbolFadeTiles","getResource","hasSymbolLayers","hasCircleLayers","_clearWorkerCaches","backgroundPattern","clippingMask","heatmapTexture","collisionBox","collisionCircle","fillOutline","fillOutlinePattern","fillPattern","fillExtrusion","fillExtrusionPattern","hillshadePrepare","linePattern","symbolIcon","symbolSDF","symbolTextAndIcon","terrainRaster","terrainDepth","skybox","skyboxGradient","skyboxCapture","globeRaster","globeAtmosphere","staticUniforms","fragmentSource","vertexSource","staticAttributes","boundProgram","boundLayoutVertexBuffer","boundPaintVertexBuffers","boundIndexBuffer","boundVertexOffset","boundDynamicVertexBuffer","boundDynamicVertexBuffer2","freshBind","numAttributes","createVertexArrayOES","currentNumAttributes","disableVertexAttribArray","deleteVertexArrayOES","prepareDrawTile","moving","u_matrix","u_image","u_latrange","u_light","u_shadow","u_highlight","u_accent","prepareDrawProgram","tileBoundsBuffer","tileBoundsIndexBuffer","tileBoundsSegments","getTileBoundsBuffers","TRIANGLES","TEXTURE1","getMercatorTileBoundsBuffers","u_dimension","u_zoom","u_unpack","u_image0","u_skirt_height","u_proj_matrix","u_globe_matrix","u_merc_matrix","u_zoom_transition","u_merc_center","operations","newMorphing","queued","startTime","phase","getMorphValuesForProxy","_validOp","_nextOp","coveringZoomLevel","mix","renderCache","renderCachePool","proxyCachedFBO","freeFBO","deallocRenderCache","fb","proxyTileKey","terrainTileForTile","prevTerrainTileForTile","gridBuffer","gridNoSkirtSegments","proxyCoords","proxiedCoords","_visibleDemTiles","_drapedRenderBatches","_sourceTilesOverlap","proxySourceCache","orthoMatrix","_overlapStencilMode","GEQUAL","REPLACE","_previousZoom","pool","_findCoveringTileCache","_tilesDirty","_useVertexMorphing","_exaggeration","_mockSourceCache","_onStyleDataEvent","_checkRenderCacheEfficiency","_style","sourceCache","_initializing","_emptyDEMTextureDirty","_disable","renderCacheEfficiency","efficiency","firstUndrapedLayer","_invalidateRenderCache","_sharedDepthStencil","_emptyDEMTexture","_emptyDepthBufferTexture","_depthFBO","_depthTexture","drapeBufferSize","useVertexMorphing","updateTileBinding","_centerAltitude","proxyToSource","_setupProxiedCoordsForOrtho","_assignTerrainTiles","_prepareDEMTextures","_setupDrapedRenderBatches","_initFBOPool","_setupRenderCache","renderingToTexture","_updateTimestamp","_findTileCoveringTileID","_prepareDemTileUniforms","emptyDEMTexture","_updateEmptyDEMTexture","emptyDepthBufferTexture","_getLoadedAreaMinimum","TEXTURE2","pack","setupElevationDraw","u_dem","u_dem_prev","u_dem_unpack","u_dem_tl","u_dem_tl_prev","u_dem_scale","u_dem_scale_prev","u_dem_size","u_dem_lerp","u_depth","u_depth_size_inv","u_exaggeration","u_tile_tl_up","u_tile_tr_up","u_tile_br_up","u_tile_bl_up","u_tile_up_scale","morphing","srcDemTile","dstDemTile","TEXTURE4","TEXTURE3","useDepthForOcclusion","useMeterToDem","u_meter_to_dem","labelPlaneMatrixInv","u_label_plane_matrix_inv","setTerrainUniformValues","renderToBackBuffer","showTerrainWireframe","colorModeForRenderPass","LEQUAL","depthRangeFor3D","globeSharedBuffers","LINES","renderWorldCopies","renderBatch","renderedToTile","_setupStencil","renderLayer","postRender","minx","maxx","_createFBO","DEPTH_STENCIL","_stencilRef","_shouldDisableRenderCache","_clearRasterFadeFromRenderCache","_overlapStencilType","EQUAL","GREATER","_renderTileClippingMasks","clipOrMaskOverlapStencilType","stencilModeForRTTOverlap","_tileClippingMaskIDs","tileExtentBuffer","quadTriangleIndexBuffer","tileExtentSegments","pixelMatrixInverse","drawDepth","DEPTH_COMPONENT16","_setupProxiedCoordsForImageSource","_createProxiedId","createProgram","FRAGMENT_SHADER","failedToCreate","attachShader","bindAttribLocation","linkProgram","deleteShader","getUniformLocation","fixedUniforms","binderUniforms","terrainUniforms","fogUniforms","u_fog_matrix","u_fog_range","u_fog_color","u_fog_horizon_blend","u_fog_temporal_offset","setFogUniformValues","LINE_STRIP","drawElements","UNSIGNED_SHORT","u_texsize","u_scale","u_fade","u_pixel_coord_upper","u_pixel_coord_lower","u_lightpos","u_lightintensity","u_lightcolor","u_vertical_gradient","u_opacity","u_height_factor","u_world","pixelsToGLUnits","u_camera_to_center_distance","translatePosMatrix","u_device_pixel_ratio","u_extrude_scale","u_color","u_overlay","u_overlay_scale","u_intensity","u_pixels_to_tile_units","u_units_to_pixels","u_dash_image","u_gradient_image","u_image_height","u_mix","u_alpha_discard_threshold","u_tl_parent","u_scale_parent","u_fade_t","u_image1","u_brightness_low","u_brightness_high","u_saturation_factor","u_contrast_factor","u_spin_weights","u_perspective_transform","u_is_size_zoom_constant","u_is_size_feature_constant","u_size_t","u_size","u_pitch","u_rotate_symbol","u_aspect_ratio","u_fade_change","u_label_plane_matrix","u_coord_matrix","u_is_text","u_pitch_with_map","u_tile_id","u_inv_rot_matrix","u_texture","u_gamma_scale","u_is_halo","u_texsize_icon","u_texture_icon","u_pattern_tl_a","u_pattern_br_a","u_pattern_tl_b","u_pattern_br_b","u_pattern_size_a","u_pattern_size_b","u_scale_a","u_scale_b","u_tile_units_to_pixels","u_inv_matrix","u_viewport_size","u_color_ramp","u_sun_direction","u_cubemap","u_temporal_offset","u_center_direction","u_radius","u_matrix_3f","u_sun_intensity","u_color_tint_r","u_color_tint_m","u_luminance","u_center","u_screen_size","u_pixel_ratio","u_fadeout_range","u_start_color","u_end_color","circleArray","circleOffset","invTransform","shiftedAnchor","depthModeForSublayer","rotating","zooming","buffers","uniformValues","atlasTextureIcon","atlasInterpolation","atlasInterpolationIcon","hasHalo","stencilModeForClipping","a_centroid_pos","vertexAttrib2f","SCISSOR_TEST","scissor","emptyTexture","debugBuffer","debugIndexBuffer","debugSegments","initDebugOverlayCanvas","debugOverlayCanvas","shadowColor","shadowBlur","lineWidth","strokeStyle","strokeText","debugOverlayTexture","vertexArray","vertexBuffer","TEXTURE_CUBE_MAP_POSITIVE_X","renderPass","programConfiguration","HALF_FLOAT_OES","viewportBuffer","viewportSegments","gradient","REPEAT","INVERT","resetStencilClippingMasks","opaquePassEnabledForLayer","stencilModeFor3D","stencilConfigForOverlap","isPatternMissing","getBackgroundTiles","frameCounter","skyboxFbo","TEXTURE_CUBE_MAP","skyboxMatrix","custom","setCustomLayerDefaults","customLayerMatrix","setBaseState","_tileTextures","frameCopies","loadTimeStamps","setup","numSublayers","depthEpsilon","gpuTimers","_backgroundTiles","updateTerrain","_updateFog","fogCullDistSq","_terrainEnabled","mercatorBoundsBuffer","mercatorBoundsSegments","identityMat","stencilClearMode","nextStencilID","currentStencilSource","NOTEQUAL","_showOverdrawInspector","CONSTANT_COLOR","currentLayer","opaquePassCutoff","showOverdrawInspector","isHorizonVisible","getWorldToCamera","getCameraToClipPerspective","_nearZ","_farZ","showTileBoundaries","showQueryGeometry","showPadding","centerPoint","tileLoaded","speedIndexTiming","saveCanvasCopy","gpuTimingStart","isInitialLoad","gpuTimingEnd","gpuTiming","calls","cpuTime","createQueryEXT","beginQueryEXT","TIME_ELAPSED_EXT","endQueryEXT","collectGpuTimers","queryGpuTimers","getQueryObjectEXT","QUERY_RESULT_EXT","deleteQueryEXT","currentGlobalDefines","setTileLoadedFlag","canvasCopy","copyTexImage2D","getCanvasCopiesAndTimestamps","canvasCopies","timeStamps","averageElevationNeedsEasing","_elevation","_position","_renderWorldCopies","lookAtPoint","setPitchBearing","_orientation","mercatorPosition","getPitchBearing","getCameraToWorld","getWorldToCameraPosition","getDistanceToElevation","_minZoom","_maxZoom","_minPitch","_maxPitch","setMaxBounds","_unmodified","_edgeInsets","_projMatrixCache","_alignedProjMatrixCache","_fogTileMatrixCache","_distanceTileDataCache","_averageElevation","cameraElevationReference","maxPitch","getMaxBounds","_setZoom","_cameraZoom","_calcMatrices","_updateCenterElevation","_updateCameraOnTerrain","_constrainCameraAltitude","minPitch","cameraWorldSize","_worldSizeFromZoom","_zoomFromMercatorZ","cameraPixelsPerMeter","centerOffset","rotationMatrix","fov","averageElevation","_calcFogMatrices","_zoom","_constrain","zoomFraction","sampleAverageElevation","_updateZoomFromElevation","_mercatorZfromZoom","computeZoomRelativeTo","setFreeCameraOptions","_updateCameraState","_setCameraOrientation","_setCameraPosition","_updateStateFromCamera","recenterOnTerrain","isPaddingEqual","interpolatePadding","scaleZoom","fromInvProjectionMatrix","aabb","fullyVisible","shouldSplit","distanceSq","unmodified","setLocationAtPoint","setLocation","coordinateLocation","locationPoint3D","pointLocation","pointLocation3D","screenPointToMercatorRay","pixelMatrix","_getBounds","_getBounds3D","maxBounds","minLat","maxLat","minLng","maxLng","worldMinX","worldMaxX","worldMinY","worldMaxY","calculatePosMatrix","worldToFogMatrix","mercatorMatrix","alignedProjMatrix","_pixelsToTileUnitsCache","inverseAdjustmentMatrix","_computeCameraPosition","_minimumHeightOverTerrain","_constraining","_minZoomForBounds","_maxCameraBoundsDistance","_translateCameraConstrained","anyCornerOffEdge","zoomDeltaToMovement","_hashName","_updateHash","_updateHashUnthrottled","addTo","_onHashChange","getHashString","getZoom","getBearing","getPitch","hash","_getCurrentHash","dragRotate","isEnabled","touchZoomRotate","jumpTo","history","replaceState","linearity","easing","deceleration","maxSpeed","_inertiaBuffer","record","_drainInertiaBuffer","settings","_onMoveEnd","pan","pinchAround","around","zoomDelta","bearingDelta","pitchDelta","panDelta","noMoveStart","_defaultPrevented","defaultPrevented","getCanvasContainer","lngLat","originalEvent","changedTouches","touches","lngLats","_clickTolerance","clickTolerance","_mousedownPos","wheel","_firePreventable","mousedown","mouseup","preclick","click","dblclick","mouseover","mouseout","touchstart","touchmove","touchend","touchcancel","isActive","_delayContextMenu","_contextMenuEvent","mousemove","contextmenu","_el","_container","getContainer","_enabled","_active","shiftKey","_startPos","_lastPos","mousemoveWindow","_box","classList","_fireEvent","mouseupWindow","cameraAnimation","fitScreenCoordinates","linear","keydown","keyCode","blur","numTouches","timeStamp","singleTap","numTaps","lastTime","lastTap","_zoomIn","_zoomOut","easeTo","_moved","_lastPoint","_eventButton","_correctButton","_move","buttons","_minTouches","_touches","_sum","_calculateTransform","_cooperativeGestures","isMoving","_showTouchPanBlockerAlert","_alertContainer","_alertTimer","_addTouchPanBlocker","textContent","_getUIString","clientWidth","_firstTwoTouches","_start","_aroundCenter","_distance","_startDistance","_minDiameter","_startVector","_vector","_isBelowThreshold","_valid","_firstMove","_lastPoints","gestureBeginsVertically","panStep","bearingStep","pitchStep","_panStep","_bearingStep","_pitchStep","_rotationDisabled","altKey","metaKey","easeId","disableRotation","enableRotation","_handler","_delta","_defaultZoomRate","_wheelZoomRate","setZoomRate","setWheelZoomRate","_finishTimeout","isZooming","_zooming","_addScrollZoomBlocker","_isFullscreen","_showBlockerAlert","deltaMode","WheelEvent","DOM_DELTA_LINE","deltaY","_lastWheelEventTime","_type","_lastValue","_timeout","_onTimeout","_lastWheelEvent","_frameId","_aroundPoint","_aroundCoord","_targetZoom","_triggerRenderFrame","renderFrame","_startZoom","_easing","_smoothOutEasing","noInertia","needsRenderFrame","aroundCoord","_prevEase","fullscreenElement","webkitFullscreenElement","_clickZoom","_tapZoom","_tap","_swipePoint","_swipeTouch","_tapTime","_mousePan","_touchPan","_inertiaOptions","_pitchWithRotate","pitchWithRotate","_mouseRotate","_mousePitch","_touchZoom","_touchRotate","_tapDragZoom","drag","projectRay","_handlers","_handlersById","_changes","_inertia","_bearingSnap","bearingSnap","_previousActiveHandlers","_trackingEllipsoid","_dragOrigin","_eventsInProgress","_addDefaultHandlers","passive","capture","handleWindowEvent","handleEvent","boxZoom","doubleClickZoom","touchPitch","dragPan","scrollZoom","keyboard","interactive","handlerName","handler","allowed","_updatingCamera","_fireEvents","isRotating","_blockedByActive","_getMapTouches","mergeHandlerResult","_stop","_applyChanges","_updateMapTransform","resetNorth","_requestFrame","_renderTaskQueue","_moving","panBy","panTo","zoomTo","zoomIn","zoomOut","getPadding","setPadding","rotateTo","resetNorthPitch","snapToNorth","cameraForBounds","_cameraForBoxAndBearing","_extendCameraOptions","_cameraForBox","fitBounds","_fitInternal","_raycastElevationBox","minLngLat","maxLngLat","minAltitude","maxAltitude","flyTo","preloadOnly","essential","_normalizeBearing","_normalizeCenter","_rotating","_pitching","_fireMoveEvents","_emulate","pitching","_padding","_easeId","_prepareEase","_ease","_afterEase","speed","curve","screenSpeed","maxDuration","isEasing","_easeFrameId","_cancelRenderFrame","_onEaseFrame","_onEaseEnd","handlers","_easeStart","_easeOptions","_requestRenderFrame","_renderFrameCallback","getDefaultPosition","compact","_compactButton","_toggleAttribution","_setElementTitle","_innerContainer","_updateAttributions","_updateEditLink","_updateData","_updateCompact","_attribHTML","removeAttribute","firstElementChild","_editLink","querySelector","styleOwner","styleId","_hash","rel","owner","customAttribution","innerHTML","display","_updateLogo","_logoRequired","mapbox_logo","_queue","_id","_cleared","_currentlyRunning","run","HTMLElement","_anchor","_color","_draggable","draggable","_isDragging","_rotation","_rotationAlignment","rotationAlignment","_pitchAlignment","pitchAlignment","_updateMoving","_element","_defaultMarker","viewBox","rx","ry","hasAttribute","_popup","_clearFadeTimer","_addMarker","setDraggable","_onMapClick","_addDragHandler","_onUp","_onMove","_removeMarker","getLngLat","_lngLat","setLngLat","_pos","getElement","setPopup","_onKeyPress","_originalTabIndex","getAttribute","charCode","togglePopup","getPopup","isOpen","_transformedOffset","_withinScreenBounds","_queryFogOpacity","_setOpacity","_fadeTimer","_updateDOM","_calculatePitch","_calculateRotation","_updateFrameId","getOffset","setOffset","_pointerdownPos","_positionDelta","pointerEvents","isDraggable","setRotation","getRotation","setRotationAlignment","getRotationAlignment","setPitchAlignment","getPitchAlignment","_startTime","_endTime","_end","cooperativeGestures","attributionControl","preserveDrawingBuffer","trackResize","optimizeForTerrain","refreshExpiredTiles","maxTileCacheSize","parentNode","removeChild","showCompass","showZoom","visualizePitch","mouseRotate","mousePitch","down","move","offTemp","targetTouches","positionOptions","enableHighAccuracy","maximumAge","fitBoundsOptions","trackUserLocation","showAccuracyCircle","showUserLocation","showUserHeading","_containerHeight","closeButton","closeOnClick","focusAfterOpen","_interactive","minTileCacheSize","_failIfMajorPerformanceCaveat","_preserveDrawingBuffer","_antialias","_trackResize","_isInitialLoad","_crossSourceCollisions","_crossFadingFactor","_domRenderTaskQueue","_controls","_mapId","_locale","_containerWidth","_averageElevationLastSampledAt","testMode","container","childNodes","_setupContainer","_setupPainter","_onWindowOnline","_onWindowResize","_localFontFamily","_localIdeographFontFamily","addControl","_logoControl","logoPosition","_getMapId","_controlPositions","firstChild","removeControl","hasControl","_canvasContainer","_canvas","_updateContainerDimensions","_resizeCanvas","setMinZoom","getMinZoom","setMaxZoom","getMaxZoom","setMinPitch","getMinPitch","setMaxPitch","getMaxPitch","getRenderWorldCopies","setRenderWorldCopies","_lazyInitEmptyStyle","_transitionFromGlobe","_createDelegatedListener","listener","delegates","_delegatedListeners","queryTerrainElevation","exaggerated","_diffStyle","_updateStyle","_updateTerrain","_updateDiff","getStyle","isStyleLoaded","areTilesLoaded","hasImage","loadImage","_updateProjection","getComputedStyle","parentElement","_detectMissingCSS","_missingCSSCanary","getPropertyValue","_contextLost","_contextRestored","_controlContainer","_onMapScroll","_frame","scrollTop","scrollLeft","_styleDirty","_sourcesDirty","_render","_updateAverageElevation","_removed","_forceMarkerUpdate","_placementDirty","gpuTime","layerTimes","_repaint","_triggerFrame","_calculateSpeedIndex","speedIndex","_fullyLoaded","_authenticate","readPixels","_canvasPixelComparison","loseContext","_renderNextFrame","_showTileBoundaries","_showTerrainWireframe","_speedIndexTiming","_showPadding","repaint","_vertices","_setCacheLimits","NavigationControl","_zoomInButton","_createButton","_zoomOutButton","_compass","_compassIcon","_updateZoomButtons","_rotateCompassArrow","_setButtonTitle","GeolocateControl","_onDeviceOrientationListener","_onDeviceOrientation","_updateMarkerRotationThrottled","_updateMarkerRotation","_setupUI","permissions","geolocation","_geolocationWatchID","clearWatch","_userLocationDotMarker","_accuracyCircleMarker","_onZoom","_isOutOfMapMaxBounds","longitude","latitude","_setErrorState","_watchState","_geolocateButton","_onSuccess","_updateMarker","_finish","_lastKnownPosition","_updateCamera","_dotElement","accuracy","geolocateSource","_accuracy","_updateCircleRadius","_circleElement","_heading","_onError","_clearWatch","_timeoutId","_setup","webkitCompassHeading","absolute","watchPosition","_addDeviceOrientationListener","getCurrentPosition","DeviceMotionEvent","requestPermission","DeviceOrientationEvent","AttributionControl","ScaleControl","setUnit","FullscreenControl","_fullscreen","_fullscreenchange","_checkFullscreenSupport","_changeIcon","fullscreenEnabled","webkitFullscreenEnabled","_fullscreenButton","_updateTitle","_onClickFullscreen","_getTitle","toggle","exitFullscreen","webkitCancelFullScreen","requestFullscreen","webkitRequestFullscreen","Popup","_classList","_onClose","closeOnMove","_focusFirstElement","_trackPointer","_onMouseMove","_onMouseUp","_content","_onDrag","trackPointer","setText","setDOMContent","createTextNode","setHTML","createDocumentFragment","getMaxWidth","setMaxWidth","hasChildNodes","_createCloseButton","addClassName","_updateClassList","removeClassName","toggleClassName","_closeButton","_getAnchor","offsetHeight","_tip","focus","Marker","Point","FreeCameraOptions","prewarm","clearPrewarmedResources","baseApiUrl","maxParallelImageRequests","clearStorage","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","enumerable","obj","prop","__WEBPACK_EXTERNAL_MODULE_three__","BackSide","Bone","Box2","Box3","BufferAttribute","BufferGeometry","Camera","Clock","CubicInterpolant","DataTexture","DoubleSide","Euler","EventDispatcher","Float32BufferAttribute","FloatType","FrontSide","Group","HalfFloatType","Int32BufferAttribute","LOD","Line3","LineBasicMaterial","LineSegments","LinearEncoding","LinearFilter","LinearInterpolant","LuminanceFormat","MathUtils","Matrix4","Mesh","MeshStandardMaterial","NoToneMapping","Object3D","PerspectiveCamera","PlaneGeometry","Points","PointsMaterial","Quaternion","RGBAFormat","Raycaster","Scene","SkinnedMesh","Sphere","Triangle","UniformsUtils","Vector2","Vector3","Vector4","WebGLRenderTarget","WebGLRenderer","CONTEXT_OPTIONS","nextRendererId","_RenderersController","_printDebug","_require_webgl2","setPrintDebug","printDebug","printDebugMessage","setRequireWebGL2","webGL2Available","_webgl2_available","_setWebGL2Available","WebGL2RenderingContext","createWebGLRenderer","renderer","assignIdToRenderer","_polygonId","rendererId","getRenderingContext","_getRenderingContextWebgl","contextId","_nextGlContextId","webgl2","context_name","renderTarget","multiSampleRenderTarget","samples","linearRenderer","_linearRenderer","_createLinearRenderer","premultipliedAlpha","outputEncoding","toneMapping","RenderersController","PolyLibsController","_rootPrefix","_root","_KTX2Path","_DRACOPath","_DRACOGLTFPath","_XATLASPath","root","setRoot","setRootPrefix","KTX2Path","DRACOPath","DRACOGLTFPath","XATLASPath","NodesRegister","_node_register","_node_register_categories","_node_register_options","filterType","nodeType","tab_menu_category","_b","printWarnings","current_nodes_for_context","isAlreadyRegisteredNodePolyNode","polyNode","isNewNodePolyNode","onRegister","current_categories","current_options","pluginsRegister","registerNode","deregister","isRegistered","nodes_for_context","nodeOptions","registeredNodesForParentNode","childrenController","parentOptions","option_only","option_except","context_and_type","registeredNodes","nodesByType","registeredCategory","OperationsRegister","_operation_register","operation","current_operations_for_context","operationType","registerOperation","registeredOperationsForContextAndParentType","parentNodeType","registeredOperation","ExpressionRegister","_methods_names","_methods_by_name","getMethod","availableMethods","AssemblersRegister","_controllerAssemblerByName","controller","assembler","unregister","traverse","pair","PolyPlugin","_name","libraryName","init","libraryImportPath","PluginsRegister","_pluginsByName","_pluginNameByNodeContextByType","_pluginNameByOperationContextByType","async","_configurePolygonjsPlugin","_currentPlugin","previousCurrentPlugin","pluginByName","pluginName","mapForContext","toJson","plugins","PolyCamerasRegister","_cameraNodeTypes","_registeredViewerCreateCallbackByCamera","registerNodeType","registeredNodeTypes","cameraClass","viewerCreateCallback","createViewer","camera","objectRegistered","BlobsController","_blobWrappersByUrl","recording","playerMode","blobUrl","clearBlobsForNode","nodeId","graphNodeId","blobWrapper","referringNodeIds","wrapper","_assignBlobToNode","multiAssetsForNode","currentBlobWrapper","file","_createBlobUrl","existingBlobWrapper","remapedUrl","assetUrls","err","fullUrl","_forEachBlob","urls2","isGlobal","fileOrBlob","webkitURL","assetsManifestWithBlobsMap","manifest","blobsMap","blobs","fullUrls","blobData","paramUrl","assetShortName","elements","assignedName","fileNameInZip","AssetUrlsController","setMap","preQuery","PolyPerformanceformanceController","setPerformanceManager","_performanceManager","performanceManager","ScenesRegister","_scenes","_registerTimeByScene","registerScene","scene","_updateCache","deregisterScene","lastRegisteredScene","_lastRegisteredScene","scenes","registerTime","lastRegisterTime","LogoController","_logoDisplayed","_redirectUrl","_datauri","datauri","redirectUrl","displayed","PolyEngine","renderersController","scenesRegister","nodesRegister","operationsRegister","expressionsRegister","assemblersRegister","camerasRegister","logo","scenesByUuid","_playerMode","_logger","__POLYGONJS_POLY_INSTANCE__","setPlayerMode","registerCamera","registerCameraNodeType","registerPlugin","wrapConfigurePolygonjs","parent_context","operation_type","inWorkerThread","libs","_libs_controller","setEnv","_env","setLogger","logger","optionalParams","_instance_","DirtyController","_dirtyCount","_dirty","dispose","_cachedSuccessors","_postDirtyHooks","_postDirtyHookNames","isDirty","dirtyTimestamp","_dirtyTimestamp","dirtyCount","addPostDirtyHook","removePostDirtyHook","hasHook","removeDirtyState","setForbiddenTriggerNodes","_forbiddenTriggerNodeIds","dirtyController","clearSuccessorsCacheWithPredecessors","isForbiddenTriggerNodeId","original_trigger_graph_node","propagate","runPostDirtyHooks","setSuccessorsDirty","cooker","blocked","enqueue","hook","graphAllSuccessors","successor","clearSuccessorsCache","predecessors","graphAllPredecessors","predecessor","CoreGraphNode","_scene","_dirtyController","disposed","_graphNodeId","graph","addNode","_graph","graphRemove","setName","addGraphInput","checkCycle","connect","removeGraphInput","disconnect","graphDisconnectPredecessors","disconnectPredecessors","graphDisconnectSuccessors","disconnectSuccessors","graphPredecessorIds","predecessorIds","graphPredecessors","graphSuccessors","successors","allPredecessors","allSuccessors","NodeEvent","NodeEvent2","CoreType","UIData","_width","_layoutVertical","_json","_comment","setComment","comment","emit","UI_DATA_COMMENT_UPDATED","setColor","setLayoutHorizontal","isLayoutVertical","ui_data","setPosition","newPosition","isNumber","UI_DATA_POSITION_UPDATED","BaseFlag","_hooks","onUpdate","_onUpdate","newState","insideALockedParent","lockedParent","runHooks","BypassFlag","FLAG_BYPASS_UPDATED","DisplayFlag","FLAG_DISPLAY_UPDATED","OptimizeFlag","FLAG_OPTIMIZE_UPDATED","FlagsController","hasDisplay","hasBypass","hasOptimize","Display","Base","Bypass","bypass","Optimize","optimize","FlagsControllerBO","FlagsControllerDBO","NodeBaseState","NodeTimeDependentState","paramsTimeDependent","inputsTimeDependent","param_names","names","param_name","param","states","timeDependent","inputs","forceTimeDependent","predecessor_ids","frame_node","timeController","graphNode","unforceTimeDependent","NodeErrorState","_message","_setContainer","ERROR_UPDATED","NodeStatesController","GraphNodePathParamValue","_path","_graphNode","_setGraphNode","setPath","TypedNodePathParamValue","setNode","graphNodePath","resolve","nodeStart","CoreWalker","findNode","nodeWithContext","errorState","foundNode","node_context","TypedParamPathParamValue","setParam","findParam","paramWithType","paramType","error_state","foundParam","_CoreWalker","SEPARATOR","child_path","child","node_src","decomposedPath","first_element","next_node","PARENT","add_path_element","CURRENT","add_node","remainder","path_from_root","node_path","src_graph_node","dest_graph_node","closestCommonParent","distanceToParent","ups","parent_path_elements","dest_path_elements","remaining_elements","cmptr","dest_path_element","sanitizePath","graph_node1","graph_node2","parents1","parents2","min_depth","found_parent","graph_node","dest","dest_id","nodeSrc","pathElements","firstElement","makeAbsolutePath","DOT","CURRENT_WITH_SLASH","PARENT_WITH_SLASH","NON_LETTER_PREFIXES","HierarchyParentController","_parent","setParent","parentController","nameController","requestNameToParent","firstAncestorWithContext","findParent","relativeToParent","separator","parent_fullPath","onSetParent","_on_set_parent_hooks","childByName","newElement","elementToRemove","newElements","pushOnArrayAtEntry","SetUtils","elem","set0","set1","newSet","newArray","fromArray","chunkSize","newSubArray","array0","array1","toSet","intersection","difference","elementsByValue","valuesSet","isString","sorted_elements","elements_for_value","ATTRIB_NAMES_SEPARATOR","TAIL_DIGIT_MATCH_REGEXP","LEADING_ZEROS_MATCH_REGEXP","INDICES_LIST_SEPARATOR","NUM_REGEXP","CoreString","word","numbers_as_str","zeros_prefix","leading_zeros_match","digits","str","newWord","upperFirst","frac","padEnd","string_to_pad","pad","num_as_string","exclusionFilters","startsWith","exclusionFilter","matchMask","masks","matches_one_mask","indices_string","flatMap","range_separator","range_elements","parsed","CoreNodeSelection","_node","_nodeIds","nodeIds","nodesFromIds","node_ids","_sendUpdateEvent","nodesToAdd","nodeIdsToAdd","nodesToRemove","nodeIdsToRemove","_checkValidity","SELECTION_UPDATED","InputCloneMode","InputCloneMode2","TypeAssert","ClonedStatesController","inputs_controller","_clone_required_states","_overridden","initInputsClonedState","_cloned_states","_cloned_state","_update_clone_required_state","override_cloned_state_allowed","FROM_NODE","clone_required_state","clone_required_states","_get_clone_required_state","clone_required_from_state","NEVER","unreachable","override_cloned_state","overriden","max_inputs","inputsCount","OperationInputsController","operationContainer","_clonedStatesController","cloneRequired","SopOperationContainer","init_params","_applyDefaultParams","_applyInitParams","_initClonedStates","pathParamResolveRequired","_path_params","resolvePathParams","node_start","path_param","default_params","DEFAULT_PARAMS","param_data","clone_param_data","_convertParamData","paramNames","paramName","simple_data","convertExportParamData","paramData","isBoolean","setInput","_inputs","inputsController","_inputsController","default_cloned_states","INPUT_CLONED_STATE","inputCloneRequired","overrideInputCloneState","cook","input_contents","_currentInputIndex","addInput","incrementInputIndex","currentInputIndex","_computeResult","operation_inputs_map","operationInputContents","nodeInputsMap","node_input_index","operation_input_index","inputOperation","result2","compute","NameController","_onSetNameHooks","_onSetFullPathHooks","last_char","newName","childrenAllowed","setChildName","updateNameFromParent","new_name","_setCoreName","_postSetName","runPostSetFullPathHooks","child_node","lifecycle","creationCompleted","loadingController","missingExpressionReferencesController","checkForMissingNodeReferences","expressionsController","regenerateReferringExpressions","referencesController","notifyNameUpdated","NAME_UPDATED","add_post_set_name_hook","add_post_set_fullPath_hook","HierarchyChildrenController","_context","_childrenByName","_childrenByType","_childrenAndGrandchildrenByContext","selection","_selection","setOutputNodeFindMethod","_output_node_find_method","outputNode","currentChildWithName","sanitizeName","currentName","_addToNodesByType","nodesController","addToInstanciatedNode","_nextAvailableChildName","nodeName","nodeContextSignature","availableChildrenClasses","isValidChildType","node_type","createNode","nodeClassOrString","nodeClass","_findNodeClass","_createAndInitNode","requestedNodeName","baseName","childNode","initializeBaseAndNode","setCreationCompleted","createOperationContainer","operation_container_name","operation_class","paramsInitValueOverrides","CREATED","child_node_json","lifecycleController","onAfterCreatedCallbackAllowed","runOnAfterCreatedCallbacks","runOnAfterAddedCallbacks","runOnChildAddCallbacks","require_webgl2","webgl_controller","set_require_webgl2","lockedOrInsideALockedParent","lockedNode","selfOrLockedParent","reason","polyNodeController","setLockedState","runOnBeforeDeleteCallbacks","first_connection","connections","firstInputConnection","input_connections","inputConnections","output_connections","outputConnections","input_connection","output_connection","old_src","old_output_index","output_index","old_dest","node_dest","old_input_index","input_index","_removeFromNodesByType","removeFromInstanciatedNode","runOnChildRemoveCallbacks","runOnDeleteCallbacks","parent_id","_addToChildrenAndGrandchildrenByContext","_removeFromChildrenAndGrandchildrenByContext","nodeContext","node_id","nodeFromId","hasChildrenAndGrandchildrenWithContext","childrenNames","traverseChildren","NodeLifeCycleController","_creationCompleted","_onChildAddCallbacks","_onChildRemoveCallbacks","_onAfterCreatedCallbacks","_onAfterAddedCallbacks","_onBeforeDeletedCallbacks","_onAfterDeletedCallbacks","onChildAdd","_runCallbacksWithChildNode","onChildRemove","onAfterCreated","_runCallbacks","onAfterAdded","onBeforeDeleted","onAfterDeleted","hooks","NodeContext","NodeContext2","NetworkChildNodeType","NetworkChildNodeType2","CameraSopNodeType","CameraSopNodeType2","TypedContainer","set_node","set_content","_post_set_content","has_content","coreContent","coreContentCloned","infos","AnimationContainer","setTimelineBuilder","timeline_builder","timelineBuilder","ObjectType2","OBJECT_CONSTRUCTOR_BY_OBJECT_TYPE","ObjectTypes","materials","MeshStandard","metalness","roughness","linewidth","AttribType","AttribType2","AttribSize","AttribSize2","CoreConstant","ATTRIB_CLASS","VERTEX","OBJECT","OBJECT_TYPES","CONSTRUCTOR_NAMES_BY_CONSTRUCTOR_NAME","CONSTRUCTORS_BY_NAME","MATERIALS","Attribute","Attribute2","ATTRIB_NAME_MAP","CoreAttribute","index_by_value","current_index","mark_as_needs_update","src_array","dest_array","min_length","needsUpdate","FLOAT","VECTOR2","VECTOR3","VECTOR4","masksString","existingAttribNames","attribNames","matchingAttribNames","attribName","remapName","CoreEntity","_index","ATTRIB_NAMES","COMPONENT_INDICES","CorePoint","_coreGeometry","applyMatrix4","coreGeometry","attribSize","hasAttrib","remapped_name","attribValue","POINT_INDEX","component_name","component_index","remaped_name","attrib","isAttribIndexed","indexedAttribValue","start_index","attribValueNumber","remapedName","attribValueVector2","attribValueVector3","attribValueVector4","value_index","attribValueIndex","userDataAttrib","stringAttribValue","getPosition","new_position","setAttribValueFromVector3","_normal","getNormal","setNormal","new_normal","setAttribValue","i2","isColor","i3","col","i4","setAttribValueFromNumber","setAttribValueFromVector2","setAttribValueFromVector4","setAttribIndex","new_value_index","easeI","power","easeO","easeIO","Easing","easeI2","easeO2","easeIO2","easeI3","easeO3","easeIO3","easeI4","easeO4","easeIO4","easeSinI","easeSinO","easeSinIO","easeElasticI","easeElasticO","easeElasticIO","RAD_DEG_RATIO","CoreMath","destMin","destMax","fit","srcMin","srcMax","num0","num1","deg","degrees_to_radians","radians_to_degrees","randFloat","randVec2","step_size","steps_count","_vec","uv","fract","lnglat1","lnglat2","deg2rad","ad1","ad2","margin","getMidpoint","_triangle_mid","_triangle_mid_to_corner","multiplyScalar","CoreFace","_points","_get_points","_positions","_getPositions","_triangle","_get_triangle","deltas","_deltas","_getDeltas","getArea","randomPosition","seed","weights","attribValueAtPosition","attrib_name","barycentricCoordinates","getBarycoord","pointValues","newAttribValue","pointValue","weightedValue","intersectPoint","pointIndices","positionAttribArray","pointPositions","point_index","attribArray","attribValues","distToPoints","distanceTotal","point_indx","ListCache","__data__","global","freeSelf","objectProto","nativeObjectToString","symToStringTag","isOwn","tag","unmasked","maskSrcKey","funcToString","reIsHostCtor","reIsNative","Hash","MapCache","Stack","pairs","LARGE_ARRAY_SIZE","objValue","props","customizer","isNew","newValue","propertyIsEnumerable","freeExports","freeModule","Buffer","isBuffer","reIsUint","typedArrayTags","freeProcess","require","nodeIsTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","Ctor","arg","isProto","allocUnsafe","nativeGetSymbols","getOwnPropertySymbols","resIndex","keysFunc","symbolsFunc","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","reFlags","symbolProto","symbolValueOf","isDeep","regexp","dataView","typedArray","lastIndex","objectCreate","proto","nodeIsMap","nodeIsSet","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","stacked","subValue","ObjectUtils","object0","object1","isObject","keys0","keys1","INDEX_ATTRIB_VALUES","CoreGeometry","uuid","_bounding_box","_create_bounding_box","computeBoundingBox","markAsInstance","userData","markedAsInstance","positionAttribName","computeVertexNormals","userDataAttribs","indexedAttributeNames","markAttribAsNeedsUpdate","attribType","STRING","NUMERIC","attribNamesMatchingMask","attribSizes","setIndexedAttributeValues","setIndexedAttribute","addNumericAttrib","default_value","attribute_added","pointsCount","initPositionAttribute","points_count","addAttribute","attrib_data","renameAttrib","old_name","old_attrib","deleteAttribute","srcGeometry","clonedGeometry","cloneDeep","position_attrib_name","pointsFromGeometry","positionAttrib","facesFromGeometry","faces_count","ParamType","ParamType2","BaseParamConfig","paramOptions","callbackBound","NODE_PATH","nodeSelection","COP","applyToNode","additionalOptions","additionalOptionNames","optionName","setOption","executeCallback","GlParamConfig","_uniformName","uniformName","uniform","_uniform","_createUniform","uniformByType","RAMP","rampTexture","set_uniform_value_from_texture_from_node_path_param","BOOLEAN","BUTTON","COLOR","FOLDER","INTEGER","PARAM_PATH","containerController","set_uniform_value_from_ramp","MaterialUserDataUniforms","material","uniforms","OnBeforeCompileDataHandler","onBeforeCompileData","newUniform","getData","additionalTextureUniforms","OnBeforeCompileDataConverter","vertexShader","fragmentShader","resolutionDependent","paramConfigs","json2","fromJSON","EMPTY_RENDER_HOOK","group","vA","vB","vC","uvA","uvB","uvC","intersectionPoint","intersectTri","geo","intersections","triOffset","getX","fromBufferAttribute","pA","pB","pC","intersectTriangle","checkIntersection","materialIndex","faceIndex","checkBufferGeometryIntersection","convertRaycastIntersect","hit","raycaster","matrixWorld","near","far","tmpInverseMatrix","origMeshRaycastFunc","acceleratedRaycast","boundsTree","bvh","firstHitOnly","raycastFirst","hits","TRIANGLE_INTERSECT_COST","IS_LEAFNODE_FLAG","FLOAT32_EPSILON","MeshBVHNode","arrayToBox","nodeIndex32","getLongestEdgeIndex","splitDimIdx","splitDist","copyBounds","unionBounds","aVal","bVal","d3","expandByTriangleBounds","startIndex","triangleBounds","tCenter","tHalf","tMin","tMax","computeSurfaceArea","centroidTarget","minz","maxz","cminx","cminy","cminz","cmaxx","cmaxy","cmaxz","includeCentroid","lx","ly","cz","hz","lz","rz","binsSort","candidate","sahBins","rightCacheBounds","leftCacheBounds","leftBounds","SeparatingAxisBounds","setFromPointsField","field","setFromPoints","isSeparated","setFromBox","boxMin","boxMax","closestPointLineToLine","v02","l1","l2","v10","v32","subVectors","d0232","d3210","d3232","d0210","denom","closestPointsSegmentToSegment","paramResult","temp1","temp2","target1","target2","closestPointToPoint","closestPoint2","distanceToSquared","sphereIntersectTriangle","closestPointTemp","projectedPointTemp","planeTemp","lineTemp","getPlane","projectPoint","containsPoint","isNearZero","ExtendedTriangle","isExtendedTriangle","satAxes","satBounds","intersectsSphere","axis0","sab0","axis1","sab1","axis2","sab2","axis3","sab3","setFromNormalAndCoplanarPoint","closestPointToSegment","closestDistanceSq","intersectsTriangle","saTri2","arr1","arr2","cachedSatBounds","cachedSatBounds2","cachedAxis","tempDir","satBounds1","satAxes1","sb","satBounds2","satAxes2","sa1","sa2","crossVectors","points1","found1","count1","pNext","targetPoint","startIntersects","intersectLine","points2","found2","count2","separated1","separated2","distanceToTriangle","cornerFields","lineTarget","otherVec","thisVec","f11","f12","f21","f22","OrientedBox","isOrientedBox","invMatrix","alignedSatBounds","setTriangle","tb","i0","i1","getY","getZ","iterateOverTriangles","intersectsTriangleFunc","contained","minVec","intersectsBox","aabbBounds","saTri","pointsArr","triSatBounds","triSatAxes","distanceToBox","xyzFields","segments1","threshold","threshold2","nextIndex","nextIndex2","index2","f3","PrimitivePool","getNewPrimitive","_getNewPrimitive","_primitives","getPrimitive","releasePrimitive","primitive","IS_LEAF","n16","uint16Array","OFFSET","n32","uint32Array","COUNT","LEFT_NODE","RIGHT_NODE","boxIntersection","nodeIndex16","float32Array","_float32Array","_uint16Array","_uint32Array","intersectTris","leftIndex","intersectRay","rightIndex","res","intersectClosestTri","splitAxis","SPLIT_AXIS","xyzAxis","leftToRight","c2","c1Result","c2Result","shapecast","_box1","_box2","boxStack","boxPool","shapecastTraverse","intersectsBoundsFunc","intersectsRangeFunc","nodeScoreFunc","nodeIndexByteOffset","getLeftOffset","getRightEndOffset","score1","score2","box1","box2","c1Intersection","c1StopTraversal","c2Intersection","c2StopTraversal","intersectsGeometry","triangle2","invertedMat","obb","obb2","otherGeometry","geometryToBvh","cachedObb","thisGeometry","thisIndex","thisPos","intersectsBounds","intersectBox","bufferStack","_prevBuffer","setBuffer","clearBuffer","SKIP_GENERATION","Symbol","aabb2","tempMatrix","temp3","temp4","tempBox","trianglePool","isBufferGeometry","cloneBuffers","rootData","_roots","indexAttribute","getIndex","setIndex","newIndex","isInterleavedBufferAttribute","strategy","maxDepth","maxLeafTris","verbose","useSharedArrayBuffer","setBoundingBox","onProgress","SharedArrayBuffer","triggerProgress","trianglesProcessed","totalTriangles","splitNode","centroidBoundingData","reachedMaxDepth","nodeBoundingData","avg","getAverage","rootSurfaceArea","bestCost","cStart","cEnd","axisLeft","binWidth","BIN_COUNT","truncatedBins","splitCount","leftCount","rightCount","rightBounds","leftProb","rightProb","cost","binIndex","lastBin","nextBin","binCount","getOptimalSplit","boundingData","splitOffset","axisOffset","t2","partition","lstart","lcount","cacheCentroidBoundingData","rstart","rcount","vertexCount","BufferConstructor","ensureIndex","fullBounds","posAttr","posArr","triCount","bufferOffset","tri3","tri6","halfExtents","computeTriangleBounds","groups","rangeBoundaries","sortedBoundaries","getRootIndexRanges","getCentroidBounds","buildTree","packedRoots","countNodes","populateBuffer","stride4Offset","stride2Offset","nextUnusedPointer","buildPackedTree","getBoundingBox","refit","nodeIndices","indexArr","_traverse","node32Index","force","node16Index","offsetLeft","offsetRight","forceChildren","includesLeft","includesRight","traverseRight","leftChange","rightChange","didChange","lefti","righti","minLeftValue","maxLeftValue","minRightValue","maxRightValue","rootIndex","BYTES_PER_NODE","materialOrSide","isMaterial","isArrayMaterial","materialSide","startCount","closestResult","geomToMesh","_intersectsTriangleFunc","_orderNodesFunc","originalTriangleFunc","boundsTraverseOrder","intersectsRange","originalIntersectsRange","nodeIndex","bvhcast","otherBvh","matrixToLocal","intersectsRanges","intersectsTriangles","indexAttr","positionAttr","otherIndexAttr","otherPositionAttr","iterateOverDoubleTriangles","offset1","offset2","depth1","index1","depth2","originalIntersectsRanges","nodeIndex1","nodeIndex2","boxToMesh","closestPointToGeometry","minThreshold","maxThreshold","otherPos","otherIndex","tempTarget1","tempTargetDest1","tempTarget2","tempTargetDest2","closestDistance","closestDistanceTriIndex","closestDistanceOtherTriIndex","otherOffset","otherCount","minThresholdSq","maxThresholdSq","triIndex","makeEmpty","originalRaycast","isMesh","mesh","originalRaycastFirst","originalClosestPointToPoint","originalClosestPointToGeometry","isVector3","result1","originalRefit","terminationIndices","newNodeIndices","originalFunc","AttributeCallbackQueue","_blocked","_lastCallback","_makeAttribReactiveBaseVector","attributesDict","attributesPreviousValuesDict","proxy","previousValue","currentVec","componentVal","runOrEnqueue","configurable","PROPS","_object","pointsFromGroup","groupString","coreObject","attribNameWithPrefix","convertedValue","_convertArrayToVector","dict","attributesDictionary","currentValue","isVector","block","unblock","addNumericVertexAttrib","_createAttributesDictionaryIfNone","_createAttributesPreviousValuesDictionaryIfNone","_attributesDictionary","attributeNames","current_value","_attribFromProperty","OBJECT_INDEX","attributesPreviousValuesDictionary","makeAttribReactiveVector4","makeAttribReactiveVector3","makeAttribReactiveVector2","makeAttribReactiveSimple","humanType","attribTypes","attribSizeFromValue","srcObject","clonedObject","sourceLookup","cloneLookup","parallelTraverse","sourceNode","clonedNode","srcNode","meshNode","srcNodeGeometry","defaultBVH","assignBVH","createBVH","meshDest","meshSrc","existingBVH","copyBVH","srcMaterial","clonedMaterial","srcUniforms","shareCustomUniforms","cloneData","data2","onBeforeCompile","shader","uniformsController","addUniforms","shaderMaterial","_createOnBeforeCompile","customProgramCacheKey","assignOnBeforeCompileDataAndFunction","copyOnBeforeCompileData","renderHook","onBeforeRender","material2","material_with_custom","customMaterials","mat_name","custom_material","currentUniform","addAdditionalTexture","assignUniformViaUserData","assignUniformForOnBeforeCompile","addAdditionalTextureUniforms","applyCustomMaterials","material_with_color","src_node_with_animations","animations","animation","skinned_node","isSkinnedMesh","clonedMesh","sourceMesh","sourceBones","skeleton","bones","bindMatrix","new_bones","bone","childA","childB","CoreGroup","_objects","_objectsWithGeo","_size","_attributes","touch","_coreObjects","_coreGeometries","_timestamp","resetBoundingBox","_boundingBox","coreGroup","setObjects","objectsWithGeo","coreObjects","_create_core_objects","objectsData","_objectData","objectTypeFromConstructor","children_count","core_object","coreGeometries","_createCoreGeometries","isLine","isPoints","geoFaces","geoFace","totalPointsCount","object2","core_group","objectsFromGroup","groupName","coreObjectsFromGroup","forceUpdate","_computeBoundingBox","getSize","childObject","updateWorldMatrix","expandByObject","first_geometry","geoAttribType","first_core_geometry","objectAttribType","first_core_object","attrib_class","geometryFromObject","geoAttribNames","firstGeometry","objectAttribNames","firstObject","geoAttribNamesMatchingMask","objectAttribNamesMatchingMask","geoAttribSizes","objectAttribSizes","geoAttribSize","addGeoNumericVertexAttrib","BaseOperation","default_param","CoreGeometryIndexBuilder","position_array","SOP","createCoreGroupFromObjects","createCoreGroupFromGeometry","createObject","createIndexIfNone","object_constructor","applyObjectDefault","castShadow","receiveShadow","frustumCulled","matrixAutoUpdate","vertexColors","ContainerClassMap","ACTOR","ANIM","AUDIO","setContent","setAudioBuilder","audioBuilder","_resolutionFromHTMLVideoElement","CSG","objectTypes","csgObjectType","csg","EVENT","GL","JS","MANAGER","MAT","set_material","has_material","OBJ","set_object","has_object","POST","render_pass","ROP","firstCoreObject","objectsCount","objectsVisibleCount","visible","objectsCountByType","count_by_type","human_type","objectsNamesByType","names_by_type","pointAttributeNames","pointAttributeSizesByName","sizes_by_name","objectAttributeSizesByName","coreGroupAttributeSizesByName","pointAttributeTypesByName","types_by_name","core_geo","objectAttributeTypesByName","coreGroupAttributeTypesByName","coreGroupAttributeValuesByName","valuesByName","objectAttributeNames","TypedContainerController","_callbacks","_callbacksTmp","_createContainer","ContainerClass","containerUnlessBypassed","flags","inputNode","requestInputContainer","cookController","endCook","reject","_a2","_b2","cookMain","inputIndex","notifyRequesters","NodeCookPerformanceformanceController","_inputsStart","_inputsTime","_paramsStart","_paramsTime","_cookStart","_cookTime","_cooksCount","inputsTime","paramsTime","cookTime","cooksCount","performanceRecordStarted","recordInputsStart","recordInputsEnd","recordParamsStart","recordParamsEnd","recordCookStart","recordCookEnd","NodeCookController","_cooking","_performanceController","_inputsEvaluationRequired","_corePerformance","started","_clearHooks","disallowInputsEvaluation","isCooking","_startCookIfNoErrors","inputContents","_initCookingState","_evaluateInputs","paramsEvalRequired","_evaluateParams","_finalizeCookPerformance","_cookingDirtyTimestamp","_terminateCookProcess","_runOnCookCompleteHooks","ioOnputs","inputContainers","isGraphNodeDirty","evalRequiredInputs","containersWithoutEvaluation","inputContainer","evalAll","recordNodeCookData","registerOnCookEnd","callbackName","_onCookCompleteHookNames","_onCookCompleteHooks","hookName","deregisterOnCookEnd","onCookEndCallbackNames","NodeSerializer","include_param_components","graph_node_id","is_dirty","ui_data_json","uiData","error_message","childrenIds","maxInputsCount","inputIds","input_connection_output_indices","inputConnectionOutputIndices","named_input_connection_points","namedInputConnectionPoints","named_output_connection_points","namedOutputConnectionPoints","param_ids","to_json_params","overrideClonedStateAllowed","inputs_clone_required_states","cloneRequiredStates","locked","connection","to_json_params_from_names","include_components","ParamEvent","ParamEvent2","ColorConversion","ColorConversion2","NON_OVERRIDABLE_OPTIONS","OptionsController","_param","_programaticVisibleState","_callbackAllowed","_updateVisibilityAndRemoveDirtyBound","updateVisibilityAndRemoveDirty","_ui_data_dependency_set","_visibility_graph_node","_default_options","postSetOptions","options_controller","_validateOption","component","_handleComputeOnDirty","hasOptionsOverridden","overriddenOptions","optionNames","optionNamesToCheck","cloned_option","overriddenOptionNames","computeOnDirty","_computeOnDirtyCallbackAdded","_computeParam","allowCallback","getCallback","parentParam","createCallbackFromString","callbackString","callbackFunction","colorConversion","NONE","makesNodeDirtyWhenDirty","cookOptions","fileBrowseOption","fileBrowseAllowed","fileBrowseExtensions","option","separatorBefore","separatorAfter","joinToPreviousParam","setEditableState","currentState","EDITABLE_UPDATED","editable","isExpressionForEntities","expr_option","hasMenu","menuOptions","menuStringOptions","menuEntries","isMultiline","language","isCode","nodeSelectionOptions","nodeSelectionContext","nodeSelectionTypes","objectMask","dependentOnFoundNode","dependentOnFoundParam","isSelectingParam","rangeLocked","ensureInRange","isSpare","textureOptions","textureAsEnv","texture_options","isVisible","setVisibleState","VISIBLE_UPDATED","label","isLabelHidden","isFieldHidden","uiDataDependsOnOtherParams","visibilityPredecessors","visibilityOptions","predecessorNames","setUiDataDependency","updateVisibility","promises","optionsSet","optionSetParamNames","optionSetParams","satisfiedValues","EmitController","_blockedEmit","_blockedParentEmit","_countByEventName","emitAllowed","dispatchController","blockEmit","isMultiple","emitController","unblockEmit","blockParentEmit","unblockParentEmit","incrementCount","eventName","eventsCount","ParamSerializer","raw_input","rawInput","value_pre_conversion","is_visible","rawInputSerialized","valueSerialized","valuePreConversionSerialized","hasExpression","expressionController","ParamTimeDependentState","frame_graph_node_id","ParamErrorState","ParamStatesController","MethodDependency","path_argument","decomposed_path","_update_from_name_change_bound","_update_from_name_change","registerMethodDependency","update_from_name_change","new_path","to_path","jsep_node","raw","updateFromMethodDependencyNameChange","listen_for_name_changes","node_in_path","named_nodes","set_jsep_node","set_resolved_graph_node","resolved_graph_node","set_unresolved_path","unresolved_path","index_or_path","is_index","TYPED_PARAM_DEFAULT_COMPONENT_NAMES","TypedParam","_emitController","_isComputing","_initializeParam","_expression_controller","expressionParsedAsString","serializer","_serializer","_states","deregisterParam","_parent_param","_runOnDisposeCallbacks","postOptionsInitialize","isNumeric","_value","copyValue","_copyValue","rawVal","val1","val2","isRawInputEqual","other_raw_input","areRawInputEqual","_raw_input","isValueEqual","other_val","areValuesEqual","_cloneRawInput","_prefilterInvalidRawInput","RAW_INPUT_UPDATED","processRawInput","_default_value","isDefault","isComputing","_computeResolves","processComputation","resolves","setInitValue","init_value","_setupNodeDependencies","params_node","set_parent_param","has_parent_param","pathRelativeTo","nodeRelativePath","relativePath","dispatch","_components","componentNames","initComponents","onDispose","_onDisposeCallbacks","deregisterOnDispose","Jsep","op_name","max_unop_len","unary_ops","precedence","max_binop_len","binary_ops","additional_identifier_chars","literal_name","literal_value","literals","getMaxKeyLen","expr","op_val","isIdentifierStart","isDecimalDigit","throwError","description","runHook","searchHook","gobbleSpaces","SPACE_CODE","TAB_CODE","LF_CODE","CR_CODE","gobbleExpressions","COMPOUND","untilICode","ch_i","SEMCOL_CODE","COMMA_CODE","gobbleExpression","gobbleBinaryExpression","gobbleBinaryOp","to_check","tc_len","isIdentifierPart","biop","prec","biop_info","cur_biop","gobbleToken","binaryPrecedence","BINARY_EXP","PERIOD_CODE","gobbleNumericLiteral","SQUOTE_CODE","DQUOTE_CODE","gobbleStringLiteral","OBRACK_CODE","gobbleArray","argument","UNARY_EXP","gobbleIdentifier","LITERAL","this_str","THIS_EXP","OPAREN_CODE","gobbleGroup","gobbleTokenProperty","MEMBER_EXP","computed","CBRACK_CODE","CALL_EXP","gobbleArguments","CPAREN_CODE","callee","chCode","quote","IDENTIFIER","termination","separator_count","SEQUENCE_EXP","expressions","ARRAY_EXP","jsep","registered","QUMARK_CODE","COLON_CODE","CONDITIONAL_EXP","ternary","consequent","alternate","addUnaryOp","addBinaryOp","ParsedTree","parseExpression","parseExpressionForStringParam","stringValueElements","sanitizedElement","BaseTraverser","_set_error_from_error_bound","_set_error_from_error","clear_error","_error_message","set_error","is_errored","traverse_node","method_name","traverse_BinaryExpression","traverse_MemberExpression","traverse_ConditionalExpression","traverse_Compound","traversed_args","arg_node","traverse_Literal","AttributeRequirementsController","_attributeNames","assignAttributesLines","assignAttributeLine","assignArraysLines","coreGeoLine","assignItemSizeLine","assignArrayLine","attributePresenceCheckLine","varNames","varName","_varAttribute","varAttribute","_varAttribSize","_varArray","varAttributeSize","varArray","NATIVE_MATH_METHODS_RENAMED","math_random","EASING_METHODS","DIRECT_EXPRESSION_FUNCTIONS","remaped","LITERAL_CONSTRUCT","if","GLOBAL_CONSTANTS","PROPERTY_OFFSETS","Core","FunctionGenerator","_attribute_requirements_controller","methods","method_index","methodDependencies","immutableDependencies","parseTree","parsedTree","function_main_string","_functionBody","evalAllowed","evalFunction","traverse_CallExpression","methodArguments","literal_contruct","arguments_joined","direct_function_name","expressionRegister","pathNode","functionString","pathArgumentFunction","pathArgument","_createMethodAndDependencies","traverse_UnaryExpression","attributeName","argument_member_expression","attrib_node","property_node","var_attribute_size","var_array","propertyOffset","traverse_Identifier","identifier_name_without_dollar_sign","direct_constant_name","traverse_Identifier_F","traverse_Identifier_T","traverse_Identifier_OS","nameNode","traverse_Identifier_CH","traverse_Identifier_CEX","_method_centroid","traverse_Identifier_CEY","traverse_Identifier_CEZ","methodName","methodConstructor","requireDependency","methodDependency","findDependency","ExpressionStringGenerator","parse_tree","parsed_tree","DependenciesController","_cyclicGraphDetected","functionGenerator","_connectImmutableDependencies","_handleMethodDependencies","_listenForNameChanges","function_generator","dependency","_handleMethodDependency","method_dependency","node_simple","ExpressionManager","_parseStarted","_functionGenerator","dependenciesController","_computeAllowed","_expressionStringGenerator","new_expression_string","ExpressionController","_resetMethodDependencies","_method_dependencies_by_graph_node_id","_expression","_manager","requires_entities","set_expression","set_dirty","computeExpression","computeFunction","entities","_setEntities","_resetEntities","computeExpressionForPoints","computeExpressionForEntities","computeExpressionForObjects","computeExpressionForCoreGroup","entity","_entities","entityCallback","_entityCallback","TypedNumericParam","converted","EXPRESSION_UPDATED","_update_value","expression_result","new_value","setValueFromComponents","VALUE_UPDATED","FloatParam","defaultValueSerialized","raw_input1","raw_input2","raw_val","TypedMultipleParam","_components_contructor","src_component","componentName","default_val","compute_components","number_or_string","prev_value","component_value","COMPONENT_NAMES_COLOR","IntegerParam","DecomposedPath","_path_elements","_named_nodes","_graph_node_ids","_node_element_by_graph_node_id","path_element","named_graph_nodes","node_name","joined_path","first_char","TypedStringParam","processRawInputWithoutExpression","expressionResult","_assignValue","TypedPathParam","resetReferenceFromParam","_handleReferences","setNamedNodesFromParam","setReferenceFromParam","_findTarget","_setValuePathAndFindTarget","tmpConvertedValue","RampPoint","other_point","isEqualJSON","json1","RampInterpolation","RampInterpolation2","RampValue","_interpolation","_uuid","interpolatedValues","createInterpolant","rampValue","sortedPoints","sortedPoint","createInterpolantFromValues","jsonPoint","ramp","newPointsCount","currentPointsCount","pointsCountToRemove","spliceStart","currentPoint","other_ramp_value","other_points","areEqualJSON","json_point","_RampParam","_textureData","STRIDE","_rampTexture","are_json_equal","_resetRampInterpolant","_updateRampTexture","_rampInterpolant","_updateRampTextureData","TEXTURE_WIDTH","valueAtPosition","interpolant","_createInterpolant","RampParam","DEFAULT_VALUE","CUBIC","DEFAULT_VALUE_JSON","COMPONENT_NAMES_VECTOR2","COMPONENT_NAMES_VECTOR3","COMPONENT_NAMES_VECTOR4","ParamConstructorByType","toBoolean","_valuePreConversion","_valueSerializedDirty","_valueSerialized","_valuePreConversionSerialized","_copiedValue","_updateValueSerializedIfRequired","new_array","valuePreConversion","_applyColorConversion","conversion","SRGB_TO_LINEAR","convertSRGBToLinear","LINEAR_TO_SRGB","convertLinearToSRGB","_onResolvedParamDisposeBound","_onResolvedParamDispose","pathNonEmpty","currentFoundEntity","newlyFoundEntity","previouslyFoundParam","_assignFoundParam","notifyPathRebuildRequired","notifyTargetParamOwnerParamsUpdated","relative","previouslyFoundNode","_assignFoundNode","_isNodeExpectedContext","_isNodeExpectedType","_expectedNodeTypes","_expectedContext","expectedContext","expected_types","newPath","_copied_value","ParamsController","_param_create_mode","_params_created","_params_by_name","_params_list","_param_names","_non_spare_params","_spare_params","_non_spare_param_names","_spare_param_names","_params_added_since_last_params_eval","_promises","_params_node","_post_create_params_hook_names","_post_create_params_hooks","_on_scene_load_hooks","_on_scene_load_hook_names","initDependencyNode","_initFromParamsConfig","createParams","_postCreateParams","_updateCaches","_initParamAccessors","_runPostCreateParamsHooks","postCreateSpareParams","notifyParamsUpdated","PARAMS_UPDATED","updateParams","has_created_a_param","has_deleted_a_param","addedParams","namesToDelete","_deleteParam","toAdd","addParam","initValue","checkForMissingParamReferences","paramsConfig","init_values_used","createOptions","current_names_in_accessor","pv","_removeUnneededAccessors","is_spare","current_param_names","names_to_remove","current_name_in_accessor","name_to_remove","non_spare","spare","non_spare_names","spare_names","set_with_type","set_float","set_vector3","has_param","getFloat","valueWithType","float","integer","child_name","initData","existing_param","complex_data","overriden_options","dirtyParamsCount","_evalParam","evalParams","onParamsCreated","hook_name","addOnSceneLoadHook","runOnSceneLoadHooks","ParamsValueAccessor","_TypedNodeConnection","_node_src","_node_dest","_output_index","_input_index","_next_id","addOutputConnection","addInputConnection","src_connection_point","dest_connection_point","removeOutputConnection","removeInputConnection","ignoreLockedState","_eventDispatcher","__eventDispatcher","eventDispatcher","TypedNodeConnection","_cloneRequiredStates","_clonedStates","_clonedState","_updateCloneRequiredState","cloneRequiredState","_getCloneRequiredState","_cloneRequiredFromState","overrideClonedState","OVERRIDE_CLONABLE_STATE_UPDATE","NodeInputsController","_graphNodeInputs","_has_named_inputs","_minInputsCount","_maxInputsCount","_maxInputsCountOnInput","_depends_on_inputs","_on_update_hooks","_on_update_hook_names","setDependsOnInputs","depends_on_inputs","setMinCount","minInputsCount","minCount","setMaxCount","_initGraphNodeInputs","namedInputConnectionPointsByName","_named_input_connection_points","connection_point","setNamedInputConnectionPoints","newConnectionPoints","connectionPointsToKeep","inNodeDefinition","allNewConnectionPoints","currentNames","connectionPointToKeep","newConnectionPoint","NAMED_INPUTS_UPDATED","hasNamedInputs","_createGraphNodeInput","graph_input_node","maxInputsCountOverriden","inputGraphNode","setCount","_initConnectionControllerInputs","initInputs","_isAnyInputDirty","containers","_existingInputIndices","existing_input_indices","evalRequiredInput","inputErrorMessage","getNamedInputIndex","getInputIndex","input_index_or_name","inputIndexOrName","outputIndexOrName","noExceptionOnInvalidInput","outputIndex","hasNamedOutputs","getOutputIndex","graphInputNode","oldInputNode","oldConnection","oldOutputIndex","inputConnection","_run_on_set_input_hooks","INPUTS_UPDATED","named_input","input_name","named_input_connection_point","has_named_input","hasInput","clonedStateOverriden","add_on_set_input_hook","OutputsController","_has_outputs","_has_named_outputs","_onPlayingStateChangeBound","_onPlayingStateChange","_outputIndexCache","onPlayingStateChange","_clearCache","removeOnPlayingStateChange","_named_output_connection_points","setHasOneOutput","setHasNoOutput","hasOutputs","hasNamedOutput","getNamedOutputIndex","namedOutputConnection","connectionPoint","output_index_or_name","currentCache","_getOutputIndex","namedOutputConnectionPointsByName","setNamedOutputConnectionPoints","connection_points","NAMED_OUTPUTS_UPDATED","used_output_names","connections_controller","output_indices","used_output_indices","ConnectionsController","_outputConnections","_inputConnections","all_connections_after_are_undefined","existingInputConnections","current_connections","connections_by_id","outputConnectionsByOutputIndex","SavedConnectionPointsDataController","set_in","_in","set_out","_out","BaseConnectionPoint","_init_value","_inNodeDefinition","are_types_matched","src_type","dest_type","_create_json","GlConnectionPointType","GlConnectionPointType2","GlConnectionPointTypeToParamTypeMap","GLParamTypeToConnectionPointTypeMap","GlConnectionPointInitValueMap","GlConnectionPoint","param_type","JsConnectionPointType","JsConnectionPointType2","JsConnectionPointTypeToParamTypeMap","JsParamTypeToConnectionPointTypeMap","JsConnectionPointInitValueMap","JsConnectionPoint","EventConnectionPointType","EventConnectionPointType2","EventConnectionPoint","_event_listener","event_listener","ActorConnectionPointType","ActorConnectionPointType2","ActorConnectionPointTypeToParamTypeMap","ARRAY_CONNECTION_TYPES","ActorParamTypeToConnectionPointTypeMap","ActorConnectionPointInitValueMap","ActorConnectionPoint","_isArray","srcType","destType","DEFAULT_CONNECTION_POINT_ENUM_MAP","TRIGGER","BASE","create_connection_point","ConnectionPointsSpareParamsController","_raw_input_serialized_by_param_name","_default_value_serialized_by_param_name","_initialized","initializeNode","_createInputsFromParams","initialized","connection_type_map","param_type_to_connection_point_type_map","add_input","_inputless_param_names","connection_type","setInputlessParamNames","createSpareParameters","params_update_options","isConnected","last_param_init_value","default_value_from_name","paramDefaultValue","spare_param","arraysMatch","ConnectionPointsController","_create_spare_params_from_inputs","_functions_overridden","_input_name_function","_output_name_function","_expected_input_types_function","first_input_connection_type","default_connection_type","_expected_output_types_function","_update_signature_if_required_bound","update_signature_if_required","_spare_params_controller","functions_overridden","set_create_spare_params_from_inputs","set_input_name_function","_initialize_if_required","set_output_name_function","set_expected_input_types_function","set_expected_output_types_function","_wrapped_input_name_function","output_name","_wrapped_output_name_function","spare_params","dirty_trigger","_inputsOutputsMatchExpectations","update_connection_types","make_successors_update_signatures","subnet_inputs","INPUT","subnet_outputs","OUTPUT","subnet_input","subnet_output","has_connection_points_controller","expected_input_types","_wrapped_expected_input_types_function","expected_output_types","_wrapped_expected_output_types_function","named_output_connect_points","namedInputConnections","namedOutputConnections","inputTypesMatch","outputTypesMatch","inputNamesMatch","outputNamesMatch","in_data","saved_connection_points_data","out_data","input_connection_type","IOController","_connections","hasInputs","_outputs","has_outputs","_connection_points","_saved_connection_points_data","clear_saved_connection_points_data","ParamsAccessor","TypedNode","copy_param_values","other_param","_parent_controller","childrenControllerContext","_childrenControllerContext","_create_childrenController","_childrenController","_uiData","_lifecycle","_cookController","_io","_nameController","_paramsController","displayNodeController","initializeBaseNode","relative_to_parent","onCookEnd","nodeSibling","event_name","usedAssembler","integrationData","INPUT_COP_NAME","DEFAULT_INPUT_NAMES","EMPTY_DATA_TEXTURE","TypedCopNode","setTexture","_clearTexture","MERCATOR_A","Constants","CoreMapboxUtils","fovy","aspect","nf","newMatrix","lnglat","projectedUnitsPerMeter","fromLL","latlng1","latlng2","lat1","lat2","lng_deg","lat_deg","lat_rad","xtile","ytile","lon_deg","sinh","CoreImage","img0","img1","toDataURL","img","beginPath","src_img","is_landscape","xhr","data_from_image","CoreMapboxClient","CSS_URL","ParamTemplate","ParamConfig","TileType","TILE_TYPES","ELEVATION","SATELLITE","TileRes","ParamsConfig","menu","MapboxTileCopNode","_paramHires","_texture","HIGH","minFilter","magFilter","flipY","_cookForElevation","_cookForSatellite","_url","image_data_rgba","data_from_url","data_rgba","pixels_count","src_stride","dest_stride","dest_data","LOW","tile_number","lnglat_to_tile_number","RotationOrder","RotationOrder2","ROTATION_ORDERS","eulerArray","CoreTransform","_translation_matrix","_translation_matrix_q","_translation_matrix_s","_matrix","_matrix_q","_matrix_euler","_matrix_s","_m","_q","_rotateDirOrigin","_rotateDirDest","update_scale","decompose","set_params_from_matrix_position","set_params_from_matrix_quaternion","set_params_from_matrix_scale","set_params_from_matrix_euler","setFromQuaternion","set_params_from_matrix_rotation","divideScalar","set_params_from_matrix_t","set_params_from_matrix_r","set_params_from_matrix_s","batchUpdates","set_params_from_object_position_array","set_params_from_object_rotation_array","set_params_from_object_rotation_deg","translationMatrix","compose","rotation_order","setFromEuler","rotateGeometry","dirOrigin","dirDest","setFromUnitVectors","makeRotationFromQuaternion","rotateObject","quaternion","INPUT_OBJECT_NAME","ObjNodeRenderOrder","ObjNodeRenderOrder2","renderOrder","_children_group","_create_children_group","_attachableToHierarchy","_used_in_scene","attachableToHierarchy","usedInScene","addObjectToParent","removeObjectFromParent","childrenDisplayController","_create_object_with_attributes","set_object_name","childrenGroup","isDisplayNodeCooking","displayNode","isDisplayed","LayersController","RopType","RopType2","ObjType","ObjType2","TransformedParamConfig","keepPosWhenParenting","rotationOrder","XYZ","updateTransformFromObject","TransformController","PARAM_CALLBACK_update_transform_from_object","HOOK_NAME","_cook_main_without_inputs_when_dirty_bound","_cook_main_without_inputs_when_dirty","_core_transform","_keep_pos_when_parenting_m_object","_keep_pos_when_parenting_m_new_parent_inv","cookMainWithoutInputs","update_transform_with_matrix","_update_matrix_from_params_with_core_transform","dispatchEvent","prev_auto_update","_apply_look_at","updateMatrix","set_params_from_matrix","setParamsFromMatrix","new_parent_object","transformController","update_node_transform_params_if_required","updateMatrixWorld","update_node_transform_params_from_object","update_matrix","DISPLAY_PARAM_NAME","ChildrenDisplayController","_childrenUuids","_sopGroup","_createSopGroup","sopGroup","setSopGroupName","displayNodeControllerCallbacks","onDisplayNodeRemove","removeChildren","onDisplayNodeSet","requestDisplayNodeContainer","onDisplayNodeUpdate","display_flag","_updateSopGroupHierarchy","has_active_param","is_active_param_on","used_in_scene","display_flag_on","_setContentUnderSopGroup","_notifyCamerasController","newObjects","new_objects_are_different","_runOnSopGroupUpdatedHooks","camerasController","updateFromChangeInObject","registerOnSopGroupUpdated","_onSopGroupUpdatedHookNames","_onSopGroupUpdatedHooks","deregisterOnSopGroupUpdated","onSopGroupUpdatedCallbackNames","DEFAULT_DISPLAY_NODE_CONTROLLER_OPTIONS","dependsOnDisplayNode","DisplayNodeController","_displayNode","_onDisplayNodeRemoveCallback","_onDisplayNodeSetCallback","_onDisplayNodeUpdateCallback","lastChild","setDisplayNode","newDisplayNode","oldDisplayNode","HierarchyController","on_input_updated","parent_object","getParentForNode","addToParentTransform","removeFromParentTransform","CameraHelper","_pointMap","updateProjectionMatrix","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","_createGeometry","toneMapped","projectionMatrixInverse","setPoint","setXYZ","UpdateFromControlsMode","UpdateFromControlsMode2","UPDATE_FROM_CONTROLS_MODES","CameraAttribute","CameraAttribute2","_CameraControlsSopOperation","CONTROLS","inputCoreGroups","updateObject","relativeOrAbsolutePath","CONTROLS_NODE_ID","CameraControlsSopOperation","_CameraRendererSopOperation","RENDERER","RENDERER_NODE_ID","CameraRendererSopOperation","_CameraCSSRendererSopOperation","CSS_RENDERER","CSS_RENDERER_NODE_ID","CameraCSSRendererSopOperation","CameraPostProcessSopOperation","POST_PROCESS","useOtherNode","POST_PROCESS_NODE_ID","_CameraRenderSceneSopOperation","RENDER_SCENE","RENDER_SCENE_NODE_ID","CameraRenderSceneSopOperation","CameraFrameMode","CameraFrameMode2","CAMERA_FRAME_MODES","_CameraFrameModeSopOperation","FRAME_MODE","frameMode","FRAME_MODE_EXPECTED_ASPECT_RATIO","expectedAspectRatio","CameraFrameModeSopOperation","DEFAULT","EVENT_CHANGE","CameraMainCameraParamConfig","setMainCamera","BaseCameraObjNodeClass","PARAM_CALLBACK_setMainCamera","CameraRenderParamConfig","visibleIf","CoreCameraFrameParamConfig","LayerParamConfig","controls","updateFromControlsMode","ON_END","BaseThreejsCameraObjNodeClass","PARAM_CALLBACK_update_near_far_from_param","showHelper","ThreejsCameraTransformParamConfig","TypedCameraObjNode","CAMERA","_aspect","updateCamera","prepareRaycaster","mouse","setAsMainCamera","objectsController","objectPath","setMainCameraPath","setupForAspectRatio","update_transform_params_from_object","setParamsFromObject","TypedThreejsCameraObjNode","hierarchyController","_layersController","__layersController__","initHelperHook","node_class","setFromCamera","updateNearFar","_updateHelper","setRenderer","CSSRenderer","setCSSRenderer","postProcessNode","doPostProcess","setScene","viewer","mount","helperVisible","_createHelper","helper","_helper","PARAM_CALLBACK_update_effects_composer","MapboxPerspectiveCamera","ViewerCamerasController","_viewer","computeSizeAndAspect","_updateSize","updateResolution","_getAspect","domElement","updateCameraAspect","_updateFromCameraContainer","ViewerControlsController","_unmounted","controlsNode","applyControls","_updateControlsFunc","_disposeControls","unmount","CoreEventEmitter","CoreEventEmitter2","EVENT_EMITTERS","ACCEPTED_KEYBOARD_EVENT_TYPES","allowCanvasKeyEventsListener","getEventEmitter","emitter","CANVAS","elementFromEmitterType","ViewerEventsController","_bound_listener_map_by_event_controller_type","updateEvents","eventsController","controllerType","listenerWithData","eventType","activeEventDatas","eventEmitter","_processEvent","eventContext","processEvent","eventsDispatcher","traverseControllers","registeredEventTypes","ViewerWebGLController","onwebglcontextlost","_on_webglcontextlost","onwebglcontextrestored","_on_webglcontextrestored","request_animation_frame_id","ICON","ViewerAudioController","displayAudioIcon","_showIcon","_updateIcon","_hideIcon","__iconContainer","_onIcon","_offIcon","_iconContainer","_createIconContainer","createIconContainer","_toggleSound","_setIconContainerStyle","audioIconStyle","audioIconColor","offIcon","createIcon","onIcon","audioController","toggleSound","soundOn","HOVERED_CLASS_NAME","_TypedViewer","_doRender","createRaycaster","_mounted","_controlsController","_onBeforeTickCallbacks","_onAfterTickCallbacks","_onBeforeRenderCallbacks","_onAfterRenderCallbacks","_nextId","autoRender","viewersRegister","registerViewer","_nextViewerId","_domElement","Poly","controlsController","_audioController","_canvasIdPrefix","_controlsNode","createCanvas","setRenderObjectOverride","_renderObjectOverride","activate","deactivate","_camerasController","_eventsController","webglController","_webGLController","unregisterViewer","resetContainerClass","setContainerClassHovered","markAsReady","setAutoRender","autoRenderState","registerOnBeforeTick","_registerCallback","registeredBeforeTickCallbacks","unRegisterOnBeforeTick","_unregisterCallback","_onBeforeTickCallbacksMap","registerOnAfterTick","registeredAfterTickCallbacks","unRegisterOnAfterTick","_onAfterTickCallbacksMap","registerOnBeforeRender","registeredBeforeRenderCallbacks","unRegisterOnBeforeRender","_onBeforeRenderCallbacksMap","registerOnAfterRender","registeredAfterRenderCallbacks","unRegisterOnAfterRender","_onAfterRenderCallbacksMap","_updateCallbacks","callbackContainer","persistent","_runTickCallbacks","_runRenderCallbacks","_runOnBeforeTickCallbacks","_runOnAfterTickCallbacks","_runOnBeforeRenderCallbacks","_runOnAfterRenderCallbacks","TypedViewer","MapboxViewerEventsController","init_events","_on_move","_on_moveend","_on_mousemove","_on_mousedown","_on_mouseup","camera_node_move_end","cameraNode","onMoveEnd","canvasContainer","Utils","MAT_RX","makeRotationAxis","POSITION_ATTRIB_NAME","STEP_SIZE_BY_ZOOM","CoreMapboxTransform","_camera_node","lng_lat","lng_lat_start","pos_offset","transform_group2","new_center","fromLLv","new_min","new_size","s_offset","mat_tr","mat_tr_reset","mat_s","makeTranslation","makeScale","transform_group_FINAL","transform_group3","transform_geometry_FINAL","transform_geometry3","transform_position_FINAL","transform_position3","untransform_position_FINAL","untransform_position3","transform_group","max_ratio","group_bbox_ratio","transform_geometry_with_max_ratio","transform_position_with_max_ratio","altitude","mercator_pos","WORLD_SCALE","lng_lat_like","bbox_ratio","new_bbox_min","new_bbox_max","new_bbox_size","old_bbox_size","_interpolant","_create_step_size_from_zoom_interpolant","interpolated_values","_step_size_from_zoom_interpolant","SceneEvent","SceneEvent2","PolyEventName","PolyEventName2","PolySceneEvent","SCENE_CREATED","SCENE_READY","SCENE_EVENT_PLAY_EVENT_CONTEXT","SCENE_PLAY","SCENE_EVENT_PAUSE_EVENT_CONTEXT","SCENE_PAUSE","TIME_CONTROLLER_UPDATE_TIME_OPTIONS_DEFAULT","updateClockDelta","_TimeController","_timeUniform","_realtimeState","_maxFrame","_maxFrameLocked","_clock","_onPlayingStateChangeCallbacks","getDelta","setDelta","timeUniform","timeDelta","maxFrame","maxFrameLocked","realtimeState","setMaxFrame","MAX_FRAME_UPDATED","setMaxFrameLocked","setRealtimeState","REALTIME_STATUS_UPDATED","setTime","updateFrame","actorsManager","tick","newFrame","boundedFrame","_ensureFrameWithinBounds","setFrame","FRAME_UPDATED","updateTime","START_FRAME","runOnEventSceneReset","setFrameToStart","incrementTimeIfPlaying","areChildrenCooking","incrementTime","newTime","playing","PLAY_STATE_UPDATED","runOnEventScenePause","sceneEventsController","runOnEventScenePlay","togglePlayPause","_onPlayingStateChangeCallbacksMap","_updateOnPlayingStateChangeCallbacks","ThreejsLayer","_cameraNode","_displayScene","_vX","_vY","_vZ","mRX","mRY","mRZ","_gl","createRenderer","_renderer","autoClear","shadowMap","_cssRendererConfig","CSS2D","CSS3D","isCSSRendererNode","cssRendererNode","cssRenderer","cssRendererConfig","mountRenderer","zIndex","_renderCSSFunc","_hack","setSize","_updateCameraMatrix","cameraLngLat","rotationX","rotationY","rotationZ","projectionMatrix","hackObject","threejsScene","BuildingsLayer","MapboxViewerLayersController","addLayers","mapLoaded","label_layer_id","_addLayerBuildings","_addLayerThreejs","_addLayer3D","_addLayerSky","_threejsLayer","tlayer3D","tlayerSky","tlayerBuildings","_hasLayerId","layer_id","MapsRegister","_maps_by_id","_instance","registerMap","deregisterMap","MapboxRaycaster","_inverse_proj_mat","_cam_pos","_mouse_pos","_view_dir","MapboxViewer","_mapLoaded","layersController","mapboxEventController","getElementsByTagName","loadUrl","createMap","_findCanvas","onResize","removeMap","waitForMapLoaded","_addNavigationControls","nav","MAPBOX_CAMERA_OBJ_NODE_TYPE","PRESET","MapboxCameraObjParamConfig","MapboxCameraObjNode","PARAM_CALLBACK_update_style","PARAM_CALLBACK_update_nav","zoomRange","updateParamsFromMap","PARAM_CALLBACK_update_params_from_map","allowDragRotate","addZoomControl","PARAM_CALLBACK_updateCameraAttributes","_maps_by_container_id","_map_containers_by_container_id","_canvases_by_container_id","_controls_by_container_id","_moving_maps","integration_data","updateMaps","_updateCameraAttributes","_addRemoveControls","container_id","updateMapFromContainerId","updateMapNav","cameraOptionsFromParams","drag_rotate_handler","firstMap","first_map","firstId","first_id","firstMapElement","horizontal_lng_lat_points","clientHeight","centerLngLatPoint","verticalFarLngLatPoints","verticalNearLngLatPoints","triggering_map","camera_options","cameraOptionsFromMap","nav_control","updateStyle","updateNav","cameraPath","CoordinatesCollection","features_coordinates","d00","d01","d10","d11","next_id","features_coordinates_array","nearest_id","current_dist","perimeter","prev_coordinate","coordinate","current_feature","remaining_features","sorted_features","mergeBufferAttributes","TypedArray","normalized","arrayLength","attribute","FeatureConverter","coordinatesCollections","_createAllCoordinatesCollections","_createLine","merged_geometry","core_geometries","indexed_attribute_names","new_values_by_attribute_name","indexed_attribute_name","index_by_values","all_geometries_points","core_geometry","geometry_points","new_index","useGroups","isIndexed","attributesUsed","morphAttributesUsed","morphAttributes","morphTargetsRelative","mergedGeometry","attributesCount","mergedUserData","addGroup","indexOffset","mergedIndex","mergedAttribute","numMorphTargets","morphAttributesToMerge","mergedMorphAttribute","mergeBufferGeometries","merged_core_geometry","pti","coordinates_collection","id_from_name","toId","coordinates_collections","feature_geometry","multi_coordinates","_create_coordinates","raw_coordinates","vectors","raw_coordinate","CameraController","_updateAlways","_listenerAdded","_listener","_executeCallback","removeTarget","setTarget","_removeCameraEvent","old_target","_target","_addCameraEvent","setUpdateAlways","newUpdateAlways","_currentEventName","INPUT_GEOMETRY_NAME","TypedSopNode","setCoreGroup","setObject","_setContainerObjects","setGeometry","setGeometries","_createIndexIfNone","MapboxListenerParamConfig","useBounds","southWest","northEast","useZoom","mapboxCamera","MapboxListenerSopNode","PARAM_CALLBACK_update_mapbox_camera","updateAlwaysAllowed","updateAlways","_mapboxListener","MapboxListener","updateMapboxCamera","findCameraNode","cameraObject","_camera_controller","_updateFromCamera","_updateCameraController","isMapboxActive","isZoomInRange","_postInitController","_current_camera_path","hasZoomParam","hasBoundsParams","sw_param","ne_param","sw","DEFAULT_LIST","MapboxLayerSopParamsConfig","MapboxLayerSopNode","_features_by_name","layerNames","existingLayerNames","layerName","_groupFeaturesByName","featuresForName","featureName","new_object","_feature_name","_id_from_feature","json_str_elements","CoreGeometryOperationHexagon","_param_size","_param_hexagon_radius","_param_points_only","side_length","half_side_length","DIR_ORIGIN","DIR_DEST","MapboxPlaneHexagonsController","_coreTransform","plane_dimensions","segments_counts","hexagons_radius","hexagons_scale_compensate","mapboxTransform","new_plane_dimensions","R_MAT_MAPBOX","R_MAT_WORLD","MapboxPlaneType","MAPBOX_PLANE_TYPES","PLANE","HEXAGONS","MapboxPlaneSopParamsConfig","sizeMult","fullView","asPoints","MapboxPlaneSopNode","_hexagonsController","_buildPlane","_asHexagons","map_center","transformer","mapbox_center_3d","mapbox_center","vertical_far_lng_lat_points","vertical_near_lng_lat_points","lng_lat_points","mirrored_near_lng_lat_points","_mirrorLngLat","expandByPoint","mapbox_box","pt3d","mapbox_dimensions","mapbox_horizontal_lng_lat_points","mapbox_horizontal_distances","mapbox_segment_size","highest_even","mapbox_box_untransformed","mapbox_corners","untransformed_3d","untransformed","world_dimensions","world_plane_center","horizontal_scale","rotation_matrix","geometry_center","INPUT_NAMES","MapboxTransformSopParamsConfig","MapboxTransformSopNode","_transformInput","polyPluginMapbox","setToken","_token"],"sourceRoot":""}