Salome HOME
Merge branch 'master' into occ/bsplines
[modules/shaper.git] / src / FeaturesPlugin / CMakeLists.txt
1 # Copyright (C) 2014-2019  CEA/DEN, EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 INCLUDE(Common)
21 INCLUDE(UnitTest)
22
23 SET(PROJECT_HEADERS
24     FeaturesPlugin.h
25     FeaturesPlugin_Plugin.h
26     FeaturesPlugin_Extrusion.h
27     FeaturesPlugin_Recover.h
28     FeaturesPlugin_Revolution.h
29     FeaturesPlugin_Rotation.h
30     FeaturesPlugin_Translation.h
31     FeaturesPlugin_VersionedBoolean.h
32     FeaturesPlugin_Boolean.h
33     FeaturesPlugin_BooleanCut.h
34     FeaturesPlugin_BooleanFuse.h
35     FeaturesPlugin_BooleanCommon.h
36     FeaturesPlugin_BooleanSmash.h
37     FeaturesPlugin_BooleanFill.h
38     FeaturesPlugin_Intersection.h
39     FeaturesPlugin_Partition.h
40     FeaturesPlugin_Pipe.h
41     FeaturesPlugin_Placement.h
42     FeaturesPlugin_CompositeBoolean.h
43     FeaturesPlugin_CompositeSketch.h
44     FeaturesPlugin_ExtrusionBoolean.h
45     FeaturesPlugin_ExtrusionCut.h
46     FeaturesPlugin_ExtrusionFuse.h
47     FeaturesPlugin_RevolutionBoolean.h
48     FeaturesPlugin_RevolutionCut.h
49     FeaturesPlugin_RevolutionFuse.h
50     FeaturesPlugin_Union.h
51     FeaturesPlugin_ValidatorTransform.h
52     FeaturesPlugin_Validators.h
53     FeaturesPlugin_RemoveSubShapes.h
54     FeaturesPlugin_Tools.h
55     FeaturesPlugin_Symmetry.h
56     FeaturesPlugin_Scale.h
57     FeaturesPlugin_MultiTranslation.h
58     FeaturesPlugin_MultiRotation.h
59     FeaturesPlugin_Fillet.h
60     FeaturesPlugin_Measurement.h
61     FeaturesPlugin_FusionFaces.h
62     FeaturesPlugin_RemoveResults.h
63     FeaturesPlugin_Chamfer.h
64     FeaturesPlugin_Copy.h
65     FeaturesPlugin_ImportResult.h
66 )
67
68 SET(PROJECT_SOURCES
69     FeaturesPlugin_Plugin.cpp
70     FeaturesPlugin_Extrusion.cpp
71     FeaturesPlugin_Recover.cpp
72     FeaturesPlugin_Revolution.cpp
73     FeaturesPlugin_Rotation.cpp
74     FeaturesPlugin_Translation.cpp
75     FeaturesPlugin_VersionedBoolean.cpp
76     FeaturesPlugin_Boolean.cpp
77     FeaturesPlugin_BooleanCut.cpp
78     FeaturesPlugin_BooleanFuse.cpp
79     FeaturesPlugin_BooleanCommon.cpp
80     FeaturesPlugin_BooleanSmash.cpp
81     FeaturesPlugin_BooleanFill.cpp
82     FeaturesPlugin_Intersection.cpp
83     FeaturesPlugin_Partition.cpp
84     FeaturesPlugin_Pipe.cpp
85     FeaturesPlugin_Placement.cpp
86     FeaturesPlugin_CompositeBoolean.cpp
87     FeaturesPlugin_CompositeSketch.cpp
88     FeaturesPlugin_ExtrusionBoolean.cpp
89     FeaturesPlugin_ExtrusionCut.cpp
90     FeaturesPlugin_ExtrusionFuse.cpp
91     FeaturesPlugin_RevolutionBoolean.cpp
92     FeaturesPlugin_RevolutionCut.cpp
93     FeaturesPlugin_RevolutionFuse.cpp
94     FeaturesPlugin_Union.cpp
95     FeaturesPlugin_ValidatorTransform.cpp
96     FeaturesPlugin_Validators.cpp
97     FeaturesPlugin_RemoveSubShapes.cpp
98     FeaturesPlugin_Tools.cpp
99     FeaturesPlugin_Symmetry.cpp
100     FeaturesPlugin_Scale.cpp
101     FeaturesPlugin_MultiTranslation.cpp
102     FeaturesPlugin_MultiRotation.cpp
103     FeaturesPlugin_Fillet.cpp
104     FeaturesPlugin_Measurement.cpp
105     FeaturesPlugin_FusionFaces.cpp
106     FeaturesPlugin_RemoveResults.cpp
107     FeaturesPlugin_Chamfer.cpp
108     FeaturesPlugin_Copy.cpp
109     FeaturesPlugin_ImportResult.cpp
110 )
111
112 SET(XML_RESOURCES
113   plugin-Features.xml
114   extrusion_widget.xml
115   extrusioncut_widget.xml
116   extrusionfuse_widget.xml
117   revolution_widget.xml
118   revolutioncut_widget.xml
119   revolutionfuse_widget.xml
120   rotation_widget.xml
121   translation_widget.xml
122   boolean_widget.xml
123   boolean_fuse_widget.xml
124   boolean_common_widget.xml
125   boolean_split_widget.xml
126   boolean_smash_widget.xml
127   recover_widget.xml
128   partition_widget.xml
129   placement_widget.xml
130   intersection_widget.xml
131   pipe_widget.xml
132   remove_subshapes_widget.xml
133   union_widget.xml
134   symmetry_widget.xml
135   scale_widget.xml
136   multitranslation_widget.xml
137   multirotation_widget.xml
138   fillet_widget.xml
139   measurement_widget.xml
140   fusion_faces_widget.xml
141   chamfer_widget.xml
142   copy_widget.xml
143   import_result_widget.xml
144 )
145
146 SET(TEXT_RESOURCES
147     FeaturesPlugin_msg_en.ts
148     FeaturesPlugin_msg_fr.ts
149     FeaturesPlugin_msg_ru.ts
150 )
151
152 SOURCE_GROUP ("Resource Files" FILES ${TEXT_RESOURCES})
153
154
155 INCLUDE_DIRECTORIES(
156   ../ModelAPI
157   ../GeomAPI
158   ../GeomAlgoAPI
159   ../GeomValidators
160   ../Events
161   ../Config
162   ${OpenCASCADE_INCLUDE_DIR}
163 )
164
165 SET(PROJECT_LIBRARIES
166     Events
167     ModelAPI
168     GeomAPI
169     GeomAlgoAPI
170     GeomValidators
171     Config
172     ${OpenCASCADE_Visualization_LIBRARIES}
173 )
174
175 ADD_DEFINITIONS(-DFEATURESPLUGIN_EXPORTS)
176 ADD_LIBRARY(FeaturesPlugin MODULE ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${XML_RESOURCES} ${TEXT_RESOURCES})
177 TARGET_LINK_LIBRARIES(FeaturesPlugin ${PROJECT_LIBRARIES})
178
179 INSTALL(TARGETS FeaturesPlugin DESTINATION ${SHAPER_INSTALL_PLUGIN_FILES})
180 INSTALL(FILES ${XML_RESOURCES} DESTINATION ${SHAPER_INSTALL_XML_RESOURCES})
181 INSTALL(DIRECTORY icons/ DESTINATION ${SHAPER_INSTALL_XML_RESOURCES}/icons/Features)
182 INSTALL(FILES ${TEXT_RESOURCES} DESTINATION ${SHAPER_INSTALL_XML_RESOURCES})
183
184 ADD_UNIT_TESTS(TestExtrusion.py
185                TestExtrusionOfCompound.py
186                TestExtrusionCut.py
187                TestExtrusionCut_BySize.py
188                TestExtrusionCut_ByPlanesAndOffsets.py
189                TestExtrusionCut_ByFaces.py
190                TestExtrusionCut_ThroughAll.py
191                TestExtrusionFuse.py
192                TestExtrusionFuse_BySize.py
193                TestExtrusionFuse_ByPlanesAndOffsets.py
194                TestExtrusionFuse_ThroughAll.py
195                TestExtrusion_ErrorMsg.py
196                TestExtrusion_ZeroOffsetError.py
197                TestExtrusion_ByFaces01.py
198                TestExtrusion_ByFaces02.py
199                TestExtrusion_ByFaces03.py
200                TestExtrusion_ByFaces04.py
201                TestExtrusion_ByFaces05.py
202                TestExtrusion_ByFaces06.py
203                TestExtrusion_ByFaces07.py
204                TestExtrusion_ByFaces08.py
205                TestExtrusion_ByFaces09.py
206                TestExtrusion_ByFaces10.py
207                TestExtrusion_ByFaces11.py
208                TestExtrusion_ByFaces12.py
209                TestExtrusion_ByFaces13.py
210                TestExtrusion_ByFaces14.py
211                TestExtrusion_ByFaces15.py
212                TestExtrusion_ByFaces16.py
213                TestExtrusion_ByFaces17.py
214                TestExtrusion_ByFaces18.py
215                TestExtrusion_ByFaces19.py
216                TestRevolution.py
217                TestRevolution_ByAngle.py
218                TestRevolutionOfPoint.py
219                TestRevolutionOfEdge.py
220                TestRevolutionOfCompound.py
221                TestRevolutionCut.py
222                TestRevolutionCut_ByAngle.py
223                TestRevolutionCut_ByPlanesAndOffsets.py
224                TestRevolutionCut_ThroughAll.py
225                TestRevolutionFuse.py
226                TestRevolutionFuse_ByAngle.py
227                TestRevolutionFuse_ByPlanesAndOffsets.py
228                TestRevolutionFuse_ThroughAll.py
229                TestCompositeFeaturesOnCompSolids.py
230                TestPartition.py
231                TestPartition_ErrorMsg.py
232                TestPlacement_Vertex_Vertex.py
233                TestPlacement_Edge_Vertex.py
234                TestPlacement_Edge_Edge.py
235                TestPlacement_Face_Vertex.py
236                TestPlacement_Face_Edge.py
237                TestPlacement_Face_Face.py
238                TestPlacement_Part_Part.py
239                TestPlacement_Complex.py
240                TestPlacement_ErrorMsg.py
241                TestPlacement_BodyShapesValidator.py
242                TestTranslation.py
243                TestTranslation_Part.py
244                TestRotation.py
245                TestRotation_ByAxis.py
246                TestRotation_ByPoints.py
247                TestRotation_ErrorMsg.py
248                TestMultiRotation_Part.py
249                TestMultiRotation_ErrorMsg.py
250                TestMultiTranslation_Part.py
251                TestMultiTranslation_ErrorMsg.py
252                TestSymmetry_Part.py
253                TestBoolean1.py
254                TestBoolean2.py
255                TestBoolean3.py
256                TestBooleanCompSolids.py
257                TestBooleanSmash.py
258                TestBooleanSplit.py
259                TestBooleanSplitWithPlane.py
260                TestBooleanSplit_ErrorMsg.py
261                TestMultiBoolean.py
262                TestSerialBoolean.py
263                TestBoolean_ErrorMsg.py
264                TestIntersection.py
265                TestIntersection_ErrorMsg.py
266                TestUnion.py
267                TestUnionFaces.py
268                TestUnion_ErrorMsg.py
269                TestRemoveSubShapes.py
270                TestRemoveSubShapes2.py
271                TestRemoveSubShapes3.py
272                TestRemoveSubShapes4.py
273                TestRemoveSubShapes5.py
274                TestRemoveSubShapes6.py
275                TestPipe.py
276                TestPipe_Edge.py
277                TestPipe_Wire.py
278                TestPipe_Compound.py
279                TestPipe_ErrorMsg.py
280                TestRecover.py
281                TestRecover_Compound.py
282                TestRecover_Compsolid1.py
283                TestRecover_Compsolid2.py
284                TestRecover1798.py
285                TestSplitEdgeVertex.py
286                TestSplitEdgeEdge.py
287                TestSplitEdgeEdgeIntersected.py
288                TestSplitEdgeWire.py
289                TestSplitEdgeFace.py
290                TestSplitEdgeShell.py
291                TestSplitEdgeSolid.py
292                TestSplitEdgeSolidIntersected.py
293                TestSplitWireVertex.py
294                TestSplitWireEdge.py
295                TestSplitWireWire.py
296                TestSplitWireFace.py
297                TestSplitWireShell.py
298                TestSplitWireSolid.py
299                TestSplitFaceVertex.py
300                TestSplitFaceEdge.py
301                TestSplitFaceEdgeInside.py
302                TestSplitFaceEdgePerpendicular.py
303                TestSplitFaceWire.py
304                TestSplitFaceFace.py
305                TestSplitFaceShell.py
306                TestSplitFaceSolid.py
307                TestSplitCompFaceSolid.py
308                TestSplitShellVertex.py
309                TestSplitShellEdge.py
310                TestSplitShellConstrPlane.py
311                TestSplitShellWire.py
312                TestSplitShellFace.py
313                TestSplitShellShell.py
314                TestSplitShellSolid.py
315                TestSplitSolid2ConstructionPlanes.py
316                TestSplitSolidEdge.py
317                TestSplitSolidFace.py
318                TestSplitSolidCompFace.py
319                TestSplitSolidShell.py
320                TestSplitSolidCompShell.py
321                TestSplitCompsolidPlane.py
322                TestPartition2Faces.py
323                TestPartition2Solids.py
324                TestPartition2Wires.py
325                TestPartitionBox4Planes.py
326                TestPartitionEdgeSolid.py
327                TestPartitionFace2Solid.py
328                TestPartitionFaceSolid.py
329                TestPartitionFaceWire.py
330                TestPartitionInclinedFaceSolid.py
331                TestPartitionWireFaceSolid.py
332                TestUnion4CurvedFaces.py
333                TestUnion4CurvedFaces_2.py
334                TestUnion4Faces.py
335                TestUnionOfUnion.py
336                TestMeasurementLength.py
337                TestMeasurementDistance.py
338                TestMeasurementRadius.py
339                TestMeasurementAngle.py
340                TestMeasurementAngle3Points.py
341                TestMeasurementPresentation.py
342                TestFusionFaces.py
343                TestFusionFaces2697.py 
344                Test1379.py
345                Test1922.py
346                Test1942.py
347                Test1915.py
348                Test2023.py
349                Test2046.py
350                Test2038.py
351                Test2172.py
352                Test2194.py
353                Test2197_1.py
354                Test2197_2.py
355                Test2197_3.py
356                Test2197_4.py
357                Test2215.py
358                Test2222.py
359                Test2233.py
360                Test2231.py
361                Test2240.py
362                Test2246.py
363                Test2248.py
364                Test2251.py
365                Test2255.py
366                Test2289.py
367                Test2304.py
368                Test2304_2.py
369                Test2375.py
370                Test2377.py
371                Test2394.py
372                Test2395.py
373                Test2419_1.py
374                Test2419_2.py
375                Test2419_3.py
376                Test2465.py
377                Test2495.py
378                Test2514.py
379                Test2520.py
380                TestBooleanCut_CompSolid_CompSolid.py
381                TestBooleanCut_CompSolidCompound_CompSolidCompound.py
382                TestBooleanCut_Edge_Edge.py
383                TestBooleanCut_Edge_Face.py
384                TestBooleanCut_EdgeCompound_EdgeCompound.py
385                TestBooleanCut_EdgeCompound_Solid.py
386                TestBooleanCut_Face_Face.py
387                TestBooleanCut_Face_Solid.py
388                TestBooleanCut_FaceCompound_FaceCompound.py
389                TestBooleanCut_Shell_Shell.py
390                TestBooleanCut_ShellCompound_ShellCompound.py
391                TestBooleanCut_Solid_Solid.py
392                TestBooleanCut_SolidCompound_SolidCompound.py
393                TestBooleanCut_Vertex_Vertex.py
394                TestBooleanCut_VertexCompound_Solid.py
395                TestBooleanCut_VertexCompound_VertexCompound.py
396                TestBooleanCut_Wire_Face.py
397                TestBooleanCut_Wire_Wire.py
398                TestBooleanCut_WireCompound_WireCompound.py
399                TestBooleanCut_Compound_Solid.py
400                TestBooleanCut_ErrorMsg.py
401                TestBooleanCut_SolidsHistory.py
402                TestBooleanSmash_Face_Face.py
403                TestBooleanSmash_SubSolid_Solid.py
404                TestBooleanSmash_CompSolid_Solid.py
405                TestBooleanSmash_ErrorMsg.py
406                TestBooleanSmash_SolidsHistory.py
407                TestBooleanFuse_SimpleMode.py
408                TestBooleanFuse_RemoveEdges.py
409                TestBooleanFuse_ErrorMsg.py
410                TestBooleanCommon_Vertex_Vertex.py
411                TestBooleanCommon_VertexCompound_VertexCompound.py
412                TestBooleanCommon_Edge_Edge.py
413                TestBooleanCommon_EdgeCompound_EdgeCompound.py
414                TestBooleanCommon_Wire_Wire.py
415                TestBooleanCommon_WireCompound_WireCompound.py
416                TestBooleanCommon_Face_Face.py
417                TestBooleanCommon_Face_Plane.py
418                TestBooleanCommon_FaceCompound_FaceCompound.py
419                TestBooleanCommon_Shell_Shell.py
420                TestBooleanCommon_ShellCompound_ShellCompound.py
421                TestBooleanCommon_Solid_Face.py
422                TestBooleanCommon_Solid_Shell.py
423                TestBooleanCommon_Solid_Solid.py
424                TestBooleanCommon_SolidCompound_Face.py
425                TestBooleanCommon_SolidCompound_Shell.py
426                TestBooleanCommon_SolidCompound_SolidCompound.py
427                TestBooleanCommon_SubCompound_Solid.py
428                TestBooleanCommon_SubSolid_Solid.py
429                TestBooleanCommon_CompSolid_Face.py
430                TestBooleanCommon_CompSolid_Shell.py
431                TestBooleanCommon_CompSolid_CompSolid.py
432                TestBooleanCommon_CompSolidCompound_Face.py
433                TestBooleanCommon_CompSolidCompound_Shell.py
434                TestBooleanCommon_CompSolidCompound_CompSolidCompound.py
435                TestBooleanCommon_ErrorMsg.py
436                TestBooleanCommon_SolidsHistory.py
437                Test2596.py
438                Test2592.py
439                Test2588.py
440                Test1467.py
441                TestPartitionSubCompsolidWithCompSolid1.py
442                TestPartitionSubCompsolidWithCompSolid2.py
443                TestPartitionSubCompsolidWithCompSolid3.py
444                TestPartitionSubCompsolidWithSolid1.py
445                TestPartitionSubCompsolidWithSolid2.py
446                TestPartitionSubCompsolidWithSolid3.py
447                TestPartitionSubCompsolidWithSolid4.py
448                TestPartitionSubCompsolidWithSolid5.py
449                TestPartitionSubCompsolidWithFace1.py
450                TestPartitionSubCompsolidWithFace2.py
451                TestPartitionSubCompsolidWithFace3.py
452                TestPartitionSubCompsolidWithFace4.py
453                TestPartitionSubCompsolidWithFace5.py
454                TestPartitionSubCompsolidWithPlane1.py
455                TestPartitionSubCompsolidWithPlane2.py
456                TestPartitionSubCompsolidWithPlane3.py
457                TestPartitionSubCompsolidWithPlane4.py
458                TestPartitionSubCompsolidWithPlane5.py
459                TestPartitionArgsUpdate.py
460                TestPartition_SolidsHistory.py
461                TestBooleanFuse_Vertex_Vertex.py
462                TestBooleanFuse_VertexCompound_VertexCompound.py
463                TestBooleanFuse_Edge_Edge.py
464                TestBooleanFuse_EdgeCompound_EdgeCompound.py
465                TestBooleanFuse_Wire_Wire.py
466                TestBooleanFuse_WireCompound_WireCompound.py
467                TestBooleanFuse_Face_Face.py
468                TestBooleanFuse_FaceCompound_FaceCompound.py
469                TestBooleanFuse_Shell_Shell.py
470                TestBooleanFuse_ShellCompound_ShellCompound.py
471                TestBooleanFuse_Solid_Solid.py
472                TestBooleanFuse_SolidCompound_SolidCompound.py
473                TestBooleanFuse_CompSolid_Face.py
474                TestBooleanFuse_CompSolid_CompSolid.py
475                TestBooleanFuse_CompSolidCompound_CompSolidCompound.py
476                TestBooleanFuse_SolidsHistory.py
477                TestFillet.py
478                TestFillet1.py
479                TestFillet_ErrorMsg.py
480                TestFillet_History.py
481                TestScale1.py
482                TestScale2.py
483                Test1816.py
484                Test1876.py
485                Test2225.py
486                Test2631.py
487                Test2636.py
488                Test2650.py
489                Test2681.py
490                Test2686.py
491                Test2689.py
492                Test2693.py
493                Test2698.py
494                Test2701.py
495                Test2724.py
496                Test2692.py
497                Test2617.py
498                Test2729.py
499                Test2738.py
500                Test2751.py
501                Test2826.py
502                Test2854.py
503                Test2878.py
504                Test2920.py
505                Test2971.py
506                Test3014.py
507                TestBooleanCommon_MultiLevelCompound_v0_1.py
508                TestBooleanCommon_MultiLevelCompound_v0_2.py
509                TestBooleanCommon_MultiLevelCompound_v20190506_1.py
510                TestBooleanCommon_MultiLevelCompound_v20190506_2.py
511                TestBooleanCut_MultiLevelCompound_v0_1.py
512                TestBooleanCut_MultiLevelCompound_v0_2.py
513                TestBooleanCut_MultiLevelCompound_v20190506_1.py
514                TestBooleanCut_MultiLevelCompound_v20190506_2.py
515                TestBooleanFuse_MultiLevelCompound_v0_1.py
516                TestBooleanFuse_MultiLevelCompound_v0_2.py
517                TestBooleanFuse_MultiLevelCompound_v0_3.py
518                TestBooleanFuse_MultiLevelCompound_v0_4.py
519                TestBooleanFuse_MultiLevelCompound_v20190506_1.py
520                TestBooleanFuse_MultiLevelCompound_v20190506_2.py
521                TestBooleanFuse_MultiLevelCompound_v20190506_3.py
522                TestBooleanFuse_MultiLevelCompound_v20190506_4.py
523                TestBooleanSmash_MultiLevelCompound_v0_1.py
524                TestBooleanSmash_MultiLevelCompound_v0_2.py
525                TestBooleanSmash_MultiLevelCompound_v20190506_1.py
526                TestBooleanSmash_MultiLevelCompound_v20190506_2.py
527                TestBooleanSplit_MultiLevelCompound_v0_1.py
528                TestBooleanSplit_MultiLevelCompound_v0_2.py
529                TestBooleanSplit_MultiLevelCompound_v20190506_1.py
530                TestBooleanSplit_MultiLevelCompound_v20190506_2.py
531                TestPartition_MultiLevelCompound_v0_1.py
532                TestPartition_MultiLevelCompound_v0_2.py
533                TestPartition_MultiLevelCompound_v0_3.py
534                TestPartition_MultiLevelCompound_v20190506_1.py
535                TestPartition_MultiLevelCompound_v20190506_2.py
536                TestPartition_MultiLevelCompound_v20190506_3.py
537                TestUnion_MultiLevelCompound_v0.py
538                TestUnion_MultiLevelCompound_v20190506.py
539                TestUnionFaces_v20190506.py
540                TestRemoveResultsBody.py
541                TestRemoveResultsConstruction.py
542                TestRemoveResultsPart.py
543                Test17000.py
544                Test17261.py
545                Test17281.py
546                TestChamfer.py
547                Test3033.py
548                Test3076.py
549                Test17909.py
550                TestCopyFeature.py
551                TestCopyFeatureMoveGroupOfFeature.py
552                TestCopyMoveResult.py
553                TestCopyMoveSubShapes.py
554                TestCopyNames.py
555                TestCopySubShapes.py
556                TestCopyWholeFeature.py
557                TestImportResult.py
558 )