# encoding: utf-8
# module vtkmodules.vtkCommonDataModel
# from C:\Users\xukai\Downloads\发票2\venv\Lib\site-packages\vtkmodules\vtkCommonDataModel.cp311-win_amd64.pyd
# by generator 1.147
# no doc

# imports
import vtkmodules.vtkCommonCore as __vtkmodules_vtkCommonCore
import vtkmodules.vtkCommonMath as __vtkmodules_vtkCommonMath
import vtkmodules.vtkCommonTransforms as __vtkmodules_vtkCommonTransforms


from .vtkNonLinearCell import vtkNonLinearCell

class vtkQuadraticPyramid(vtkNonLinearCell):
    """
    vtkQuadraticPyramid - cell represents a parabolic, 13-node
    isoparametric pyramid
    
    Superclass: vtkNonLinearCell
    
    vtkQuadraticPyramid is a concrete implementation of vtkNonLinearCell
    to represent a three-dimensional, 13-node isoparametric parabolic
    pyramid. The interpolation is the standard finite element, quadratic
    isoparametric shape function. The cell includes a mid-edge node. The
    ordering of the thirteen points defining the cell is point ids
    (0-4,5-12) where point ids 0-4 are the five corner vertices of the
    pyramid; followed by eight midedge nodes (5-12). Note that these
    midedge nodes lie on the edges defined by (0,1), (1,2), (2,3), (3,0),
    (0,4), (1,4), (2,4), (3,4), respectively. The parametric location of
    vertex #4 is [0, 0, 1].
    
    @sa
    vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
    vtkQuadraticHexahedron vtkQuadraticQuad vtkQuadraticWedge
    
    @par Thanks: The shape functions and derivatives could be implemented
    thanks to the report Pyramid Solid Elements Linear and Quadratic
    Iso-P Models From Center For Aerospace Structures
    """
    def CellBoundary(self, subId, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        CellBoundary(self, subId:int, pcoords:(float, float, float),
            pts:vtkIdList) -> int
        C++: int CellBoundary(int subId, const double pcoords[3],
            vtkIdList *pts) override;
        
        Given parametric coordinates of a point, return the closest cell
        boundary, and whether the point is inside or outside of the cell.
        The cell boundary is defined by a list of points (pts) that
        specify a face (3D cell), edge (2D cell), or vertex (1D cell). If
        the return value of the method is != 0, then the point is inside
        the cell.
        """
        pass

    def Clip(self, value, cellScalars, locator, tets, inPd, outPd, inCd, cellId, outCd, insideOut): # real signature unknown; restored from __doc__
        """
        Clip(self, value:float, cellScalars:vtkDataArray,
            locator:vtkIncrementalPointLocator, tets:vtkCellArray,
            inPd:vtkPointData, outPd:vtkPointData, inCd:vtkCellData,
            cellId:int, outCd:vtkCellData, insideOut:int) -> None
        C++: void Clip(double value, vtkDataArray *cellScalars,
            vtkIncrementalPointLocator *locator, vtkCellArray *tets,
            vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd,
            vtkIdType cellId, vtkCellData *outCd, int insideOut) override;
        
        Clip this quadratic triangle using scalar value provided. Like
        contouring, except that it cuts the triangle to produce linear
        triangles.
        """
        pass

    def Contour(self, value, cellScalars, locator, verts, lines, polys, inPd, outPd, inCd, cellId, outCd): # real signature unknown; restored from __doc__
        """
        Contour(self, value:float, cellScalars:vtkDataArray,
            locator:vtkIncrementalPointLocator, verts:vtkCellArray,
            lines:vtkCellArray, polys:vtkCellArray, inPd:vtkPointData,
            outPd:vtkPointData, inCd:vtkCellData, cellId:int,
            outCd:vtkCellData) -> None
        C++: void Contour(double value, vtkDataArray *cellScalars,
            vtkIncrementalPointLocator *locator, vtkCellArray *verts,
            vtkCellArray *lines, vtkCellArray *polys, vtkPointData *inPd,
            vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId,
            vtkCellData *outCd) override;
        
        Generate contouring primitives. The scalar list cellScalars are
        scalar values at each cell point. The point locator is
        essentially a points list that merges points as they are inserted
        (i.e., prevents duplicates). Contouring primitives can be
        vertices, lines, or polygons. It is possible to interpolate point
        data along the edge by providing input and output point data - if
        outPd is nullptr, then no interpolation is performed. Also, if
        the output cell data is non-nullptr, the cell data from the
        contoured cell is passed to the generated contouring primitives.
        (Note: the CopyAllocate() method must be invoked on both the
        output cell and point data. The cellId refers to the cell from
        which the cell data is copied.)
        """
        pass

    def Derivatives(self, subId, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        Derivatives(self, subId:int, pcoords:(float, float, float),
            values:(float, ...), dim:int, derivs:[float, ...]) -> None
        C++: void Derivatives(int subId, const double pcoords[3],
            const double *values, int dim, double *derivs) override;
        
        Compute derivatives given cell subId and parametric coordinates.
        The values array is a series of data value(s) at the cell points.
        There is a one-to-one correspondence between cell point and data
        value(s). Dim is the number of data values per cell point. Derivs
        are derivatives in the x-y-z coordinate directions for each data
        value. Thus, if computing derivatives for a scalar function in a
        hexahedron, dim=1, 8 values are supplied, and 3 deriv values are
        returned (i.e., derivatives in x-y-z directions). On the other
        hand, if computing derivatives of velocity (vx,vy,vz) dim=3, 24
        values are supplied ((vx,vy,vz)1, (vx,vy,vz)2, ....()8), and 9
        deriv values are returned ((d(vx)/dx),(d(vx)/dy),(d(vx)/dz),
        (d(vy)/dx),(d(vy)/dy), (d(vy)/dz),
        (d(vz)/dx),(d(vz)/dy),(d(vz)/dz)).
        """
        pass

    def EvaluateLocation(self, subId, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        EvaluateLocation(self, subId:int, pcoords:(float, float, float),
            x:[float, float, float], weights:[float, ...]) -> None
        C++: void EvaluateLocation(int &subId, const double pcoords[3],
            double x[3], double *weights) override;
        
        Determine global coordinate (x[3]) from subId and parametric
        coordinates. Also returns interpolation weights. (The number of
        weights is equal to the number of points in the cell.)
        """
        pass

    def EvaluatePosition(self, x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        EvaluatePosition(self, x:(float, float, float),
            closestPoint:[float, float, float], subId:int, pcoords:[float,
             float, float], dist2:float, weights:[float, ...]) -> int
        C++: int EvaluatePosition(const double x[3],
            double closestPoint[3], int &subId, double pcoords[3],
            double &dist2, double weights[]) override;
        
        Given a point x[3] return inside(=1), outside(=0) cell, or (-1)
        computational problem encountered; evaluate parametric
        coordinates, sub-cell id (!=0 only if cell is composite),
        distance squared of point x[3] to cell (in particular, the
        sub-cell indicated), closest point on cell to x[3] (unless
        closestPoint is null, in which case, the closest point and dist2
        are not found), and interpolation weights in cell. (The number of
        weights is equal to the number of points defining the cell).
        Note: on rare occasions a -1 is returned from the method. This
        means that numerical error has occurred and all data returned
        from this method should be ignored. Also, inside/outside is
        determine parametrically. That is, a point is inside if it
        satisfies parametric limits. This can cause problems for cells of
        topological dimension 2 or less, since a point in 3D can project
        onto the cell within parametric limits but be "far" from the
        cell.  Thus the value dist2 may be checked to determine true
        in/out.
        """
        pass

    def GetCellDimension(self): # real signature unknown; restored from __doc__
        """
        GetCellDimension(self) -> int
        C++: int GetCellDimension() override;
        
        Return the topological dimensional of the cell (0,1,2, or 3).
        """
        return 0

    def GetCellType(self): # real signature unknown; restored from __doc__
        """
        GetCellType(self) -> int
        C++: int GetCellType() override;
        
        Implement the vtkCell API. See the vtkCell API for descriptions
        of these methods.
        """
        return 0

    def GetEdge(self, edgeId): # real signature unknown; restored from __doc__
        """
        GetEdge(self, edgeId:int) -> vtkCell
        C++: vtkCell *GetEdge(int edgeId) override;
        
        Return the edge cell from the edgeId of the cell.
        """
        return vtkCell

    def GetEdgeArray(self, edgeId): # real signature unknown; restored from __doc__
        """
        GetEdgeArray(edgeId:int) -> Pointer
        C++: static const vtkIdType *GetEdgeArray(vtkIdType edgeId)
        
        Return the ids of the vertices defining edge/face
        (`edgeId`/`faceId'). Ids are related to the cell, not to the
        dataset.
        
        ote The return type changed. It used to be int*, it is now const
        vtkIdType*. This is so ids are unified between vtkCell and
        vtkPoints.
        """
        pass

    def GetFace(self, faceId): # real signature unknown; restored from __doc__
        """
        GetFace(self, faceId:int) -> vtkCell
        C++: vtkCell *GetFace(int faceId) override;
        
        Return the face cell from the faceId of the cell. The returned
        vtkCell is an object owned by this instance, hence the return
        value must not be deleted by the caller.
        
        @warning Repeat calls to this function for different face ids
            will change
        the data stored in the internal member object whose pointer is
        returned by this function.
        
        @warning THIS METHOD IS NOT THREAD SAFE.
        """
        return vtkCell

    def GetFaceArray(self, faceId): # real signature unknown; restored from __doc__
        """
        GetFaceArray(faceId:int) -> Pointer
        C++: static const vtkIdType *GetFaceArray(vtkIdType faceId)
        """
        pass

    def GetNumberOfEdges(self): # real signature unknown; restored from __doc__
        """
        GetNumberOfEdges(self) -> int
        C++: int GetNumberOfEdges() override;
        
        Return the number of edges in the cell.
        """
        return 0

    def GetNumberOfFaces(self): # real signature unknown; restored from __doc__
        """
        GetNumberOfFaces(self) -> int
        C++: int GetNumberOfFaces() override;
        
        Return the number of faces in the cell.
        """
        return 0

    def GetNumberOfGenerationsFromBase(self, type): # real signature unknown; restored from __doc__
        """
        GetNumberOfGenerationsFromBase(self, type:str) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Given the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def GetNumberOfGenerationsFromBaseType(self, type): # real signature unknown; restored from __doc__
        """
        GetNumberOfGenerationsFromBaseType(type:str) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def GetParametricCenter(self, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        GetParametricCenter(self, pcoords:[float, float, float]) -> int
        C++: int GetParametricCenter(double pcoords[3]) override;
        
        Return the center of the quadratic pyramid in parametric
        coordinates.
        """
        pass

    def GetParametricCoords(self): # real signature unknown; restored from __doc__
        """
        GetParametricCoords(self) -> (float, ...)
        C++: double *GetParametricCoords() override;
        
        Return a contiguous array of parametric coordinates of the points
        defining this cell. In other words, (px,py,pz, px,py,pz, etc..) 
        The coordinates are ordered consistent with the definition of the
        point ordering for the cell. This method returns a non-nullptr
        pointer when the cell is a primary type (i.e., IsPrimaryCell() is
        true). Note that 3D parametric coordinates are returned no matter
        what the topological dimension of the cell.
        """
        pass

    def InterpolateDerivs(self, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        InterpolateDerivs(self, pcoords:(float, float, float),
            derivs:[float, float, float, float, float, float, float,
            float, float, float, float, float, float, float, float, float,
             float, float, float, float, float, float, float, float,
            float, float, float, float, float, float, float, float, float,
             float, float, float, float, float, float]) -> None
        C++: void InterpolateDerivs(const double pcoords[3],
            double derivs[39]) override;
        """
        pass

    def InterpolateFunctions(self, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        InterpolateFunctions(self, pcoords:(float, float, float),
            weights:[float, float, float, float, float, float, float,
            float, float, float, float, float, float]) -> None
        C++: void InterpolateFunctions(const double pcoords[3],
            double weights[13]) override;
        
        Compute the interpolation functions/derivatives (aka shape
        functions/derivatives)
        """
        pass

    def InterpolationDerivs(self, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        InterpolationDerivs(pcoords:(float, float, float), derivs:[float,
            float, float, float, float, float, float, float, float, float,
             float, float, float, float, float, float, float, float,
            float, float, float, float, float, float, float, float, float,
             float, float, float, float, float, float, float, float,
            float, float, float, float]) -> None
        C++: static void InterpolationDerivs(const double pcoords[3],
            double derivs[39])
        """
        pass

    def InterpolationFunctions(self, pcoords, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        InterpolationFunctions(pcoords:(float, float, float),
            weights:[float, float, float, float, float, float, float,
            float, float, float, float, float, float]) -> None
        C++: static void InterpolationFunctions(const double pcoords[3],
            double weights[13])
        """
        pass

    def IntersectWithLine(self, p1, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        IntersectWithLine(self, p1:(float, float, float), p2:(float,
            float, float), tol:float, t:float, x:[float, float, float],
            pcoords:[float, float, float], subId:int) -> int
        C++: int IntersectWithLine(const double p1[3], const double p2[3],
             double tol, double &t, double x[3], double pcoords[3],
            int &subId) override;
        
        Line-edge intersection. Intersection has to occur within [0,1]
        parametric coordinates and with specified tolerance.
        """
        pass

    def IsA(self, type): # real signature unknown; restored from __doc__
        """
        IsA(self, type:str) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Return 1 if this class is the same type of (or a subclass of) the
        named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def IsTypeOf(self, type): # real signature unknown; restored from __doc__
        """
        IsTypeOf(type:str) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Return 1 if this class type is the same type of (or a subclass
        of) the named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def NewInstance(self): # real signature unknown; restored from __doc__
        """
        NewInstance(self) -> vtkQuadraticPyramid
        C++: vtkQuadraticPyramid *NewInstance()
        """
        return vtkQuadraticPyramid

    def SafeDownCast(self, o): # real signature unknown; restored from __doc__
        """
        SafeDownCast(o:vtkObjectBase) -> vtkQuadraticPyramid
        C++: static vtkQuadraticPyramid *SafeDownCast(vtkObjectBase *o)
        """
        return vtkQuadraticPyramid

    def Triangulate(self, index, ptIds, pts): # real signature unknown; restored from __doc__
        """
        Triangulate(self, index:int, ptIds:vtkIdList, pts:vtkPoints)
            -> int
        C++: int Triangulate(int index, vtkIdList *ptIds, vtkPoints *pts)
            override;
        
        Generate simplices of proper dimension. If cell is 3D,
        tetrahedron are generated; if 2D triangles; if 1D lines; if 0D
        points. The form of the output is a sequence of points, each n+1
        points (where n is topological cell dimension) defining a
        simplex. The index is a parameter that controls which
        triangulation to use (if more than one is possible). If numerical
        degeneracy encountered, 0 is returned, otherwise 1 is returned.
        This method does not insert new points: all the points that
        define the simplices are the points that define the cell.
        """
        return 0

    def __delattr__(self, *args, **kwargs): # real signature unknown
        """ Implement delattr(self, name). """
        pass

    def __getattribute__(self, *args, **kwargs): # real signature unknown
        """ Return getattr(self, name). """
        pass

    def __init__(self, *args, **kwargs): # real signature unknown
        pass

    @staticmethod # known case of __new__
    def __new__(*args, **kwargs): # real signature unknown
        """ Create and return a new object.  See help(type) for accurate signature. """
        pass

    def __repr__(self, *args, **kwargs): # real signature unknown
        """ Return repr(self). """
        pass

    def __setattr__(self, *args, **kwargs): # real signature unknown
        """ Implement setattr(self, name, value). """
        pass

    def __str__(self, *args, **kwargs): # real signature unknown
        """ Return str(self). """
        pass

    __this__ = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    """Pointer to the C++ object."""


    __dict__ = None # (!) real value is "mappingproxy({'__vtkname__': 'vtkQuadraticPyramid', 'IsTypeOf': <method 'IsTypeOf' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'IsA': <method 'IsA' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'SafeDownCast': <method 'SafeDownCast' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'NewInstance': <method 'NewInstance' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetNumberOfGenerationsFromBaseType': <method 'GetNumberOfGenerationsFromBaseType' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetNumberOfGenerationsFromBase': <method 'GetNumberOfGenerationsFromBase' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetCellType': <method 'GetCellType' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetCellDimension': <method 'GetCellDimension' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetNumberOfEdges': <method 'GetNumberOfEdges' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetNumberOfFaces': <method 'GetNumberOfFaces' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetEdge': <method 'GetEdge' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetFace': <method 'GetFace' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'CellBoundary': <method 'CellBoundary' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'Contour': <method 'Contour' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'EvaluatePosition': <method 'EvaluatePosition' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'EvaluateLocation': <method 'EvaluateLocation' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'Triangulate': <method 'Triangulate' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'Derivatives': <method 'Derivatives' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetParametricCoords': <method 'GetParametricCoords' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'Clip': <method 'Clip' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'IntersectWithLine': <method 'IntersectWithLine' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetParametricCenter': <method 'GetParametricCenter' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'InterpolationFunctions': <method 'InterpolationFunctions' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'InterpolationDerivs': <method 'InterpolationDerivs' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'InterpolateFunctions': <method 'InterpolateFunctions' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'InterpolateDerivs': <method 'InterpolateDerivs' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetEdgeArray': <method 'GetEdgeArray' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, 'GetFaceArray': <method 'GetFaceArray' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__new__': <built-in method __new__ of type object at 0x00007FF81D647F20>, '__repr__': <slot wrapper '__repr__' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__str__': <slot wrapper '__str__' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__getattribute__': <slot wrapper '__getattribute__' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__setattr__': <slot wrapper '__setattr__' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__delattr__': <slot wrapper '__delattr__' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__dict__': <attribute '__dict__' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__this__': <attribute '__this__' of 'vtkmodules.vtkCommonDataModel.vtkQuadraticPyramid' objects>, '__doc__': 'vtkQuadraticPyramid - cell represents a parabolic, 13-node\\nisoparametric pyramid\\n\\nSuperclass: vtkNonLinearCell\\n\\nvtkQuadraticPyramid is a concrete implementation of vtkNonLinearCell\\nto represent a three-dimensional, 13-node isoparametric parabolic\\npyramid. The interpolation is the standard finite element, quadratic\\nisoparametric shape function. The cell includes a mid-edge node. The\\nordering of the thirteen points defining the cell is point ids\\n(0-4,5-12) where point ids 0-4 are the five corner vertices of the\\npyramid; followed by eight midedge nodes (5-12). Note that these\\nmidedge nodes lie on the edges defined by (0,1), (1,2), (2,3), (3,0),\\n(0,4), (1,4), (2,4), (3,4), respectively. The parametric location of\\nvertex #4 is [0, 0, 1].\\n\\n@sa\\nvtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra\\nvtkQuadraticHexahedron vtkQuadraticQuad vtkQuadraticWedge\\n\\n@par Thanks: The shape functions and derivatives could be implemented\\nthanks to the report Pyramid Solid Elements Linear and Quadratic\\nIso-P Models From Center For Aerospace Structures\\n\\n'})"
    __vtkname__ = 'vtkQuadraticPyramid'


