1 |
- {"ast":null,"code":"import { Vector3, TmpVectors, Quaternion, Vector4, Vector2 } from \"../Maths/math.vector.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { BoundingInfo } from \"../Culling/boundingInfo.js\";\nimport { BoundingSphere } from \"../Culling/boundingSphere.js\";\nimport { AbstractMesh } from \"../Meshes/abstractMesh.js\";\n/**\n * Represents one particle of a solid particle system.\n */\nexport class SolidParticle {\n /**\n * Particle BoundingInfo object\n * @returns a BoundingInfo\n */\n getBoundingInfo() {\n return this._boundingInfo;\n }\n /**\n * Returns true if there is already a bounding info\n */\n get hasBoundingInfo() {\n return this._boundingInfo !== null;\n }\n /**\n * Creates a Solid Particle object.\n * Don't create particles manually, use instead the Solid Particle System internal tools like _addParticle()\n * @param particleIndex (integer) is the particle index in the Solid Particle System pool.\n * @param particleId (integer) is the particle identifier. Unless some particles are removed from the SPS, it's the same value than the particle idx.\n * @param positionIndex (integer) is the starting index of the particle vertices in the SPS \"positions\" array.\n * @param indiceIndex (integer) is the starting index of the particle indices in the SPS \"indices\" array.\n * @param model (ModelShape) is a reference to the model shape on what the particle is designed.\n * @param shapeId (integer) is the model shape identifier in the SPS.\n * @param idxInShape (integer) is the index of the particle in the current model (ex: the 10th box of addShape(box, 30))\n * @param sps defines the sps it is associated to\n * @param modelBoundingInfo is the reference to the model BoundingInfo used for intersection computations.\n * @param materialIndex is the particle material identifier (integer) when the MultiMaterials are enabled in the SPS.\n */\n constructor(particleIndex, particleId, positionIndex, indiceIndex, model, shapeId, idxInShape, sps, modelBoundingInfo = null, materialIndex = null) {\n /**\n * particle global index\n */\n this.idx = 0;\n /**\n * particle identifier\n */\n this.id = 0;\n /**\n * The color of the particle\n */\n this.color = new Color4(1.0, 1.0, 1.0, 1.0);\n /**\n * The world space position of the particle.\n */\n this.position = Vector3.Zero();\n /**\n * The world space rotation of the particle. (Not use if rotationQuaternion is set)\n */\n this.rotation = Vector3.Zero();\n /**\n * The scaling of the particle.\n */\n this.scaling = Vector3.One();\n /**\n * The uvs of the particle.\n */\n this.uvs = new Vector4(0.0, 0.0, 1.0, 1.0);\n /**\n * The current speed of the particle.\n */\n this.velocity = Vector3.Zero();\n /**\n * The pivot point in the particle local space.\n */\n this.pivot = Vector3.Zero();\n /**\n * Must the particle be translated from its pivot point in its local space ?\n * In this case, the pivot point is set at the origin of the particle local space and the particle is translated.\n * Default : false\n */\n this.translateFromPivot = false;\n /**\n * Is the particle active or not ?\n */\n this.alive = true;\n /**\n * Is the particle visible or not ?\n */\n this.isVisible = true;\n /**\n * Index of this particle in the global \"positions\" array (Internal use)\n * @internal\n */\n this._pos = 0;\n /**\n * @internal Index of this particle in the global \"indices\" array (Internal use)\n */\n this._ind = 0;\n /**\n * ModelShape id of this particle\n */\n this.shapeId = 0;\n /**\n * Index of the particle in its shape id\n */\n this.idxInShape = 0;\n /**\n * @internal Still set as invisible in order to skip useless computations (Internal use)\n */\n this._stillInvisible = false;\n /**\n * @internal Last computed particle rotation matrix\n */\n this._rotationMatrix = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0];\n /**\n * Parent particle Id, if any.\n * Default null.\n */\n this.parentId = null;\n /**\n * The particle material identifier (integer) when MultiMaterials are enabled in the SPS.\n */\n this.materialIndex = null;\n /**\n * Custom object or properties.\n */\n this.props = null;\n /**\n * The culling strategy to use to check whether the solid particle must be culled or not when using isInFrustum().\n * The possible values are :\n * - AbstractMesh.CULLINGSTRATEGY_STANDARD\n * - AbstractMesh.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY\n * - AbstractMesh.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION\n * - AbstractMesh.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY\n * The default value for solid particles is AbstractMesh.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY\n * Please read each static variable documentation in the class AbstractMesh to get details about the culling process.\n * */\n this.cullingStrategy = AbstractMesh.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY;\n /**\n * @internal Internal global position in the SPS.\n */\n this._globalPosition = Vector3.Zero();\n this.idx = particleIndex;\n this.id = particleId;\n this._pos = positionIndex;\n this._ind = indiceIndex;\n this._model = model;\n this.shapeId = shapeId;\n this.idxInShape = idxInShape;\n this._sps = sps;\n if (modelBoundingInfo) {\n this._modelBoundingInfo = modelBoundingInfo;\n this._boundingInfo = new BoundingInfo(modelBoundingInfo.minimum, modelBoundingInfo.maximum);\n }\n if (materialIndex !== null) {\n this.materialIndex = materialIndex;\n }\n }\n /**\n * Copies the particle property values into the existing target : position, rotation, scaling, uvs, colors, pivot, parent, visibility, alive\n * @param target the particle target\n * @returns the current particle\n */\n copyToRef(target) {\n target.position.copyFrom(this.position);\n target.rotation.copyFrom(this.rotation);\n if (this.rotationQuaternion) {\n if (target.rotationQuaternion) {\n target.rotationQuaternion.copyFrom(this.rotationQuaternion);\n } else {\n target.rotationQuaternion = this.rotationQuaternion.clone();\n }\n }\n target.scaling.copyFrom(this.scaling);\n if (this.color) {\n if (target.color) {\n target.color.copyFrom(this.color);\n } else {\n target.color = this.color.clone();\n }\n }\n target.uvs.copyFrom(this.uvs);\n target.velocity.copyFrom(this.velocity);\n target.pivot.copyFrom(this.pivot);\n target.translateFromPivot = this.translateFromPivot;\n target.alive = this.alive;\n target.isVisible = this.isVisible;\n target.parentId = this.parentId;\n target.cullingStrategy = this.cullingStrategy;\n if (this.materialIndex !== null) {\n target.materialIndex = this.materialIndex;\n }\n return this;\n }\n /**\n * Legacy support, changed scale to scaling\n */\n get scale() {\n return this.scaling;\n }\n /**\n * Legacy support, changed scale to scaling\n */\n set scale(scale) {\n this.scaling = scale;\n }\n /**\n * Legacy support, changed quaternion to rotationQuaternion\n */\n get quaternion() {\n return this.rotationQuaternion;\n }\n /**\n * Legacy support, changed quaternion to rotationQuaternion\n */\n set quaternion(q) {\n this.rotationQuaternion = q;\n }\n /**\n * Returns a boolean. True if the particle intersects another particle or another mesh, else false.\n * The intersection is computed on the particle bounding sphere and Axis Aligned Bounding Box (AABB)\n * @param target is the object (solid particle or mesh) what the intersection is computed against.\n * @returns true if it intersects\n */\n intersectsMesh(target) {\n if (!this._boundingInfo || !target.hasBoundingInfo) {\n return false;\n }\n if (this._sps._bSphereOnly) {\n return BoundingSphere.Intersects(this._boundingInfo.boundingSphere, target.getBoundingInfo().boundingSphere);\n }\n return this._boundingInfo.intersects(target.getBoundingInfo(), false);\n }\n /**\n * Returns `true` if the solid particle is within the frustum defined by the passed array of planes.\n * A particle is in the frustum if its bounding box intersects the frustum\n * @param frustumPlanes defines the frustum to test\n * @returns true if the particle is in the frustum planes\n */\n isInFrustum(frustumPlanes) {\n return this._boundingInfo !== null && this._boundingInfo.isInFrustum(frustumPlanes, this.cullingStrategy);\n }\n /**\n * get the rotation matrix of the particle\n * @internal\n */\n getRotationMatrix(m) {\n let quaternion;\n if (this.rotationQuaternion) {\n quaternion = this.rotationQuaternion;\n } else {\n quaternion = TmpVectors.Quaternion[0];\n const rotation = this.rotation;\n Quaternion.RotationYawPitchRollToRef(rotation.y, rotation.x, rotation.z, quaternion);\n }\n quaternion.toRotationMatrix(m);\n }\n}\n/**\n * Represents the shape of the model used by one particle of a solid particle system.\n * SPS internal tool, don't use it manually.\n */\nexport class ModelShape {\n /**\n * Get or set the shapeId\n * @deprecated Please use shapeId instead\n */\n get shapeID() {\n return this.shapeId;\n }\n set shapeID(shapeID) {\n this.shapeId = shapeID;\n }\n /**\n * Creates a ModelShape object. This is an internal simplified reference to a mesh used as for a model to replicate particles from by the SPS.\n * SPS internal tool, don't use it manually.\n * @internal\n */\n constructor(id, shape, indices, normals, colors, shapeUV, posFunction, vtxFunction, material) {\n /**\n * length of the shape in the model indices array (internal use)\n * @internal\n */\n this._indicesLength = 0;\n this.shapeId = id;\n this._shape = shape;\n this._indices = indices;\n this._indicesLength = indices.length;\n this._shapeUV = shapeUV;\n this._shapeColors = colors;\n this._normals = normals;\n this._positionFunction = posFunction;\n this._vertexFunction = vtxFunction;\n this._material = material;\n }\n}\n/**\n * Represents a Depth Sorted Particle in the solid particle system.\n * @internal\n */\nexport class DepthSortedParticle {\n /**\n * Creates a new sorted particle\n * @param idx\n * @param ind\n * @param indLength\n * @param materialIndex\n */\n constructor(idx, ind, indLength, materialIndex) {\n /**\n * Particle index\n */\n this.idx = 0;\n /**\n * Index of the particle in the \"indices\" array\n */\n this.ind = 0;\n /**\n * Length of the particle shape in the \"indices\" array\n */\n this.indicesLength = 0;\n /**\n * Squared distance from the particle to the camera\n */\n this.sqDistance = 0.0;\n /**\n * Material index when used with MultiMaterials\n */\n this.materialIndex = 0;\n this.idx = idx;\n this.ind = ind;\n this.indicesLength = indLength;\n this.materialIndex = materialIndex;\n }\n}\n/**\n * Represents a solid particle vertex\n */\nexport class SolidParticleVertex {\n /**\n * Creates a new solid particle vertex\n */\n constructor() {\n this.position = Vector3.Zero();\n this.color = new Color4(1.0, 1.0, 1.0, 1.0);\n this.uv = Vector2.Zero();\n }\n // Getters and Setters for back-compatibility\n /** Vertex x coordinate */\n get x() {\n return this.position.x;\n }\n set x(val) {\n this.position.x = val;\n }\n /** Vertex y coordinate */\n get y() {\n return this.position.y;\n }\n set y(val) {\n this.position.y = val;\n }\n /** Vertex z coordinate */\n get z() {\n return this.position.z;\n }\n set z(val) {\n this.position.z = val;\n }\n}","map":{"version":3,"names":["Vector3","TmpVectors","Quaternion","Vector4","Vector2","Color4","BoundingInfo","BoundingSphere","AbstractMesh","SolidParticle","getBoundingInfo","_boundingInfo","hasBoundingInfo","constructor","particleIndex","particleId","positionIndex","indiceIndex","model","shapeId","idxInShape","sps","modelBoundingInfo","materialIndex","idx","id","color","position","Zero","rotation","scaling","One","uvs","velocity","pivot","translateFromPivot","alive","isVisible","_pos","_ind","_stillInvisible","_rotationMatrix","parentId","props","cullingStrategy","CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY","_globalPosition","_model","_sps","_modelBoundingInfo","minimum","maximum","copyToRef","target","copyFrom","rotationQuaternion","clone","scale","quaternion","q","intersectsMesh","_bSphereOnly","Intersects","boundingSphere","intersects","isInFrustum","frustumPlanes","getRotationMatrix","m","RotationYawPitchRollToRef","y","x","z","toRotationMatrix","ModelShape","shapeID","shape","indices","normals","colors","shapeUV","posFunction","vtxFunction","material","_indicesLength","_shape","_indices","length","_shapeUV","_shapeColors","_normals","_positionFunction","_vertexFunction","_material","DepthSortedParticle","ind","indLength","indicesLength","sqDistance","SolidParticleVertex","uv","val"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Particles/solidParticle.js"],"sourcesContent":["import { Vector3, TmpVectors, Quaternion, Vector4, Vector2 } from \"../Maths/math.vector.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { BoundingInfo } from \"../Culling/boundingInfo.js\";\nimport { BoundingSphere } from \"../Culling/boundingSphere.js\";\nimport { AbstractMesh } from \"../Meshes/abstractMesh.js\";\n/**\n * Represents one particle of a solid particle system.\n */\nexport class SolidParticle {\n /**\n * Particle BoundingInfo object\n * @returns a BoundingInfo\n */\n getBoundingInfo() {\n return this._boundingInfo;\n }\n /**\n * Returns true if there is already a bounding info\n */\n get hasBoundingInfo() {\n return this._boundingInfo !== null;\n }\n /**\n * Creates a Solid Particle object.\n * Don't create particles manually, use instead the Solid Particle System internal tools like _addParticle()\n * @param particleIndex (integer) is the particle index in the Solid Particle System pool.\n * @param particleId (integer) is the particle identifier. Unless some particles are removed from the SPS, it's the same value than the particle idx.\n * @param positionIndex (integer) is the starting index of the particle vertices in the SPS \"positions\" array.\n * @param indiceIndex (integer) is the starting index of the particle indices in the SPS \"indices\" array.\n * @param model (ModelShape) is a reference to the model shape on what the particle is designed.\n * @param shapeId (integer) is the model shape identifier in the SPS.\n * @param idxInShape (integer) is the index of the particle in the current model (ex: the 10th box of addShape(box, 30))\n * @param sps defines the sps it is associated to\n * @param modelBoundingInfo is the reference to the model BoundingInfo used for intersection computations.\n * @param materialIndex is the particle material identifier (integer) when the MultiMaterials are enabled in the SPS.\n */\n constructor(particleIndex, particleId, positionIndex, indiceIndex, model, shapeId, idxInShape, sps, modelBoundingInfo = null, materialIndex = null) {\n /**\n * particle global index\n */\n this.idx = 0;\n /**\n * particle identifier\n */\n this.id = 0;\n /**\n * The color of the particle\n */\n this.color = new Color4(1.0, 1.0, 1.0, 1.0);\n /**\n * The world space position of the particle.\n */\n this.position = Vector3.Zero();\n /**\n * The world space rotation of the particle. (Not use if rotationQuaternion is set)\n */\n this.rotation = Vector3.Zero();\n /**\n * The scaling of the particle.\n */\n this.scaling = Vector3.One();\n /**\n * The uvs of the particle.\n */\n this.uvs = new Vector4(0.0, 0.0, 1.0, 1.0);\n /**\n * The current speed of the particle.\n */\n this.velocity = Vector3.Zero();\n /**\n * The pivot point in the particle local space.\n */\n this.pivot = Vector3.Zero();\n /**\n * Must the particle be translated from its pivot point in its local space ?\n * In this case, the pivot point is set at the origin of the particle local space and the particle is translated.\n * Default : false\n */\n this.translateFromPivot = false;\n /**\n * Is the particle active or not ?\n */\n this.alive = true;\n /**\n * Is the particle visible or not ?\n */\n this.isVisible = true;\n /**\n * Index of this particle in the global \"positions\" array (Internal use)\n * @internal\n */\n this._pos = 0;\n /**\n * @internal Index of this particle in the global \"indices\" array (Internal use)\n */\n this._ind = 0;\n /**\n * ModelShape id of this particle\n */\n this.shapeId = 0;\n /**\n * Index of the particle in its shape id\n */\n this.idxInShape = 0;\n /**\n * @internal Still set as invisible in order to skip useless computations (Internal use)\n */\n this._stillInvisible = false;\n /**\n * @internal Last computed particle rotation matrix\n */\n this._rotationMatrix = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0];\n /**\n * Parent particle Id, if any.\n * Default null.\n */\n this.parentId = null;\n /**\n * The particle material identifier (integer) when MultiMaterials are enabled in the SPS.\n */\n this.materialIndex = null;\n /**\n * Custom object or properties.\n */\n this.props = null;\n /**\n * The culling strategy to use to check whether the solid particle must be culled or not when using isInFrustum().\n * The possible values are :\n * - AbstractMesh.CULLINGSTRATEGY_STANDARD\n * - AbstractMesh.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY\n * - AbstractMesh.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION\n * - AbstractMesh.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY\n * The default value for solid particles is AbstractMesh.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY\n * Please read each static variable documentation in the class AbstractMesh to get details about the culling process.\n * */\n this.cullingStrategy = AbstractMesh.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY;\n /**\n * @internal Internal global position in the SPS.\n */\n this._globalPosition = Vector3.Zero();\n this.idx = particleIndex;\n this.id = particleId;\n this._pos = positionIndex;\n this._ind = indiceIndex;\n this._model = model;\n this.shapeId = shapeId;\n this.idxInShape = idxInShape;\n this._sps = sps;\n if (modelBoundingInfo) {\n this._modelBoundingInfo = modelBoundingInfo;\n this._boundingInfo = new BoundingInfo(modelBoundingInfo.minimum, modelBoundingInfo.maximum);\n }\n if (materialIndex !== null) {\n this.materialIndex = materialIndex;\n }\n }\n /**\n * Copies the particle property values into the existing target : position, rotation, scaling, uvs, colors, pivot, parent, visibility, alive\n * @param target the particle target\n * @returns the current particle\n */\n copyToRef(target) {\n target.position.copyFrom(this.position);\n target.rotation.copyFrom(this.rotation);\n if (this.rotationQuaternion) {\n if (target.rotationQuaternion) {\n target.rotationQuaternion.copyFrom(this.rotationQuaternion);\n }\n else {\n target.rotationQuaternion = this.rotationQuaternion.clone();\n }\n }\n target.scaling.copyFrom(this.scaling);\n if (this.color) {\n if (target.color) {\n target.color.copyFrom(this.color);\n }\n else {\n target.color = this.color.clone();\n }\n }\n target.uvs.copyFrom(this.uvs);\n target.velocity.copyFrom(this.velocity);\n target.pivot.copyFrom(this.pivot);\n target.translateFromPivot = this.translateFromPivot;\n target.alive = this.alive;\n target.isVisible = this.isVisible;\n target.parentId = this.parentId;\n target.cullingStrategy = this.cullingStrategy;\n if (this.materialIndex !== null) {\n target.materialIndex = this.materialIndex;\n }\n return this;\n }\n /**\n * Legacy support, changed scale to scaling\n */\n get scale() {\n return this.scaling;\n }\n /**\n * Legacy support, changed scale to scaling\n */\n set scale(scale) {\n this.scaling = scale;\n }\n /**\n * Legacy support, changed quaternion to rotationQuaternion\n */\n get quaternion() {\n return this.rotationQuaternion;\n }\n /**\n * Legacy support, changed quaternion to rotationQuaternion\n */\n set quaternion(q) {\n this.rotationQuaternion = q;\n }\n /**\n * Returns a boolean. True if the particle intersects another particle or another mesh, else false.\n * The intersection is computed on the particle bounding sphere and Axis Aligned Bounding Box (AABB)\n * @param target is the object (solid particle or mesh) what the intersection is computed against.\n * @returns true if it intersects\n */\n intersectsMesh(target) {\n if (!this._boundingInfo || !target.hasBoundingInfo) {\n return false;\n }\n if (this._sps._bSphereOnly) {\n return BoundingSphere.Intersects(this._boundingInfo.boundingSphere, target.getBoundingInfo().boundingSphere);\n }\n return this._boundingInfo.intersects(target.getBoundingInfo(), false);\n }\n /**\n * Returns `true` if the solid particle is within the frustum defined by the passed array of planes.\n * A particle is in the frustum if its bounding box intersects the frustum\n * @param frustumPlanes defines the frustum to test\n * @returns true if the particle is in the frustum planes\n */\n isInFrustum(frustumPlanes) {\n return this._boundingInfo !== null && this._boundingInfo.isInFrustum(frustumPlanes, this.cullingStrategy);\n }\n /**\n * get the rotation matrix of the particle\n * @internal\n */\n getRotationMatrix(m) {\n let quaternion;\n if (this.rotationQuaternion) {\n quaternion = this.rotationQuaternion;\n }\n else {\n quaternion = TmpVectors.Quaternion[0];\n const rotation = this.rotation;\n Quaternion.RotationYawPitchRollToRef(rotation.y, rotation.x, rotation.z, quaternion);\n }\n quaternion.toRotationMatrix(m);\n }\n}\n/**\n * Represents the shape of the model used by one particle of a solid particle system.\n * SPS internal tool, don't use it manually.\n */\nexport class ModelShape {\n /**\n * Get or set the shapeId\n * @deprecated Please use shapeId instead\n */\n get shapeID() {\n return this.shapeId;\n }\n set shapeID(shapeID) {\n this.shapeId = shapeID;\n }\n /**\n * Creates a ModelShape object. This is an internal simplified reference to a mesh used as for a model to replicate particles from by the SPS.\n * SPS internal tool, don't use it manually.\n * @internal\n */\n constructor(id, shape, indices, normals, colors, shapeUV, posFunction, vtxFunction, material) {\n /**\n * length of the shape in the model indices array (internal use)\n * @internal\n */\n this._indicesLength = 0;\n this.shapeId = id;\n this._shape = shape;\n this._indices = indices;\n this._indicesLength = indices.length;\n this._shapeUV = shapeUV;\n this._shapeColors = colors;\n this._normals = normals;\n this._positionFunction = posFunction;\n this._vertexFunction = vtxFunction;\n this._material = material;\n }\n}\n/**\n * Represents a Depth Sorted Particle in the solid particle system.\n * @internal\n */\nexport class DepthSortedParticle {\n /**\n * Creates a new sorted particle\n * @param idx\n * @param ind\n * @param indLength\n * @param materialIndex\n */\n constructor(idx, ind, indLength, materialIndex) {\n /**\n * Particle index\n */\n this.idx = 0;\n /**\n * Index of the particle in the \"indices\" array\n */\n this.ind = 0;\n /**\n * Length of the particle shape in the \"indices\" array\n */\n this.indicesLength = 0;\n /**\n * Squared distance from the particle to the camera\n */\n this.sqDistance = 0.0;\n /**\n * Material index when used with MultiMaterials\n */\n this.materialIndex = 0;\n this.idx = idx;\n this.ind = ind;\n this.indicesLength = indLength;\n this.materialIndex = materialIndex;\n }\n}\n/**\n * Represents a solid particle vertex\n */\nexport class SolidParticleVertex {\n /**\n * Creates a new solid particle vertex\n */\n constructor() {\n this.position = Vector3.Zero();\n this.color = new Color4(1.0, 1.0, 1.0, 1.0);\n this.uv = Vector2.Zero();\n }\n // Getters and Setters for back-compatibility\n /** Vertex x coordinate */\n get x() {\n return this.position.x;\n }\n set x(val) {\n this.position.x = val;\n }\n /** Vertex y coordinate */\n get y() {\n return this.position.y;\n }\n set y(val) {\n this.position.y = val;\n }\n /** Vertex z coordinate */\n get z() {\n return this.position.z;\n }\n set z(val) {\n this.position.z = val;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|